Berapa lama biasanya kita menghabiskan tes unit menulis untuk fitur baru atau perbaikan bug?

9

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?

Thierry Lam
sumber
2
Pikirkan seperti ini: Apakah memperbaiki bug akan memakan waktu kurang dari satu jam jika Anda tidak memiliki tes untuk mengonfirmasi ada, apalagi diperbaiki?
Michael K
2
Jawaban untuk judul pertanyaan: Selama dibutuhkan.
Marcelo
3
Saya pikir kepatuhan terhadap prinsip-prinsip TDD terlepas dari biaya atau nilai bisnis selalu merupakan respons yang tepat.
Jeremy
Bagaimana Anda menangani kasus di mana manajer Anda ingin agar Anda memperbaiki langsung ASAP dan tidak bisa menunggu satu hari ekstra untuk sepenuhnya menguji implementasi?
Thierry Lam
2
Biasanya saya menjelaskan biaya tidak melakukan tes. Yaitu, saya bisa mengirimkan perbaikannya sekarang, tetapi jika kita tidak menulis tesnya, kita harus melakukan semuanya lagi nanti. Beberapa kali mereka tidak masalah dengan biaya masa depan itu, tetapi biasanya kami menulis tes.
Christopher Bibbs

Jawaban:

12

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.

FrustratedWithFormsDesigner
sumber
6

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.

edA-qa mort-ora-y
sumber
Inilah jawaban sebenarnya.
DJClayworth
4

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.

Michael Borgwardt
sumber
0

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.

Edward Strange
sumber