Тестирование программных продуктов
Существуют две основные стратегии тестирования.
· Тестирование программы как черного ящика, при котором программа рассматривается как объект, внутренняя структура которого неизвестна.
· Тестирование программы как прозрачного (белого) ящика подразумевает знание исходного кода программы и полный доступ к нему.
Существуют также разновидности тестирования.
· Детерминированное тестирование, при котором контролируется каждая комбинация исходных эталонных данных и соответствующая ей комбинация результатов функционирования программ. На практике полное детерминированное тестирование обычно нереализуемо.
· Стохастическое тестирование, при котором исходные тестовые данные берутся случайным образом, как правило, с использованием статистического распределения.
· Ручное тестирование, которое проводится без исполнения тестируемой программы на компьютере.
Типичные ошибки.Обратим внимание на две категории наиболее распространенных ошибок программистов.
1) Ошибки общего (несинтаксического) характера, остающиеся в программах после выполнения синтаксического контроля.
• Группа логических ошибок. Например, неполный учет возможных условий или неверное указание ветви алгоритма после проверки условия.
• Ошибки в циклах. Например, неверные границы начала и конца.
• Ошибки при работе с данными.
• Ошибки ввода-вывода.
• Ошибки в описании переменной. Например, отсутствие инициализации переменной.
• Ошибки при работе с массивами.
• Отсутствие начального обнуления элементов.
2) Ошибки специального вида, особенно трудные для диагностирования.
• Ошибки при написании параллельных программ. Например, ошибки в расстановках семафоров.
• Ошибки, связанные с применением препроцессора.
• Ошибки, связанные с неправильным результатом операций.
• Исчезающие ошибки.
Тестовые данные.Для тестирования программ методом черного ящика готовятся определенные группы тестов.
1) Для тестирования классов эквивалентностей. Классы эквивалентностей позволяют вместо большого количества тестов использовать лишь их небольшое подмножество. Каждый тест представляет набор тестов, на которых программа ведет себя одинаково. Существует два основных типа классов эквивалентностей.
a) Класс корректных тестовых случаев, отражающих типичную "нормальную" ситуацию.
b) Класс тестов, содержащих ненормальную ситуацию, т. е. описывающих ситуацию, которой быть не должно.
2) Для тестирования граничных значений.
3) Для анализа причинно-следственных связей. Эти тесты применяются для программ, в которых взаимодействуют объекты.
4) Для тестирования тех утверждений, которые приводятся в документации.
Для оценки результатов тестирования используются эталонные ("золотые") файлы, которые содержат ожидаемые результаты работы программы (эталонные результаты). Основные варианты получения эталонных результатов таковы:
· использование справочников;
· вычисление вручную;
· использование результатов, полученных при помощи другой программы, которой мы доверяем.
Тестовое покрытие — это набор тестов, покрывающих программу (каждый линейный участок). Тестовое покрытие важно знать, чтобы определить участки кода, пропущенные при тестировании.
Особый важный класс составляют тесты, измеряющие производительность. Существуют специальные группы и компании, которые разрабатывают такие тесты.
Дата добавления: 2016-07-05; просмотров: 2624;