Saya tahu beberapa orang adalah pendukung besar pengembangan yang digerakkan oleh tes. Saya telah menggunakan unit test di masa lalu, tetapi hanya untuk menguji operasi yang dapat diuji dengan mudah atau yang saya percaya akan sangat mungkin benar. Cakupan kode lengkap atau hampir selesai terdengar seperti itu akan memakan banyak waktu.
- Untuk proyek apa Anda menggunakan pengembangan berbasis tes? Apakah Anda hanya menggunakannya untuk proyek di atas ukuran tertentu?
- Haruskah saya menggunakannya atau tidak? Yakinkan aku!
programming-practices
unit-testing
tdd
Casebash
sumber
sumber
Jawaban:
Ok, beberapa keuntungan untuk TDD:
Anda diminta diyakinkan, jadi ini adalah manfaatnya. Lihat pertanyaan ini untuk tampilan yang lebih seimbang.
sumber
Robert C. Martin awalnya membuat poin-poin ini - saya dapat mendukungnya dari pengalaman saya sendiri:
Saya cukup banyak melakukan TDD sepanjang waktu, apakah saya sedang mengerjakan produksi atau bermain kode; Saya merasa sulit untuk kode cara lain hari ini.
sumber
(Penafian: Saya hampir tidak melakukan hal-hal UI, jadi saya tidak bisa membahas TDD untuk UI.)
Saya menggunakan TDD di hampir semua yang saya lakukan, dari aplikasi sepele hingga seluruh tumpukan SIP.
Saya tidak menggunakan TDD di situs web warisan PHP yang saya ambil. Saya merasa sakit karena tidak menjalani tes. Dan saya merasa sangat mengganggu secara tidak sengaja merusak bagian-bagian situs karena saya tidak memiliki suite uji regresi yang mengatakan bahwa saya telah merusak sesuatu. Klien tidak memiliki anggaran bagi saya untuk (a) menulis tes untuk basis kode dan (b) dalam proses membuat kode diuji di tempat pertama, jadi saya hanya tahan dengan itu.
sumber
sumber
Apa? Tidak ada jawaban negatif !?
Penafian: Saya bukan anti-unit-testing. Ketika orang mengatakan TDD, saya berasumsi itu berarti versi penyakit yang terdengar di mana mereka menulis tes sebelum mereka menulis kode untuk 80-100% dari semua kode yang mereka tulis.
Saya Akan Berdebat:
Itu enabler. Jika menangkap masalah regresi adalah masalah besar bagi Anda sehingga TDD otomatis penuh sejak awal tampaknya bermanfaat, menulis tes untuk setiap bagian terakhir dari kode yang Anda tulis, sebenarnya dapat membantu Anda mengabaikan masalah sebenarnya.
Ini membantu orang mengabaikan masalah sebenarnya. Ketika memperbaiki satu bug berubah menjadi permainan whack-a-mole di mana dua pop-up lagi, arsitekturnya meledak. Fokus. Fokus pada masalah sebenarnya. Melihat tahi lalat sebelum mereka harus dihantam rapi tetapi Anda tidak harus ada di tempat pertama.
Itu memakan banyak waktu. Saya menemukan bug sesekali. Saya tidak menekan begitu banyak sehingga sepertinya layak untuk mengawali setiap hal baru yang saya tulis dengan tes untuk itu. Menangkap masalah yang kemungkinan akan terjadi. Tangani kesalahan sedemikian rupa sehingga mudah didiagnosis. Mengesahkan. Tes pada titik-titik utama tumpang tindih / bottleneck. Tetapi untuk menangis dengan keras jangan menguji setiap pengambil dan penyetel terakhir dalam sesuatu yang mungkin seharusnya tidak memiliki yang pertama.
Fokus Desain: Sama sekali tidak mungkin bahkan pengembang yang baik akan menulis kode terbaik yang mereka bisa ketika mereka juga berfokus pada tes. Jika sepertinya satu-satunya cara Anda dapat memiliki desain yang layak, saya sarankan melihat di atas tentang "fokus pada masalah nyata."
Gagal Desain Makro: Basis kode pada pekerjaan saya saat ini penuh dengan antarmuka yang tidak pernah digunakan lebih dari satu kali dan pelanggaran besar-besaran pada prinsip KERING dasar yang akhirnya saya baru mengerti ketika saya menyadari orang menulis untuk kerangka kerja pengujian dan pengujian di umum. Pengujian seharusnya tidak mengarah pada arsitektur bodoh. Tidak juga, tidak ada yang lebih skalabel atau layak perusahaan untuk menyalin dan menempel 20 file dan kemudian hanya membuat perubahan signifikan pada keduanya. Idenya adalah untuk memisahkan masalah, bukan membaginya di tengah. Cruft dan pointless abstraksi akan dikenakan biaya lebih dari tidak memiliki jangkauan 95%.
Ini sangat populer dan banyak orang benar-benar menyukainya. Jika itu bukan alasan yang cukup untuk setidaknya menebak-nebak dan / atau memeriksa teknologi apa pun sebelum adopsi, pelajari beberapa paranoia.
sumber