Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Качество ПО.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
577 Кб
Скачать
☆

Интеграционное тестирование. Уровни, стратегии, их достоинства и недостатки.

Интеграционное тестирование (integration testing) – это этап тестирования, следующий за модульным тестированием (unit testing). На этапе модульного тестирование выполняется проверка корректности работы отдельных модулей системы, а целью этапа интеграционного тестирования – является проверка их взаимодействия. При разработке сложной программной системы, состоящей из множества подсистем, интеграционное тестирование может применяться на разных уровнях детализации для проверки взаимодействия:

  1. Множества модулей (компонент);

  2. Множества компонент (продукт);

  3. Множества продуктов (система);

Существует несколько стратегий интеграционного тестирования:

  1. Стратегия инкрементального тестирования (Incremental):

    1. восходящее (bottom-up);

    2. нисходящее (top-bottom);

  1. Стратегия мгновенного тестирования (Instantaneous);

Инкрементальное интеграционное тестирование проходит следующим образом: вначале тестируются пары модулей, затем в большие блоки и так далее, пока все модули не будут объединены в единую систему, причём порядок объединения определяется выбранной стратегией (восходящей или нисходящей).

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

  1. Общедоступная операция имеет один или большее число формальных параметров объектного типа. Сообщение устанавливает ассоциацию между получателем и параметром, которая позволяет получателю взаимодействовать с этим параметрическим объектом;

  2. Общедоступная операция возвращает значения объектного типа. На класс может быть возложена задача создания возвращаемого объекта, либо он может возвращать модифицированный параметр;

  3. Метод одного класса создает экземпляр другого класса как часть своей реализации;

  4. Метод одного класса ссылается на глобальный экземпляр некоторого другого класса;

Порядок проведения нисходящего интеграционного тестирования модулей:

Driver – Код – оболочка, вызывающий тестируемый модуль;

Stub – методы – заглушки;

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

  1. Позволяет легко верифицировать высокоуровневое поведение;

  2. Требуется только один драйвер;

  3. Модули могут добавляться последовательно по мере их Unit-тестирования;

  4. Поддерживает поиск в ширину и глубину;

Недостатки:

  1. Задерживает верификацию низкоуровневого поведения;

  2. Частое использование заглушек для отсутствующих элементов;

  3. Тестовые наборы могут быть трудны для написания.

  4. Результаты тестовых наборов могут быть трудны для интерпретации;

Порядок проведения восходящего интеграционного тестирования модулей:

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

  1. Позволяет легко верифицировать низкоуровневое поведение;

  2. Отсутствие необходимости написания вспомогательных заглушек;

  3. Легко сформулировать входные данные для поддерева;

  4. Легко интерпретировать выходные данные;

Недостатки:

  1. Задерживает верификацию высокоуровневого поведения;

  2. Требуется большое количество драйверов для имитации запускающих модулей;

  3. При объединении поддеревьев большое число элементов может быть интегрировано в один момент времени;

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