Основные понятия тестирования ПО
Процессы тестирования программного продукта
Тестирование — процесс выполнения программы с целью обнаружения ошибок. Шаги процесса задаются тестами. Другое название теста — тестовый вариант. Каждый тест определяет:
· Набор исходных данных и условий для запуска программы;
· Набор ожидаемых результатов работы программы.
Полную проверку программы гарантирует исчерпывающее тестирование. Оно требует проверить все наборы исходных данных, все варианты их обработки и включает большое количество тестовых вариантов. Исчерпывающее тестирование в большинстве случаев невозможно из-за ресурсных ограничений (прежде всего, ограничений по времени).
Хорошим считают тестовый вариант с высокой вероятностью обнаружения ещё не раскрытой ошибки. Успешным называют тест, который обнаруживает до сих пор не раскрытую ошибку.
Целью проектирования тестовых вариантов является систематическое обнаружение различных классов ошибок при минимальных затратах времени и стоимости.
Важен ответ на вопрос: что может тестирование? Тестирование обеспечивает:
· Обнаружение ошибок;
· Демонстрацию соответствия функций программы её назначению;
· Демонстрацию реализации требований к характеристикам программы;
· Отображение надёжности как индикатора качества программы.
А чего не может тестирование? Тестирование не может показать отсутствия дефектов (оно может показать только присутствие дефектов).
Условно процесс тестирования можно представить как результат взаимодействия нескольких информационных потоков (рис. 2.11).
Рис. 2.11. Информационные потоки процесса тестирования.
Модель тестирования выглядит следующим образом. На вход процесса тестирования поступают три потока:
· Текст программы;
· Исходные данные для запуска программы;
· Ожидаемые результаты.
Выполняются все тесты, полученные результаты оцениваются сравнением реальных результатов тестов с ожидаемыми. При обнаружении несовпадения фиксируется ошибка — начинается отладка. Процесс отладки непредсказуем по времени. На поиск места дефекта и исправление может потребоваться час, день, месяц. Неопределённость в отладке приводит к большим трудностям в планировании действий.
После сбора и оценивания результатов тестирования начинается отображение качества и надёжности ПО. Если регулярно встречаются серьёзные ошибки, требующие проектных изменений, то качество и надёжность ПО подозрительны, констатируется необходимость усиления тестирования. С другой стороны, если функции ПО реализованы правильно, а обнаруженные ошибки легко исправляются, может быть сделан один из двух выводов:
1. Качество и надёжность ПО удовлетворительны;
2. Тесты не способны обнаруживать серьёзные ошибки.
В конечном счёте, если тесты не обнаруживают ошибок, появляется сомнение в том, что тестовые варианты достаточно продуманы и что в ПО нет скрытых ошибок. Такие ошибки будут, в конечном итоге, обнаруживаться пользователями и корректироваться разработчиком на этапе сопровождения, когда стоимость исправления значительно возрастает (по сравнению с этапом разработки.)
Результаты, накопленные в ходе тестирования, оцениваются на основании различных моделей надёжности ПО, выполняющих прогноз надёжности по реальным данным об интенсивности потока ошибок.