Роблячи науково-дослідні роботи, я часто виявляю, що пишу програми, які мають велику ступінь випадковості у своїй поведінці. Наприклад, коли я працюю в генетичному програмуванні, я часто пишу програми, які генерують та виконують довільний випадковий вихідний код.
Проблема тестування такого коду полягає в тому, що помилки часто перериваються і їх дуже важко відтворити. Це виходить за межі просто встановлення випадкового насіння на те саме значення та початку виконання.
Наприклад, код може прочитати повідомлення з буфера кільця ядра, а потім зробити умовні стрибки на вміст повідомлення. Звичайно, стан буфера кільця зміниться, коли пізніше спробу відтворити проблему.
Незважаючи на те, що така поведінка є особливістю, вона може викликати інший код несподіваними способами, і, таким чином, часто виявляє помилки, які одиничні тести (або людські тестери) не знаходять.
Чи існують встановлені найкращі практики тестування таких систем? Якщо так, деякі посилання були б дуже корисними. Якщо ні, будь-які інші пропозиції вітаються!