Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tekhnologia_Programmirovania_-_ekzamen.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.33 Mб
Скачать

3. Стратегия тестирования.

Принцип «черного ящика» (по спецификациям – формальное тестирование).

- анализируются спецификации входных и выходных данных и т.д., тесты должны охватить все варианты входных и выходных данных.

Проблемы:

  1. Большое количество тестов. Надежность проверяется всеми возможными последовательностями с анализом поведения.

  2. Полное тестирование выполнить невозможно.

В теории графов имеется понятие циклическое число – количество независимых путей выполнения процедуры. Независимые пути – это пути, которые различаются хотя бы одной ветвью управления. Циклическое число равно количеству ветвлений плюс одно ветвление: V(G) = P + 1.

Проблемы, связанные с проводимыми тестами:

  1. долгое время подготовки тестов;

  2. долгое время исполнения тестов;

  3. возможные ошибки при составлении тестов и анализе результатов;

  4. отсутствие контроля спецификаций;

  5. отсутствие контроля отсутствующих путей;

  6. пропуск ошибок из-за чувствительности к данным.

Количество всевозможных комбинаций входных данных превышает количество путей.

Вывод: полное тестирование невозможно.

Принцип «белого ящика» (по коду – содержательное тестирование).

- анализируется логика по тексту программы; требование к тесту – прохождение по всем ветвям пути, хотя бы один раз.

Проблемы:

  1. При тестировании всей программы нет проверки на соответствие спецификациям.

  2. Отсутствие необходимых путей (рассматриваются не все варианты, только те, что в коде)

  3. Чувствительность к данным.

  4. При большом количестве ветвлений в программе количество вариантов для тестирования становится непомерно большим.

Вывод: Очень много всевозможных путей, следовательно, полное тестирование невозможно.

4. Тестирование программного модуля.

Цель тестирования модуля: выявить несоответствие логики работы модуля с его спецификацией.

Модуль – минимальная единица программирования (процедура, метод, класс).

  1. Составляется в соответствии со спецификацией тест как «черный ящик». Из спецификации выявляются классы эквивалентности для входных и выходных данных. Класс эквивалентности – множество однородных наборов данных.

  2. Тестирование базового пути (каждая ветвь при ветвлении в модуле должна быть выполнена хотя бы 1 раз).

  3. Выполняется в соответствии со стратегией содержательного тестирования (проверяется каждая ветвь).

  4. Тестирование прохождения циклов (проверяются не все значения, по одному из диапазонов значений – крайние, промежуточное, все значения находятся в области допустимых значений).

  5. Тестирование устойчивости к данным. Локальные переменные приняли граничные значения, возникла ситуация деления на ноль, переполнение.

5. Восходящее и нисходящее тестирование.

Цель интегрированного тестирования - выявление ошибок в механизмах интеграции модулей.

Порядок выполнения ИТ определяется порядком проектирования.

Восходящее тестирование – программа тестируется снизу вверх:

-автономно тестируются только модули нижнего уровня (модули, не вызывающие другие модули);

- далее происходит интеграция на более высоких уровнях.

Для тестирования снизу вверх необходимо количество драйверов (процедура, которая используется для тестирования других процедур) равное количеству модулей, за исключением родительского (корневого) модуля.

Недостаток: поздно выявляются принципиальные ошибки (только на высших уровнях).

Нисходящее тестирование – тестирование сверху вниз.

Автономно тестируется только модуль первого уровня.

На первом этапе для этого модуля создаются заглушки (stub), эмитирующие модули нижнего уровня. Так как это заглушки, а не сами модули, то тестирование ненадежно.

Ненадежность тестирования:

  1. заглушки, а не сами модули (на первом этапе)

  2. ограничение передачи данных модуля верхнего уровня

  3. необходимость модуля нижнего уровня для модуля верхнего уровня (модулей ввода-вывода), решением чего является создание веток к модулям ввода/вывода

Недостатки:

  1. низкая надежность тестирования модуля нижнего уровня (из-за недостаточности данных у модулей верхнего уровня)

  2. наличие большого числа отложенных решений (создание большого количества заглушек или модулей-каркасов нижнего уровня).

Достоинства:

1. на ранних стадиях выявляются ошибки на функциональном уровне (функциональное тестирование);

2. меньшее количество тестов из-за ограниченности данных в дочерних модулях;

3. отсутствие необходимости в разработке драйверов (драйвер создать сложнее, чем заглушки).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]