Melakukan penelitian dan pengembangan, saya sering menemukan diri saya menulis program yang memiliki tingkat keacakan yang besar dalam perilaku mereka. Misalnya, ketika saya bekerja di Pemrograman Genetik, saya sering menulis program yang menghasilkan dan mengeksekusi kode sumber acak acak.
Masalah dengan pengujian kode tersebut adalah bahwa bug sering berselang dan bisa sangat sulit untuk mereproduksi. Ini lebih dari sekadar mengatur seed acak ke nilai yang sama dan memulai eksekusi.
Misalnya, kode dapat membaca pesan dari buffer cincin kernal, dan kemudian membuat lompatan bersyarat pada isi pesan. Secara alami, status penyangga cincin akan berubah ketika salah satu dari mereka kemudian mencoba mereproduksi masalah.
Meskipun perilaku ini adalah fitur, ia dapat memicu kode lain dengan cara yang tidak terduga, dan karenanya sering mengungkapkan bug yang tidak ditemukan oleh unit test (atau penguji manusia).
Adakah praktik terbaik yang sudah ada untuk sistem pengujian semacam ini? Jika demikian, beberapa referensi akan sangat membantu. Jika tidak, saran lain dipersilakan!