
- •Курсовой проект
- •Содержание
- •Введение
- •Описание предметной области
- •Техническое задание на курсовой проект по теме: «Интерактивный телефонный справочник» Технический проект
- •3.1 Описание архитектуры программного продукта
- •3.2 Блок-схемы основных алгоритмов
- •3.3 Краткое описание файлов программного продукта
- •3.4 Описание классов (переменные и функции)
- •3.5 Принцип работы основных функций
- •4 Используемые методики тестирования программного продукта
- •4.1 Тестирование программного продукта целиком
- •4.2 Тестирование отдельных функций
- •5 Эксплуатационная документация
- •5.1 Руководство программиста
- •Техническое задание
4 Используемые методики тестирования программного продукта
Тестирование – это процесс исполнения программы с целью обнаружения ошибок. При тестировании программы возможны два принципиально различных подхода: принцип черного ящика (внутренняя логика программы не учитывается), принцип белого ящика (тест проектируется именно с учетом внутреннего устройства программы).
В случае принципа тестирования программы как черного ящика для того, чтобы гарантировать отсутствие ошибок в программе, нужно создать исчерпывающий тест, т.е. такой тест, который включает в себя все возможные наборы входных данных для программы. При этом нельзя полагаться на метод аналогий.
В случае второго принципа, тестирование программы как белого ящика, тестовые данные получают путем анализа логики программы.
Ни один из принципов не могут быть практически реализованы. Реальным путем, который позволит создать хорошую стратегию, является сочетание тестирования программы как черного и белого ящика.
Метод проектирования теста, исходя из логики программы, т.е. рассматривая ее как белый ящик:
Метод покрытия операторов (тест составляется таким образом, чтобы каждый оператор программы был выполнен хотя бы один раз. Недостатком этого метода является то, что операторы могут быть проверены не полностью, если они состоят из нескольких условий).
Метод покрытия решений, или покрытия переходов (число тестов должно быть таким, чтобы каждый условный оператор принял все возможные значения – «истина» или «ложь». Так как условный оператор может состоять из двух или более условий, то при использовании этого метода не все условия могут быть протестированы).
Метод покрытия условий (число тестов должно быть такое, чтобы все возможные результаты каждого условия в операторах перехода выполнились хотя бы раз. Но при этом может случиться, что сам условный оператор не примет всех возможных значений).
Метод покрытия решений/условий (сочетает в себе два предыдущих метода).
Метод комбинаторного покрытия условий (этот метод требует создания такого числа тестов, чтобы перебрать все возможные комбинации результатов проверки условий. Но, если компилятор оптимизирует логическое выражение, эта проверка может не получиться).
Метод проектирования теста, используя принцип черного ящика:
Эквивалентное разбиение (нужно попытаться разбить область входных данных программы на конечное число так называемых классов эквивалентности так, чтобы можно было предположить, что каждый тест, являющийся представителем некоторого класса, эквивалентен любому другому тесту-представителю этого же класса).
Анализ граничных значений (граничные условия – это ситуации, возникающие непосредственно выше или ниже границ входных и выходных классов эквивалентности. При разработке тестов рассматриваются не только входные условия (пространство входов), но также и выходные (пространство результатов), т.е. выходные классы эквивалентности).
Тестирование комбинации выходных условий (для этого нужно использовать спецификацию программы и составить на ее основе все имеющие смысл сочетания входных условий. Затем нужно составить тесты для проверки всех этих условий. Проблемой является то, что для большой программы число сочетаний условий очень велико).
Предложение об ошибке (т.е. выдвигать интуитивные предложения о возможности наличия тех или иных ошибок).