exam15 5 - stankin/design-part-1 GitHub Wiki

Технологии интеграционного тестирования. Назначение, возможности и ограничения.

Реферат к лекции 15(5) Тестирование программных средств

Выполнил: Демушкин Андрей, ИДБ-18-06

Проверил: Бельский Антон, ИДБ-18-06


Тестирование программного обеспечения — процесс исследования, испытания программного продукта, имеющий своей целью проверку соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выбранных определённым образом [1].
Интеграционное тестирование – вид тестирования программного обеспечения, при котором на соответствие требований проверяются отдельные программные модули, их взаимодействие. Для интеграционного тестирования используются компоненты, уже проверенные с помощью модульного тестирования, которые группируются в множества. Данные множества проверяются в соответствии с планом тестирования, составленным для них, а объединяются они через свои интерфейсы.[2]

Как правило, интеграционное тестирование имеет следующие подходы:

  • Метод большого взрыва
  • Снизу вверх или восходящий
  • Сверху вниз или нисходящий
  • Смешанный

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

Преимущества:

  1. Весьма удобен в использовании при тестировании небольших систем.
  2. Быстрое нахождение ошибок, а значит, существенная экономия время, которое может быть потрачено на разработку и доработку уже используемого функционала.

Недостатки:

  1. Так как модули завязаны на одной системе, порой очень трудно найти источник дефектов.
  2. Если в системе используется много модулей, может уйти достаточно времени, чтобы пересмотреть все реализованные функциональности.

none


Снизу вверх или восходящий - процесс тестирования начинается с внутреннего уровня, начала собираются и тестируются низкоуровневые модули, а затем постепенно добавляются модули более высокого уровня

Преимущества:

  1. Создание отдельных модулей может совершаться при применении метода интеграционного тестирования по схеме «снизу вверх», так как тестирование самых критических моментов начинается с тестов модулей нижнего порядка.
  2. Если определенный модуль перестает функционировать, его ошибка может быть сразу же исправлена.
  3. Требуется минимальное время на идентификацию и устранение ошибок.

Недостатки:

  1. Общее время проверки всех модулей довольно долгое, так как продукт не может быть представлен в релиз пока не пройдет тестирование от самого нижнего до самого верхнего модулей.
  2. Если ПО содержит много небольших модулей мелкого уровня, которые очень сложны в своей имплементации, то для завершения процесса тестирования может потребоваться больше времени.

none


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

Преимущества:

  1. Легко обнаружить неисправности или ошибки в работе системы.
  2. В первую очередь проверяются важные модули, а лишь потом модули нижнего порядка.
  3. По сравнению с другими подходами, время на тестирование интеграции очень коротко.

Недостатки:

  1. Если в модули нижнего уровня заложена важная логика, она не может быть протестирована в первую очередь, пока не завершится работа над проверкой верхних порядков.
  2. Использование «заглушек» становится обязательным на всех последующих проектах.

none


Смешанный - сочетает логики подходов «сверху вниз» и «снизу вверх», самый верхний модуль тестируется отдельно, при этом модули нижнего уровня интегрируются и проверяются с модулями верхнего уровня Цена подобного тестирования очень высока, так как данный подход включает в себя сразу несколько модулей проведения интеграционного тестирования. При автоматизации тестирования используется Система непрерывной интеграции. Принцип ее действия заключается в следующем [2]:

  1. Система непрерывной интеграции производит мониторинг системы контроля версий.
  2. При изменении исходных кодов в репозитории производится обновление локального хранилища.
  3. Выполняются необходимые проверки и модульные тесты.
  4. Исходные коды компилируются в готовые выполняемые модули.
  5. Выполняются тесты интеграционного уровня.
  6. Генерируется отчет о тестировании.

Это позволяет тестировать систему сразу после внесения изменений, что существенно сокращает время обнаружения и исправления ошибок. Рассмотрим найденный пример [3]:

none

Для проверки подобных спецификаций потребуется движок, который бы считывал спецификации и проверял их соответствие поведению программы. Но все это было приведено ради примера.

Данный вид тестирования является интеграционным, так как при проверке вызывается код взаимодействия нескольких классов.

Интеграционное тестирование также имеет некоторые ограничения:

  • Непрактичность использования для программного обеспечения большого объема.
  • Невозможность применения для тестирования взаимодействий с участием повторно используемых программных компонент.

Список используемой литературы:

  1. Тестирование программного обеспечения
  2. Интеграционное тестирование
  3. Хабр. Виды тестирования