В багатьох випадках процес тестування можна автоматизувати. Тобто, коли необхідно виконати багато тестових прогонів, кожен раз порівнюючи велику кількість результатів, можна написати програму, яка буде виконувати потрібні запуски. При цьому контрольні значення можуть міститись в деякому файлі на диску, який автоматично порівнюється з файлом вихідних даних програми.
Інший ефективний прийом тестування називають стресовим тестуванням – програма перевіряється дуже великими об’ємами вхідних даних, сгенерованих комп’ютером, наприклад, датчиком випадкових чисел. Такі випадкові дані можуть бути дуже ефективними для перевірки можливості переповнень масивів, файлів, змінних-лічильників.
Інші види тестів базуються на зумисному використанні некоректних даних. Будь-який блок програми, який одержує вхідні дані ззовні, повинен перевіряти їх, перш ніж використовувати. Історія програмних помилок включає дуже багато не тільки курйозних, але і сумних епізодів. Про один з них можна прочитати в [10]: “В листопаді 1998 року в журналі Scientific American був описаний інцидент, що стався на борту американського ракетного крейсера Yorktown. Член команди помилково замість значущого числа ввів 0, що призвело до помилкового ділення на нуль. Помилка розрослася і врешті решт силова установка корабля виявилася виведеною з ладу. Декілька годин Yorktown дрейфував волею хвиль – а все через те, що в програмі не було здійснено перевірку діапазону вхідних даних.”