Salah satu dari beberapa hal yang disetujui sebagian besar pengembang perangkat lunak adalah Anda tidak harus bergantung pada kode untuk bekerja dengan benar kecuali Anda mengujinya. Jika Anda tidak mengujinya, mungkin ada bug tersembunyi yang hanya akan menyebabkan Anda bekerja lebih keras.
Saya mengerti bagaimana menguji kode normal saya, tetapi bagaimana saya harus menguji kode pengujian saya untuk memastikannya dapat secara efektif menemukan dan melaporkan kesalahan ketika mereka ada? Saya pribadi sudah cukup bodoh untuk menulis kasus-kasus ujian yang keliru yang seharusnya lulus ketika seharusnya tidak, sehingga mengalahkan tujuan dari tes penulisan saya di tempat pertama. Untungnya, saya menemukan dan memperbaiki kesalahan dalam waktu, tetapi menurut mantra pengujian sepertinya tidak ada rangkaian tes yang akan lengkap tanpa memiliki serangkaian tes sendiri untuk memastikan itu berfungsi.
Bagi saya, cara terbaik untuk melakukan ini adalah dengan memastikan tes gagal untuk kode buggy. * Jika saya menghabiskan 2 menit secara bergantian menambahkan bug ke kode dan memastikan gagal, saya harus memiliki tingkat kepercayaan yang dapat diterima bahwa tes 'berhasil'. Ini membawa saya ke pertanyaan kedua: Apa cara yang baik untuk memperkenalkan bug untuk memastikan bahwa mereka tertangkap oleh kasus uji? Jika saya hanya mengomentari pernyataan secara acak, pastikan cabang yang salah if-else
dijalankan dengan meniadakan kondisinya, dan mengubah urutan eksekusi kode dengan efek samping, dll., Sampai saya puas tes saya akan menangkap sebagian besarbug umum? Bagaimana pengembang profesional memvalidasi bahwa tes mereka benar-benar melakukan apa yang seharusnya mereka lakukan? Apakah mereka hanya menganggap tes itu berhasil, atau apakah mereka meluangkan waktu untuk mengujinya juga? Jika demikian, bagaimana mereka menguji tes?
Saya tidak menyarankan orang-orang harus menghabiskan begitu banyak waktu untuk menguji tes mereka dan kemudian menguji tes untuk tes mereka sehingga mereka tidak pernah benar-benar menulis kode asli, tetapi saya telah melakukan hal-hal yang cukup bodoh yang saya rasa saya bisa mendapat manfaat dari sedikit dari 'pengujian meta', dan ingin tahu tentang cara terbaik untuk melakukannya. : D
* Saya dapat memeriksa untuk melihat apakah tes lulus ketika menguji kode 'bebas bug', tetapi menggunakan kode sebagai spek untuk pengujian tampaknya cukup terbelakang ...