Інтеграційне тестування

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
Цикл розробки
програмного забезпечення
Coding Shots Annual Plan high res-5.jpg
Програміст за роботою
Діяльність та кроки
Вимоги ·  Специфікація
Архітектура ·  Дизайн
Реалізація ·  Тестування
Розгортання ·  Підтримка
Методології
Гнучка ·  Чистого приміщення
DSDM ·  Iterative ·  RAD ·  RUP
Spiral ·  Водоспад ·  XP ·  Scrum
Lean ·  V-Model ·  FDD ·  TDD
Допоміжні дисципліни
Конфігураційне керування
Документування
Якість ПЗ
Управління проектами
Досвід користування
Інструменти
Компілятор ·  Зневаджувач
Профілювальник
GUI designer ·  IDE
Див. також
Стадії розробки програмного забезпечення


Інтеграційне тестування (англ. integration testing) — це фаза тестування програмного забезпечення, під час якої окремі модулі програми комбінуються та тестуються разом, у взаємодії. Інтеграційне тестування виконується після модульного тестування та перед верифікацією та валідацією ПЗ. Якщо розглядати цей процес як систему, то на вхід їй подаються модулі, які вже пройшли модульне тестування; потім модулі групуються в більші частини, виконуються тести передбачені планом, а на виході системи — інтегрована система, що готова до системного тестування.

Мета[ред.ред. код]

Метою інтеграційного тестування є верифікувати вимоги з функціональності, продуктивності, надійності до основних компонентів програми. Ці компоненти, тобто групи модулів, тестуються методом чорної скриньки (англ. «black-box testing»), успішні та неуспішні тест-кейси симулюються відповідними вхідними параметрами.

В процесі інтеграційного тестування тестуються симульоване використання спільних (англ. «shared») даних та комунікація між процесами. Тест-кейси перевіряють чи коректно взаємодіють всі компоненти, наприклад: через виклик процедури або активізацію процесу.

Дуже важливо те, що до інтеграційного тестування приступають тільки після модульного. Це дозволяє реалізувати стратегію «будівельних блоків», коли до верифікованої системи інтегруються верифіковані модулі.

Серед різновидів інтеграційного тестування є: «big bang» тестування, тестування зверху-донизу та знизу-вгору.

Big Bang[ред.ред. код]

В цьому підході, всі або більша частина розроблених модулів збираються разом, формуючи завершену програмну систему або її значну частину та використовуються для інтеграційного тестування. Цей метод дуже ефективний для збереження часу тестування програмної системи. Тим не менше, якщо тест-кейси та їх результати не занотовані належним чином, весь процес стане дуже складним та втратить сенс.

Зверху-донизу та знизу-вгору[ред.ред. код]

Тестування знизу-вгору — це такий підхід до тестування, коли першими тестуються компоненти нижнього рівня, щоб полегшити тестування високорівневих компонентів. Після інтеграційного тестування групи компонентів певного рівня з них формується наступний рівень, який теж повинен бути протестований. Цей підхід ефективний тільки коли всі модулі одного рівня вже розроблені. Також цей підхід допомагає визначити які рівні системи вже розроблені та виразити процес тестування в відсотках.

Тестування зверху-донизу — це такий підхід до тестування, коли тестуються компоненти вищого рівня та гілки кожного з модулів тестуються крок за кроком, поки модуль не буде протестований повністю.

Сендвіч-тестування — підхід, комбінований з двох попередніх.

Перший підхід дозволяє легко знаходити програмні дефекти, коли другий знаходить архітектурні.

Системи безперервної інтеграції[ред.ред. код]

Для автоматизації інтеграційного тестування використовують системи безперервної інтеграцію (Continuous Integration System, CIS). Принцип дії таких системи складається з наступного:

  1. CIS виконує моніторинг системи контролю версій.
  2. У випадку змін кода в репозиторії виконується оновлення локальної версії.
  3. Виконується модульне тестування.
  4. Збираються програмні модулі.
  5. Виконуються інтеграційні тести.
  6. Генерується звіт.

Таким чином, автоматичні інтеграційні тести виконуються відразу після внесення змін, що дозволяє виявити та усунути помилки за короткий проміжок часу.

CIS[ред.ред. код]

Деякі відомі CIS:

  • BuildBot
  • Hudson або Jenkins

Рівні інтеграційного тестування[ред.ред. код]

Рівні інтеграційного тестування:

  • компонентний інтеграційний рівень (Component Integration testing). Перевіряється взаємодія між компонентами системи після проведення компонентного тестування;
  • системний інтеграційний рівень (System Integration Testing). Перевіряється взаємодія між різними системами після проведення системного тестування.

Визначення по ISTQB[ред.ред. код]

Інтеграційне тестування: Перевіряє інтерфейси між компонентами, взаємодію з різними частинами системи, такими як операційна система, файлова система та апаратне забезпечення, інтерфейси між системами. Інтеграційне тестування може складатися з одного чи більше рівнів та може виконуватися на тестових об’єктах різного розміру таким чином:

  • Компонентне інтеграційне тестування перевіряє взаємодію між компонентами системи. Виконується після компонентного тестування.
  • Системне інтеграційне тестування перевіряє взаємодію між різними системами або між апаратним та програмним забезпеченням. Може виконуватися після системного тестування. Вцьому випадку організація, яка розробляє продукт, може контролювати тільки одну сторону інтерфейсу. Однак це можна розглядати як ризик. Бізнес процеси, зображені як потоки робіт, можуть включати послідовність систем. Кросплатформенні розбіжності можуть бути суттєвими.

Поради[ред.ред. код]

  • Переконайтеся, що у вас є відповідний документ детального проектування, де взаємодія між кожної одиниці чітко визначені. У самому справі, ви не зможете виконати інтеграційне тестування без цієї інформації.
  • Переконайтеся, що у вас є надійний управління конфігурацією програмного забезпечення системи на місці. Або ж, ви будете мати важкий час відстеження правильної версії кожної одиниці, особливо якщо число одиниць, які будуть інтегровані величезний.
  • Переконайтеся, що кожна одиниця першого протестовані, перш ніж почати інтеграційне тестування.
  • Наскільки це можливо, автоматизувати тести, особливо при використанні зверху вниз або знизу вгору, так як регресивне тестування важливо кожен раз, коли ви інтегрувати єдине ціле, і ручне регресивне тестування може бути неефективним.

Метод[ред.ред. код]

Будь-який метод з тестування чорного ящика, тестування методом білого ящика.Також може бути використаний метод сірого ящика Як правило, метод залежить від вашого визначення «одиниці».

Завдання[ред.ред. код]

1. Integration Test Plan

1.1 Prepare

1.2 Review

1.3 Rework

1.4 Baseline

2. Integration Test Cases/Scripts

2.1 Prepare

2.2 Review

2.3 Rework

2.4 Baseline

3. Integration Test

3.1 Perform

Коли інтеграційне тестування виконується? - Інтеграційне тестування проводиться після модульного тестування і, перш ніж системне тестування.

Хто проводить інтеграційне тестування? - Або Самі розробники або незалежні тестери виконують інтеграційне тестування.

Див. також[ред.ред. код]