В то время как предусловия являются теми аспектами системы, которые должны быть установлены перед запуском теста, входные значения являются теми значениями, которые передаются напрямую в тестируемую функциональность. Это различие может быть трудноуловимым, поэтому давайте рассмотрим несколько примеров. Представим, что у нас есть алгоритм сортировки billSort, который предположительно в 20 раз быстрее, чем любой другой алгоритм. Не принимая на веру то, что billSort всегда дает правильный результат, мы разрабатываем тесты для него. В одном из них используется глобальная переменная SORT_ASCENDING. В зависимости от того, какое значение принимает эта булева переменная — true или false, сортировка будет идти либо по возрастанию (от меньшего значения к большему, т. е. "a", "b", "c"), либо по убыванию (от большего значения к меньшему, т. е. "c", "b", "a"). Если мы собираемся протестировать этот алгоритм сортировки, установка флага будет считаться предусловием, т. к. это то, что должно быть уста