Рис. 6.1. Информационные потоки процесса тестирования
На входе процесса тестирования три потока:
текст программы;
исходные данные для запуска программы;
ожидаемые результаты.
Выполняются тесты, все полученные результаты оцениваются. Это значит, что реальные результаты тестов сравниваются
с ожидаемыми результатами. Когда обнаруживается несовпадение, фиксируется ошибка — начинается отладка. Процесс
отладки непредсказуем по времени. На поиск места дефекта и исправление может потребоваться час, день, месяц.
Неопределенность в отладке приводит к большим трудностям в планировании действий.
После сбора и оценивания результатов тестирования начинается отображение качества и надежности ПО. Если регулярно
встречаются серьезные ошибки, требующие проектных изменений, то качество и надежность ПО подозрительны,
констатируется необходимость усиления тестирования. С другой стороны, если функции ПО реализованы правильно, а
обнаруженные ошибки легко исправляются, может быть сделан один из двух выводов:
качество и надежность ПО удовлетворительны;
тесты не способны обнаруживать серьезные ошибки.
В конечном счете, если тесты не обнаруживают ошибок, появляется сомнение в том, что тестовые варианты достаточно
продуманы и что в ПО нет скрытых ошибок. Такие ошибки будут, в конечном итоге, обнаруживаться пользователями и
корректироваться разработчиком на этапе сопровождения (когда стоимость исправления возрастает в 60-100 раз по
сравнению с этапом разработки).
Результаты, накопленные в ходе тестирования, могут оцениваться и более формальным способом. Для этого используют
модели надежности ПО, выполняющие прогноз надежности по реальным данным об интенсивности ошибок.
Существуют 2 принципа тестирования программы:
функциональное тестирование (тестирование «черного ящика»);
структурное тестирование (тестирование «белого ящика»).