Жодна розробка програмного забезпечення не обходиться без тестування виконуваного коду. Фактично, на це йде половина всього часу, витраченого на розробку, і більше половини вартості проекту. Однак це невід`ємна частина процесу створення нових додатків, програм, систем.
Інтеграційне тестування як частина великої роботи
Один із способів контролю якості програмного забезпечення - інтеграційне тестування, на вхід якого подаються окремо взяті модулі, протестовані на попередньому етапі. На відміну від модульного варіанту, в ході якого виявляються помилки, локалізовані в кожній окремо взятій функції або класі, інтеграційне тестування - це пошук дефектів, пов`язаних з реалізацією взаємодії між окремими частинами створюваного продукту. Інтеграційний функціональне тестування використовує метод «білого ящика», тобто інженеру за якістю доступні і відомі тексти кожного окремого модуля, а також принципи взаємодії між ними.
Методи збирання модулів
Монолітний метод означає, що всі модулі, які в майбутньому будуть піддані інтеграційного тестування, збираються воєдино одночасно. Майже напевно виникають ситуації, коли частина тестованого комплексу ще не готова.
В такому випадку її замінюють додатково розробленими "заглушками", або драйверами.
Поряд з монолітним методом виділяють інкрементальний (його ще називають покроковим), так як обсяг тестованого коду нарощується поступово, даючи локалізувати ділянки з дефектами у взаємозв`язках між окремими частинами.
Інкрементальний метод включає в себе два способи додавання модулів:
- зверху-вниз або висхідний,
- знизу-вгору - спадний.
Особливості монолітного і інкрементального тестування
Головний недолік монолітного виду збірки - велика кількість часу і трудовитрат йде на імітацію відсутніх частин тестованого комплексу. Здавалося б, заглушки - досить зручний інструмент тестування, однак виникають ситуації, коли в процесі доводиться створювати заново імітаційні частини програми. Наприклад, в разі зміни складу тестованих модулів. Крім того, ефективність пошуку дефектів не така висока, коли робота ведеться не з реальним продуктом, а лише з фіктивним компонентом. Цей же недолік супроводжує і инкрементальное тестування з висхідним способом складання.
У той же час одним з недоліків покрокового методу є необхідність організації і створення середовища для виконання модулів в заданій послідовності. А також практично неможлива паралельна розробка верхніх і нижніх рівнів.
Звичайно ж, обидва способи збирання, монолітний і інкрементальний, мають не тільки недоліки, але й гідності. У першому випадку з`являються відмінні можливості для паралельної розробки всіх класів і функцій, що беруть участь в тестуванні, як на початковому етапі, так і після доопрацювання. Покроковий же метод менш трудовитрат: модулі приєднуються поступово, і так само поступово виявляються помилки і дефекти. Це, як відомо, дозволяє скоротити час на пошук таких.
Переваги проведення інтеграційного тестування
На цьому етапі проводиться колосальна робота перевірки взаємозв`язків всіх рівнів, без чого, звичайно ж, неможливо подальше тестування.
Інтеграційне тестування програмного забезпечення має ряд переваг:
- перевірка інтерфейсу взаємодії між окремими модулями програми;
- контроль взаємозв`язків тестованого комплексу зі сторонніми програмними рішеннями;
- тестування роботи зовнішніх компонентів рішення;
- контроль відповідності документації по проекту в частині взаємодії окремих модулів.
виправлення дефектів
Інтеграційне тестування завершено, однак це ще не все. Знайдені помилки фіксуються і відправляються розробнику для виправлення, після чого процес починається заново.
По-перше, необхідно перевірити, чи були усунені виявлені дефекти. По-друге, під час зміни вихідного коду могли виникнути нові помилки в роботі програми і взаємодії зі стороннім ПЗ.
Хоча в даний час і існує велика кількість методів контролю якості, як і раніше важливу роль відіграє інтеграційне тестування. Приклад такого виду перевірки може наочно продемонструвати «вузькі» місця при розробці програмного забезпечення і документації.
Автоматизація тестування
Залежно від обсягу вихідного набору даних і предметної області розробки може вставати проблема часу тестування і трудомісткості заходи в цілому.
Для найбільш ефективної перевірки розробки необхідно використовувати величезну кількість вхідних даних і умов, з чим "вручну" впоратися неможливо. Для вирішення цієї проблеми використовується автоматизація тестування. Як і інші види, інтеграційне тестування також може бути автоматизовано. Це дозволить скоротити час розробки в цілому, а також підвищить ефективність процесу виявлення помилок.
Однак автоматизація тестування не може повністю замінити працю інженера з якості, а лише доповнити його.
Отже, інтеграційне тестування - це невід`ємна частина розробки будь-якого програмного забезпечення і один з етапів всього процесу перевірки якості продукту. Як і будь-який метод, він має ряд переваг і недоліків, але без його застосування стає неможливою якісна розробка програмного забезпечення.