Mari kita dapatkan prioritas langsung ...
Dalam peran Anda sebagai pelanggan, perhatian utama Anda bukanlah pengujian unit
Jika Anda menggunakan pemasok yang menghasilkan perangkat lunak untuk Anda, maka Anda benar-benar tidak perlu khawatir jika mereka menggunakan satu metodologi atau lainnya. Taruhan Anda adalah untuk mendapatkan semacam solusi yang akan membantu mencapai tujuan Anda. Satu-satunya hal yang harus Anda perhatikan adalah apakah solusi itu dapat diterima atau tidak. Itu sebabnya kami memiliki pengujian penerimaan karena terletak pada tanggung jawab Anda untuk memastikan bahwa Anda mendapatkan apa yang Anda inginkan. Pada saat penting penerimaan pelanggan, uang akan ditransaksikan dari kantong perusahaan Anda ke dalam kantong pemasok.
Anda dapat meminta pengujian unit sebagai persyaratan yang dapat dikirim tetapi ada beberapa masalah bawaan pada tes tersebut, yang paling parah adalah tidak ada cara pasti sebelumnya untuk menentukan metrik:
- Berapa jumlah unit test yang dapat diterima?
Haruskah ada 10 tes? Bagaimana dengan 100 tes? Bagaimana dengan 1000 tes? Sebenarnya, pada awalnya cukup sulit untuk menentukan berapa banyak tes yang Anda perlukan. Jumlah sebenarnya benar-benar tidak dapat ditentukan ... seperti masalah penghentian ... tapi kami tidak menyelesaikan masalah itu.
Anda hanya ingin perangkat lunak yang memiliki unit-test sehingga Anda dapat melanjutkan pengembangan. Unit-test tidak memberi tahu apa yang telah Anda rusak, tetapi mereka sangat cocok untuk memberi tahu Anda ketika kode memiliki bug regresi.
- Apa tingkat cakupan kode yang dapat diterima?
"100%, tentu saja!" kamu akan berpikir. Sayangnya metrik itu menyesatkan; bahkan jika Anda memiliki cakupan kode 100%, apakah Anda benar-benar yakin semuanya berjalan seperti yang diharapkan? Dimungkinkan untuk memiliki cakupan 100% tetapi tidak dilakukan.
Apa yang benar-benar perlu Anda lakukan adalah pengujian eksplorasi, yaitu menemukan seseorang yang benar-benar pandai memecahkan barang-barang dan membiarkan mereka melakukan pengujian. Untuk menemukan bug yang tidak pernah dipikirkan oleh pengembang.
Juga 100% terkadang tidak dapat dicapai dengan tes unit murni jika Anda memiliki beberapa peretasan kinerja yang diperlukan dan menggunakan pola desain yang sulit untuk diuji (cari "singleton" dan "tdd" di mesin pencari favorit Anda dan Anda akan menemukan beberapa contoh).
Anda ingin perangkat lunak yang dikirim berfungsi dan dokumen spesifikasi adalah satu-satunya garansi yang Anda inginkan .
Anda akan membutuhkan tingkat pengujian yang lebih tinggi
Dokumen spesifikasi Anda harus diverifikasi entah bagaimana. Setiap poin harus dilalui dengan pemasok Anda yang memiliki tujuan dan kriteria penerimaan yang jelas. Organisasi QA yang berfungsi dengan baik (atau penguji yang luar biasa jika Anda memiliki anggaran dan cakupan terbatas) akan memberikan kasus uji untuk memeriksa kriteria penerimaan ini. Anda juga membutuhkan seseorang untuk memverifikasi kriteria penerimaan tersebut.
Ada beberapa cara untuk memverifikasi tujuan Anda, dan jika seseorang memberi tahu saya bahwa Anda tidak dapat menetapkan sasaran kualitas, kinerja, dan efisiensi yang waras, saya akan memahaminya dengan buku-buku besar dan berat tentang eksplorasi, kinerja, dan pengujian kegunaan masing-masing. Mungkin mudah untuk berlebihan dengan tujuan, tetapi pengetahuan dan komunikasi akan membantu Anda menetapkan tujuan yang realistis.
Saya bukan pengacara tetapi sebagian besar kontrak proyek (yang pada dasarnya adalah ibu dari semua spesifikasi untuk proyek) yang saya baca biasanya memiliki kriteria rasio cacat yang menetapkan berapa banyak bug yang dianggap dapat diterima. Bug biasanya ditentukan melalui tingkat keparahan, bug yang berhenti muncul yang ditemukan oleh QA memiliki toleransi yang rendah sedangkan cacat minor memiliki toleransi yang tinggi. Dalam proyek nyata sulit untuk menuntut bahwa perangkat lunak harus memiliki 0 cacat. Tenggat waktu biasanya menghentikan praktik itu. Pada situasi inilah Anda harus mulai menawar ruang lingkup.
Sebagian besar perangkat lunak yang disediakan yang saya lihat biasanya tidak disertai dengan tes unit. Anda dapat berargumen bahwa pemasok harus cukup profesional untuk memberikan ini, namun alasan utama Anda ingin pengujian unit dikirimkan kepada Anda adalah untuk memastikan bahwa Anda tidak mendapatkan bug regresi dan juga memungkinkan refactoring. Dalam kehidupan nyata dengan proyek-proyek dengan tenggat waktu yang ketat, baik pemasok dan pelanggan akan menurunkan ruang lingkup dan tes unit biasanya akan keluar jendela dan dihapus dari daftar hasil yang diperlukan.
Agak menyedihkan bahwa perangkat lunak open source profil tinggi datang diberikan dengan unit-test tetapi pengembang perangkat lunak profesional tidak bisa, kan?
Jadi kapan saya, sebagai pelanggan, peduli dengan pengujian unit?
Saya berpendapat bahwa satu - satunya waktu Anda benar - benar peduli tentang pengujian unit adalah jika perangkat lunak yang dapat dikirim adalah komponen mandiri yang tidak dieksekusi sebagai program yang berdiri sendiri, di mana pengujian paling kasar yang dapat Anda lakukan adalah uji unit . Perpustakaan kelas akan menjadi salah satu jenis produk yang dapat dikirimkan bersama dengan tes unit.