Haruskah saya menguji unit

8

Sebagian besar logika untuk layanan web saya melibatkan berbicara dengan layanan web pemasok kami (memeriksa ketersediaan, memesan dll.) Mereka tidak memiliki lingkungan pengujian dan sebagian besar panggilan tidak dapat dijalankan secara sewenang-wenang (misalnya gencatan akan dijalankan sekali dan sebenarnya akan menghentikan layanan).

Apakah layak untuk menjalankan unit test di lingkungan ini? Saya dapat mensimulasikan respons yang khas tetapi saya khawatir bahwa respons pemasok hardcoding akan merusak titik pengujian unit.

Tom Squires
sumber

Jawaban:

30

Tidak, tidak akan. Titik pengujian unit adalah tepatnya untuk menguji kode Anda secara terpisah , tidak tergantung pada dunia luar.

Menguji seluruh sistem Anda berinteraksi dengan pihak eksternal seperti layanan web, dll. Adalah integrasi / pengujian sistem . Ini juga diperlukan di sebagian besar untuk semua proyek dunia nyata, tetapi ini adalah level yang berbeda dari tes unit. Sebenarnya kedengarannya seperti dalam situasi Anda, karena Anda mengalami kesulitan dalam pengujian integrasi, Anda perlu pengujian unit lebih dari biasanya .

Sebagai tujuan jangka panjang, Anda dapat mempertimbangkan mendidik dan / atau mengganggu pemasok yang bersangkutan untuk membuat lingkungan pengujian bagi diri mereka sendiri dan klien mereka. Anda mungkin perlu meminta dukungan manajemen Anda agar ini berhasil, jadi bersiaplah dengan fakta dan angka keras untuk meyakinkan mereka tentang nilai bisnis dari lingkungan pengujian.

Péter Török
sumber
12
+1: "Anda membutuhkan tes unit lebih dari biasanya". Dan Anda perlu secara akurat mengejek permintaan / respons pemasok, batas waktu, kesalahan, kredensial buruk, dan semua hal kecil lainnya yang menyebabkan "masalah" dalam aplikasi seperti ini.
S.Lott
1

Pengujian unit juga akan memberi Anda spesifikasi perilaku yang Anda harapkan dari pemasok Anda yang tidak ambigu. Ini mungkin akan membuat berkomunikasi dengan mereka menjadi lebih mudah.

Jika ada beberapa masalah dalam interaksi antara Anda dan mereka, Anda dapat memberi mereka tes unit Anda untuk secara jelas menyatakan perilaku apa yang diharapkan oleh kode Anda. Jika kode mereka tidak berlaku seperti halnya pengujian unit Anda, perbedaannya biasanya mudah dikenali.

Josh Peterson
sumber
Tes semacam itu memang berguna, tetapi terminologi yang banyak digunakan untuk ini adalah tes sistem / penerimaan daripada tes unit.
Péter Török
@Josh Peterson Saya pernah mendapat keluhan dari "pengembang" mereka karena saya baru saja mengirim mereka xml daripada menjelaskan konten xml. Saya pikir unit test tidak akan membuat saya jauh :)
Tom Squires
0

ROI

Ini benar-benar pertanyaan Pengembalian Investasi. Apakah Anda merasa bahwa berinvestasi dalam unit test bernilai apa yang akan Anda dapatkan kembali. Yakni, kode Anda diuji secara terpisah . Serta semua manfaat lain dari pengujian unit.

Anda dapat membandingkan ini dengan mengatakan pendekatan pengujian penerimaan otomatis di mana Anda akan mendapatkan akun uji dari pemasok Anda yang sebenarnya menguji sistem terintegrasi dengan tes. Apakah biaya melakukan ATDD sepadan dengan apa yang Anda dapatkan kembali. Yakni, pengujian sistem secara keseluruhan.

Terserah Anda untuk melakukan analisis dan angka jika Anda harus melakukan pengujian unit, pengujian penerimaan otomatis, keduanya, tidak ada, atau sesuatu yang lain.

dietbuddha
sumber