Selama bertahun-tahun saya berada di bawah kesalahpahaman bahwa saya tidak punya cukup waktu untuk menulis unit test untuk kode saya. Ketika saya menulis tes, itu adalah hal-hal berat yang membuat saya berpikir bahwa saya seharusnya menulis unit test ketika saya tahu itu diperlukan.
Kemudian saya mulai menggunakan Test Driven Development dan saya menemukan itu sebagai wahyu yang lengkap. Saya sekarang sangat yakin bahwa saya tidak punya waktu untuk tidak menulis tes unit .
Dalam pengalaman saya, dengan mengembangkan dengan pengujian dalam pikiran Anda berakhir dengan antarmuka yang lebih bersih, kelas & modul yang lebih fokus dan umumnya lebih SOLID , kode diuji.
Setiap kali saya bekerja dengan kode lama yang tidak memiliki tes unit dan harus menguji sesuatu secara manual, saya terus berpikir "ini akan jauh lebih cepat jika kode ini sudah memiliki unit test". Setiap kali saya harus mencoba dan menambahkan fungsionalitas unit test ke kode dengan kopling tinggi, saya terus berpikir "ini akan jauh lebih mudah jika telah ditulis dengan cara de-coupled".
Membandingkan dan membedakan dua stasiun percobaan yang saya dukung. Satu telah ada untuk sementara waktu dan memiliki banyak kode warisan, sedangkan yang lainnya relatif baru.
Saat menambahkan fungsionalitas ke lab lama, sering kali turun ke lab dan menghabiskan waktu berjam-jam bekerja melalui implikasi fungsionalitas yang mereka butuhkan dan bagaimana saya dapat menambahkan fungsionalitas itu tanpa mempengaruhi fungsi lainnya. Kode sama sekali tidak diatur untuk memungkinkan pengujian off-line, jadi hampir semuanya harus dikembangkan on-line. Jika saya mencoba mengembangkan secara off-line maka saya akan berakhir dengan lebih banyak objek tiruan daripada yang masuk akal.
Di lab yang lebih baru, saya biasanya dapat menambahkan fungsionalitas dengan mengembangkannya secara off-line di meja saya, mengejek hanya hal-hal yang segera diperlukan, dan kemudian hanya menghabiskan waktu singkat di lab, menambal masalah yang tersisa tidak diambil. -baris.
Untuk kejelasan, dan karena @ naught101 bertanya ...
Saya cenderung bekerja pada kontrol eksperimental dan perangkat lunak akuisisi data, dengan beberapa analisis data ad hoc, sehingga kombinasi TDD dengan kontrol revisi membantu untuk mendokumentasikan perubahan dalam perangkat keras eksperimen yang mendasarinya dan juga perubahan dalam persyaratan pengumpulan data dari waktu ke waktu.
Bahkan dalam situasi mengembangkan kode eksplorasi, saya dapat melihat manfaat yang signifikan dari asumsi yang dikodifikasikan, bersama dengan kemampuan untuk melihat bagaimana asumsi-asumsi tersebut berkembang dari waktu ke waktu.