Sepertinya menulis tes adalah pekerjaan ekstra, memberi orang kruk ketika mereka menulis kode asli, dan mungkin tidak terlalu efektif.
Pengujian unit memiliki nilai sebagai penopang. Ini mendukung upaya pengembangan Anda, memungkinkan Anda untuk mengubah implementasi Anda tanpa takut bahwa aplikasi Anda akan berhenti berfungsi sebagaimana diperlukan. Tes unit juga lebih dari sekadar penopang, karena memberikan Anda alat yang dapat digunakan untuk memvalidasi bahwa implementasi Anda sesuai dengan persyaratan.
Semua pengujian, apakah tes unit, tes penerimaan, tes integrasi, dan sebagainya, hanya seefektif orang yang menggunakannya. Jika Anda mendekati pekerjaan Anda dengan sembrono, tes Anda akan ceroboh, dan implementasi Anda akan mengalami masalah. Jadi mengapa repot-repot? Anda repot-repot menguji karena Anda perlu membuktikan kepada diri sendiri dan pelanggan bahwa perangkat lunak Anda berfungsi, dan tidak memiliki masalah yang dapat mencegah perangkat lunak tersebut digunakan. Ya, pengujian jelas merupakan pekerjaan ekstra, tetapi bagaimana Anda melakukan pengujian akan menentukan berapa banyak upaya yang Anda perlukan untuk memperbaiki bug setelah rilis, dan berapa banyak upaya yang diperlukan kode Anda untuk diubah dan dirawat.
Saya mengerti bagaimana tes unit bekerja dan bagaimana menulisnya, tetapi adakah yang bisa mengatakan bahwa itu adalah ide yang bagus dan sepadan dengan usaha dan waktu?
TDD, dan benar-benar metode apa pun yang mengharuskan Anda untuk menulis tes sebelum kode Anda mengambil pendekatan yang Anda lakukan di awal upaya sebagai uang muka pada hutang teknis di masa depan. Ketika Anda mengerjakan proyek ini, apa pun yang terlewatkan, atau tidak diimplementasikan dengan baik akan menimbulkan lebih banyak utang teknis dalam bentuk meningkatnya kesulitan pemeliharaan, yang secara langsung memengaruhi biaya masa depan dan persyaratan sumber daya. Pengujian di muka memastikan bahwa Anda tidak hanya telah berupaya untuk mengatasi utang teknis di masa depan, tetapi juga memastikan bahwa Anda menyandikan persyaratan Anda sedemikian rupa sehingga dapat diverifikasi hanya dengan menjalankan kode Anda. Tes pertama juga memberi Anda kesempatan untuk memvalidasi pemahaman Anda tentang domain masalah sebelum Anda berkomitmen untuk memecahkan masalah dalam kode, dan itu memvalidasi upaya implementasi Anda.
Ini benar-benar berujung pada upaya memaksimalkan nilai bisnis kode Anda. Kode yang sebagian besar belum diuji dan sulit dipelihara umumnya murah dan cepat dibuat, dan sangat mahal untuk dipelihara selama masa pakai produk setelah dirilis. Kode yang telah diuji secara menyeluruh pada tingkat unit umumnya lebih mahal untuk dibuat, tetapi biaya relatif sedikit untuk dipertahankan selama masa pakai produk setelah dirilis.
Juga, apakah ada sesuatu yang membuat TDD sangat baik untuk SCRUM?
TDD tidak secara khusus baik untuk metodologi tertentu. Ini hanyalah alat. Suatu praktik yang dapat Anda integrasikan ke dalam proses pengembangan Anda untuk membantu Anda mencapai hasil spesifik Anda. Jadi untuk menjawab pertanyaan Anda, TDD gratis untuk metode Anda, apakah itu SCRUM, atau pendekatan lainnya.