Организация процесса тестирования программного обеспечения
Процесс тестирования ПО объединяет различные способы тестирования в определенную последовательность шагов, которые приводят к успешному построению программной системы. Методика тестирования ПО может быть представлена в виде разворачивающейся спирали [6.2].
В начале осуществляется тестирование элементов (программных модулей), проверяющее результаты кодирования ПО. Цель - индивидуальная проверка каждого модуля. Используются способы тестирования « белого ящика».
На втором шаге осуществляется тестирование интеграций, ориентированное на выявление ошибок этапа проектирования ПО. Цель - тестирование сборки модулей в систему. В основном применяют способы тестирования « черного ящика». Используются методы нисходящего и восходящего тестирования интеграций. Тесты проводятся для обнаружения ошибок интерфейса, таких, например, как:
- потеря данных при прохождении через интерфейс;
- отсутствие в модуле необходимой ссылки;
- неблагоприятное влияние одного модуля на другой;
- проблемы при работе с глобальными структурами данных и др.
Третий шаг - тестирование правильности, проверяющее корректность требований к программной системе. Цель - подтвердить, что функции, описанные в спецификации ПО, отвечают требованиям заказчика. Используются методы «черного ящика». Важным элементом подтверждения правильности является проверка конфигурации программной системы - совокупности всех элементов информации, вырабатываемых в процессе конструирования ПО. При этом используются варианты альфа- и бета-тестирования. Альфа-тестирование проводится заказчиком в организации разработчика. Бета-тестирование, которое длится в течение фиксированного срока (порядка года), проводится конечным пользователем в организации заказчика.
На заключительном витке спирали проводится системное тестирование, выявляющее дефекты этапа системного анализа ПО. Цель - проверка правильности взаимодействия всех элементов компьютерной системы, реализации всех системных функций. Используются следующие тесты:
- тестирование восстановления (проверяется время и полнота восстановления);
- тестирование безопасности (проверяется реакция всех защитных механизмов, встроенных в систему, на проникновение);
- стрессовое тестирование (проверяется работа системы при аномальных ситуациях, например, очень большом количестве запросов на ресурсы системы);
- тестирование производительности в системах реального времени.
Тестирование программного обеспечения в какой-то момент времени необходимо заканчивать. В [6.4] предлагается передавать крупномасштабный программный продукт пользователю на регулярную эксплуатацию, если специалисты по тестированию и все пользователи в совокупности выявляют не более одной ошибки или дефекта каждые два-три месяца использования ПО. Это соответствует высокой наработке на отказ ПО, равной порядка 5-10 тысяч часов, и коэффициенту готовности выше 0,99.