Тестирование – это деятельность, выполняемая для оценки и улучшения качества ПС, которое, как правило, связано с обнаружением дефектов и проблем в программных системах.
Тестирование программных систем состоит из динамичной верификации поведения программ на конечном (ограниченном) наборе тестов, выбранных определенным образом из обычно выполняемых действий прикладной области и обеспечивающих проверку соответствия ожидаемому поведению системы.
Верификация – это деятельность по проверке соответствия какого-либо объекта или процесса установленным требованиям.
Динамичность подразумевает, что тестирование всегда предполагает выполнение тестируемой программы с заданными входными данными.
Конечность (ограниченность) – заключается в том, что для больших и сложных программ практически невозможно составить тест, полностью проверяющий все сценарии использования, потому тестирование всегда компромисс между определенным ресурсом и сжатыми сроками с одной стороны и практически ограниченными требованиями к тестам с другой.
Выбор – состоит в том, что каким образом выбираются сценарии тестирования и каким образом это влияет на его эффективность. Определение подходящего набора тестов для заданных условий очень сложная задача, для решения которой используются методы анализа рисков, анализа требований и экспертиза предметной области.
Ожидаемое поведение – то функционирование системы, которое рассматривается как приемлемое для ее пользователей.
Большое значение в сфере тестирования имеет качество тестов, т.е. их способность адекватно и полно выявлять большую часть ошибок в программном коде и логике функционирования, потому существуют критерии отбора тестов, с помощью которых те или иные тестовые задания включаются в проект.
К числу таких критериев относятся:
- Эффективность тестирования, которая определяется тем, насколько достигаются цели тестирования, т.е. тем насколько важные и значимые проблемы можно обнаружить при помощи такого теста;
- Тестирование для идентификации дефектов подразумевает успешность процедуры тестирования, или найденный дефект;
- Проблема Оракула – заключается в том, что всегда в тестировании присутствует некий агент, человек или программа, который должен оценить поведение тестируемой программы и сформулировать знание, что тест пройден или тест провален, и данное решение всегда имеет долю вероятности;
- Теоретические и практические ограничения тестирования – никакое успешное тестирование и даже серия успешно пройденных тестов не дает полной гарантии того, что программная система функционирует без сбоев, т.к. полное всеобъемлющее тестирование невозможно, а ограниченные тесты несут долю субъективности;
- Проблема неосуществимости путей – одна из важных проблем автоматизирования, которая связана с тем, что путь, по которому выполняются потоки работ тестируемой системы, не может быть задан входными данными;
- Тестируемость – подразумеваются 2 различные идеи:
- Описывает степень легкости описания критериев покрытия тестами для заданной программной системы;
- Определяет возможность статистического измерения вероятности, что при тестировании проявится сбой программной системы.