Pengujian regresi
Ini semua tentang pengujian regresi .
Bayangkan pengembang berikutnya melihat metode Anda dan memperhatikan bahwa Anda menggunakan angka ajaib. Dia diberi tahu bahwa angka ajaib itu jahat, jadi dia menciptakan dua konstanta, satu untuk nomor dua, satu lagi untuk nomor tiga — tidak ada yang salah dalam melakukan perubahan ini; itu tidak seperti dia memodifikasi implementasi Anda yang sudah benar.
Karena terganggu, ia membalikkan dua konstanta.
Dia melakukan kode, dan semuanya tampak berfungsi dengan baik, karena tidak ada pengujian regresi yang berjalan setelah setiap komit.
Suatu hari (bisa berminggu-minggu kemudian), sesuatu pecah di tempat lain. Dan di tempat lain, maksud saya di lokasi yang sepenuhnya berlawanan dari basis kode, yang tampaknya tidak ada hubungannya dengan polynominal
fungsi. Jam debugging menyakitkan mengarah ke pelakunya. Selama ini, aplikasi terus gagal dalam produksi, menyebabkan banyak masalah kepada pelanggan Anda.
Menjaga tes asli yang Anda tulis dapat mencegah rasa sakit seperti itu. Pengembang yang terganggu akan melakukan kode, dan segera melihat bahwa dia memecahkan sesuatu; kode seperti itu bahkan tidak akan mencapai produksi. Tes unit juga akan sangat tepat tentang lokasi kesalahan . Memecahkannya tidak akan sulit.
Efek samping ...
Sebenarnya, sebagian besar refactoring sangat didasarkan pada pengujian regresi. Buat perubahan kecil. Uji. Jika lewat, semuanya baik-baik saja.
Efek sampingnya adalah jika Anda tidak memiliki tes, maka praktis setiap refactoring menjadi risiko besar melanggar kode. Mengingat ada banyak kasus, sudah sulit untuk menjelaskan kepada manajemen bahwa refactoring harus dilakukan, akan lebih sulit untuk melakukannya setelah upaya refactoring Anda sebelumnya memperkenalkan banyak bug.
Dengan memiliki serangkaian tes lengkap, Anda mendorong refactoring, dan kode yang lebih baik dan lebih bersih. Bebas risiko, sangat menggoda untuk melakukan refactor lebih banyak, secara teratur.
Perubahan persyaratan
Aspek penting lainnya adalah bahwa persyaratan berubah. Anda mungkin diminta untuk menangani angka yang rumit , dan tiba-tiba, Anda perlu mencari log kontrol versi untuk menemukan tes sebelumnya, mengembalikannya, dan mulai menambahkan tes baru.
Kenapa semua ini merepotkan? Mengapa menghapus tes untuk menambahkannya nanti? Anda bisa menyimpannya di tempat pertama.