Ketika saya harus mengimplementasikan fitur baru atau memperbaiki bug, saya biasanya mencoba untuk menciptakan kembali situasi dengan tes. Saya kadang-kadang menghabiskan sekitar 3 jam datang dengan perlengkapan dan menulis tes. Implementasi fitur aktual atau perbaikan bug membutuhkan waktu kurang dari 1 jam.
Apakah ada orang lain di luar sana menghabiskan setidaknya 3 kali lebih lama untuk menulis tes dibandingkan dengan benar-benar menerapkan fitur atau memperbaiki bug? Berapa rasio waktu yang digunakan untuk menulis tes dan menulis kode?
unit-testing
Thierry Lam
sumber
sumber
Jawaban:
Ini bervariasi pada kompleksitas bug atau fitur. Saya ingat satu proyek yang pernah memiliki estimasi tiem pengembangan 1,5 minggu ... dan estimasi pengujian 3 bulan. Perubahan kode itu kecil, beberapa baris di sana-sini tetapi itu berdampak pada sejumlah komponen sistem asuransi dalam beberapa cara, jadi harus diuji dengan sangat teliti. Lain waktu ada bug yang melibatkan tanda kurung di tempat yang salah. Butuh waktu 2 jam untuk menemukannya, 2 detik untuk memperbaikinya, tetapi sekitar satu minggu untuk menguji puluhan skenario yang mungkin telah dipengaruhi oleh perubahan logika.
Secara umum, saya tidak khawatir tentang rasio waktu yang dihabiskan pengkodean untuk pengujian yang dihabiskan karena tidak ada cara untuk menjadi akurat. Saya menemukan bahwa dalam beberapa proyek, rasio relatif proyek muncul yang biasanya standar (untuk proyek), tetapi bahkan kemudian itu dapat berubah nanti.
Habiskan waktu sebanyak yang diperlukan untuk mengatakan dengan keyakinan bahwa kode berfungsi dengan baik.
sumber
Bagaimana kalau Anda menghabiskan cukup waktu menulis tes sampai Anda telah menunjukkan bahwa fitur berfungsi sebagaimana dimaksud, atau bug telah diperbaiki dengan benar.
Setiap situasi akan berbeda; tidak mungkin ada semacam rasio. Beberapa tes akan mengambil sepersepuluh waktu sebagai implementasi, yang lain akan memakan waktu ratusan kali lebih banyak.
sumber
Saya pernah melakukan survery setelah memperkenalkan unit test dalam suatu proyek. Hasilnya: waktu yang dihabiskan untuk menulis tes adalah sekitar 40% lagi sebanyak waktu yang dihabiskan untuk mengimplementasikan. Tapi kami tidak bertujuan untuk liputan penuh di sana, dan itu adalah proyek yang mapan dengan struktur dan konvensi yang kuat.
sumber
Saya akan mengatakan pengkodean waktu vs tes unit penulisan waktu harus kira-kira sama. Mungkin sedikit lebih sering. Lihatlah artikel ini di SO Rasio waktu yang dihabiskan untuk pengkodean versus pengujian unit
sumber
Apakah Anda menghitung dengan benar? Untuk melakukan penghitungan yang akurat tentang berapa banyak waktu yang Anda habiskan untuk tes, Anda harus menulis kode tanpa tes.
Jika Anda benar-benar membutuhkan waktu tiga jam untuk menulis tes dan satu untuk menulis kode agar lulus, Anda mungkin membutuhkan waktu 5+ jam untuk memperbaiki bug yang sama tanpa menulis tes.
Ya, saya sangat sering menghabiskan lebih banyak waktu pada tes daripada kode perbaikan yang sebenarnya.
sumber