Тестировщик стремиться настроить процесс тестирования функциональности программного обеспечения на всех возможных входных данных (действительных или недействительных). Но исчерпывающее тестирование невозможно, т. е. программное обеспечение никогда не сможет протестировать каждый набор тестов. Он может протестировать только некоторые тестовые случаи и предположить, что программное обеспечение правильное, и оно будет давать правильный результат в каждом тестовом примере. Если программное обеспечение будет тестировать каждый тестовый пример, это потребует больше затрат, усилий, что в больших проектах нецелесообразно.