[ Тематический план ] [ Тестирование программного обеспечения в процессе внедрения и эксплуатации ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ]
Интеграционное тестирование
Интеграционное тестирование — это тестирование части
системы, состоящей из двух и более модулей. Основная задача интеграционного
тестирования — поиск дефектов, связанных с ошибками в реализации и
интерпретации интерфейсного
взаимодействия между модулями.
С
технологической точки зрения интеграционное
тестирование является количественным развитием модульного, поскольку так
же, как и модульное тестирование, оперирует интерфейсами модулей и подсистем и
требует создания тестового окружения, включая заглушки (Stub) на месте
отсутствующих модулей.
Основная разница между модульным и интеграционным тестированием состоит в целях, т. е. в типах
обнаруживаемых дефектов, которые, в свою очередь, определяют стратегию выбора
входных данных и методов анализа. В частности, на уровне интеграционного тестирования часто применяются
методы, связанные с покрытием
интерфейсов, например, вызовов функций или
методов, или анализ использования интерфейсных объектов, таких как
глобальные ресурсы, средства коммуникаций,
предоставляемых операционной системой.
На рис. 2
приведена структура комплекса программ К,
состоящего из оттестированных на этапе модульного тестирования модулей М1,
М,2 М11, М,12 М21, М22.
Задача, решаемая методом интеграционного
тестирования, — тестирование
межмодульных связей, реализующихся при исполнении программного
обеспечения комплекса К. Интеграционное тестирование использует модель «белого ящика» на модульном
уровне.
Поскольку тестировщику текст программы известен с детальностью до вызова всех модулей, входящих в тестируемый комплекс, применение структурных критериев на данном этапе возможно и оправданно.

Интеграционное тестирование применяется на этапе сборки модульно
оттестированных модулей в единый комплекс.
Известны два метода сборки модулей:
• монолитный,
характеризующийся одновременным
объединением всех модулей в тестируемый комплекс;
• инкрементальный,
характеризующийся пошаговым (помодульным) наращиванием комплекса программ с пошаговым тестированием собираемого
комплекса. В инкрементальном методе выделяют две стратегии добавления модулей:
— «сверху вниз» и соответствующее ему восходящее тестирование;
— «снизу вверх» и соответственно нисходящее тестирование.
Особенности монолитного тестирования
заключаются в следующем: для замены не
разработанных к моменту тестирования модулей, кроме самого верхнего (К на рис. 2), необходимо дополнительно
разрабатывать драйверы (test driver) и/или заглушки(stub), замещающие
отсутствующие на момент сеанса
тестирования модули нижних уровней.
Сравнение
монолитного и интегрального подходов дает
следующие результаты.
Монолитное
тестирование требует больших трудозатрат, связанных с дополнительной
разработкой драйверов и заглушек и со сложностью идентификации ошибок,
проявляющихся в пространстве собранного
кода.
Пошаговое
тестирование связано с меньшей трудоемкостью идентификации ошибок за счет
постепенного наращивания объема
тестируемого кода и соответственно локализации
добавленной области тестируемого кода.
Монолитное тестирование предоставляет большие возможности распараллеливания работ, особенно
на начальной фазе тестирования.
Особенности нисходящего тестирования заключаются в следующем: организация среды для исполняемой
очередности вызовов оттестированными
модулями тестируемых модулей, постоянная
разработка и использование заглушек, организация приоритетного тестирования модулей,
содержащих операции обмена с окружением, или модулей, критичных для
тестируемого алгоритма.
Например, порядок тестирования комплекса К (см. рис. 2) при нисходящем тестировании может быть таким, как показано в примере 3,
где тестовый набор, разработанный для модуля Mi, обозначен как XYi = (X, Y)i.
1) К -> XYk
2) М1 -> XY1
3)M11->XY 11
4) М2 -> XY2
5) М22 -> XY 22
6) M21 -> XY21
7) M12-> XY 12
Пример 1. Возможный порядок тестов при
нисходящем тестировании (html, txt).
Недостатки
нисходящего тестирования:
• проблема разработки достаточно
«интеллектуальных» заглушек, т. е.
заглушек, способных к использованию при моделировании различных режимов работы
комплекса,
необходимых для тестирования;
• сложность организации и разработки среды для
реализации исполнения модулей в нужной последовательности;
• параллельная разработка модулей верхних и нижних уровней приводит к не всегда эффективной
реализации модулей из-за подстройки
(специализации) еще не
тестированных модулей нижних уровней к уже
оттестированным модулям верхних уровней.
Особенности
восходящего тестирования в организации порядка сборки и
перехода к тестированию модулей,
соответствующему порядку их реализации.
Например, порядок тестирования комплекса К (см. рис..2) при восходящем тестировании может быть следующим (см. пример 4).
1)М11->ХУ11
2) M12 -> XY12
3) Мi -> XYi
4) М21 -> XY21
5) M2(M21,
Stub(M22)) -> XY2
6) К(М1 ,M2(M21,
Stub(M22)) -> XYk
7) М22 -> XY22
8) М2 -* XY2
9) К -> XYk
Пример 2. Возможный порядок тестов при
восходящем тестировании.
Недостатки восходящего тестирования:
• запаздывание проверки концептуальных
особенностей тестируемого комплекса;