Tidak ada proses pengembangan yang digerakkan oleh tes selama pengembangan karena tenggat waktu yang sangat ketat
Pernyataan ini sangat memprihatinkan. Bukan karena itu berarti Anda berkembang tanpa TDD atau karena Anda tidak menguji semuanya. Ini mengkhawatirkan, karena itu menunjukkan Anda berpikir TDD akan memperlambat Anda dan membuat Anda melewatkan tenggat waktu.
Selama Anda melihatnya dengan cara ini Anda tidak siap untuk TDD. TDD bukanlah sesuatu yang bisa Anda lakukan secara bertahap. Anda tahu cara melakukannya atau tidak. Jika Anda mencoba melakukannya di tengah jalan, Anda akan berhasil dan diri Anda terlihat buruk.
TDD adalah sesuatu yang harus Anda praktikkan di rumah terlebih dahulu. Belajarlah untuk melakukannya, karena ini membantu Anda membuat kode sekarang . Bukan karena seseorang menyuruhmu melakukannya. Bukan karena itu akan membantu ketika Anda melakukan perubahan nanti. Ketika itu menjadi sesuatu yang Anda lakukan karena Anda sedang terburu-buru maka Anda siap melakukannya secara profesional.
TDD adalah sesuatu yang dapat Anda lakukan di toko mana pun . Anda bahkan tidak perlu menyerahkan kode tes Anda. Anda dapat menyimpannya sendiri jika yang lain meremehkan tes. Ketika Anda melakukannya dengan benar, tes mempercepat pengembangan Anda, bahkan jika tidak ada orang lain yang menjalankannya.
Di sisi lain jika orang lain menyukai dan menjalankan tes Anda, Anda harus tetap ingat bahwa bahkan di toko TDD itu bukan tugas Anda untuk memeriksa tes. Ini untuk membuat kode produksi yang terbukti bekerja. Jika kebetulan bisa diuji, rapi.
Jika Anda berpikir manajemen harus percaya pada TDD atau bahwa sesama pembuat kode Anda harus mendukung tes Anda, maka Anda mengabaikan hal terbaik yang dilakukan TDD untuk Anda. Dengan cepat menunjukkan kepada Anda perbedaan antara apa yang Anda pikir kode Anda lakukan dan apa yang sebenarnya dilakukannya.
Jika Anda tidak dapat melihat bagaimana itu sendiri dapat membantu Anda memenuhi tenggat waktu lebih cepat maka Anda tidak siap untuk TDD di tempat kerja. Anda perlu berlatih di rumah.
Yang mengatakan, itu bagus ketika tim dapat menggunakan tes Anda untuk membantu mereka membaca kode produksi Anda dan ketika manajemen akan membeli alat TDD baru yang rumit.
Apakah ide yang baik untuk menulis semua kasus uji yang mungkin setelah mengubah tim menjadi TDD?
Terlepas dari apa yang dilakukan tim, tidak selalu merupakan ide yang baik untuk menulis semua kasus uji yang mungkin. Tulis kasus uji yang paling berguna. Cakupan kode 100% dikenakan biaya. Jangan abaikan hukum pengembalian yang semakin berkurang hanya karena menghakimi itu sulit.
Hemat energi pengujian Anda untuk logika bisnis yang menarik. Hal-hal yang membuat keputusan dan menegakkan kebijakan. Uji coba itu. Membosankan jelas kode lem struktural yang mudah dibaca yang hanya kabel barang bersama-sama tidak perlu pengujian hampir sama buruknya.
(1) Apakah masih baik-baik saja atau ide yang bagus untuk menghentikan sebagian besar pengembangan dan mulai menulis seluruh kasus uji yang mungkin dari awal, meskipun semuanya bekerja dengan baik OKE (belum!)? Atau
Ini adalah pemikiran "mari kita lakukan penulisan ulang lengkap". Ini menghancurkan pengetahuan yang sulit dimenangkan. Jangan meminta manajemen waktu untuk menulis tes. Cukup tulis tes. Setelah Anda tahu apa yang Anda lakukan, tes tidak akan memperlambat Anda.
(2) lebih baik menunggu sesuatu yang buruk terjadi dan kemudian selama perbaikan tulis unit test baru, atau
(3) bahkan melupakan kode sebelumnya dan hanya menulis unit test untuk kode baru saja dan menunda semuanya ke refactor besar berikutnya.
Saya akan menjawab 2 dan 3 dengan cara yang sama. Ketika Anda mengubah kode, untuk alasan apa pun, akan sangat bagus jika Anda bisa mengikuti tes. Jika kode ini lawas, saat ini tidak dapat menerima tes. Yang berarti sulit untuk mengujinya sebelum mengubahnya. Nah, karena Anda tetap mengubahnya, Anda dapat mengubahnya menjadi sesuatu yang dapat diuji dan mengujinya.
Itu opsi nuklir. Berisiko. Anda membuat perubahan tanpa tes. Ada beberapa trik kreatif untuk menguji kode lama sebelum Anda mengubahnya. Anda mencari apa yang disebut jahitan yang memungkinkan Anda mengubah perilaku kode Anda tanpa mengubah kode. Anda mengubah file konfigurasi, membuat file, apa pun yang diperlukan.
Michael Feathers memberi kami sebuah buku tentang ini: Bekerja Efektif dengan Legacy Code . Coba baca, dan Anda akan melihat bahwa Anda tidak perlu membakar semua yang lama untuk membuat sesuatu yang baru.