Основы тестирования

Тестирование программного обеспечения (Software Testing) — проверка соответствия реальных и ожидаемых результатов поведения программы, проводимая на конечном наборе тестов, выбранном определённым образом.


Цель тестирования — проверка соответствия ПО предъявляемым требованиям, поиск очевидных ошибок в программном обеспечении, которые должны быть выявлены до того, как их обнаружат пользователи программы.


Принципы тестирования:

- Тестирование демонстрирует наличие дефектов. Тестирование только снижает вероятность наличия дефектов, которые находятся в программном обеспечении, но не гарантирует их отсутствия.

- Исчерпывающее тестирование невозможно. Полное тестирование с использованием всех входных комбинаций данных, результатов и предусловий физически невыполнимо (исключение — тривиальные случаи).

- Раннее тестирование. Следует начинать тестирование на ранних стадиях жизненного цикла разработки ПО, чтобы найти дефекты как можно раньше.

- Скопление дефектов. Большая часть дефектов находится в ограниченном количестве модулей.

- Парадокс пестицида. Если повторять те же тестовые сценарии снова и снова, в какой-то момент этот набор тестов перестанет выявлять новые дефекты.

- Тестирование зависит от контекста. Тестирование проводится по-разному в зависимости от контекста. Например, программное обеспечение, в котором критически важна безопасность, тестируется иначе, чем новостной портал.

- Заблуждение об отсутствии ошибок. Отсутствие найденных дефектов при тестировании не всегда означает готовность продукта к релизу.


Обеспечение качества продукта (Quality Assurance) — это мероприятия направленные на обеспечение качеству.

К мероприятиям относится:

- проверка технических характеристик и требований к ПО;

- оценка рисков;

- планирование задач для улучшения качества продукции;

- подготовка документации, тестового окружения и данных;

- тестирование;

- анализ результатов тестирования, а также составление отчетов и других документов.


Верификация и валидация — два понятия тесно связаны с процессами тестирования и обеспечения качества. К сожалению, их часто путают, хотя отличия между ними достаточно существенны.

Верификация (verification) — это процесс оценки системы, чтобы понять, удовлетворяют ли результаты текущего этапа разработки условиям, которые были сформулированы в его начале.

Валидация (validation) — это определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, его требованиям к системе.