Перш ніж відповісти на ваше запитання: Так, вони, безумовно, є частиною постійної інтеграції, якщо ви мене запитуєте. Але я думаю, нам потрібно уточнити, що таке інтеграційні тести.
Мартін Фаулер говорив про безперервну доставку як про спосіб автоматизації повного процесу збирання для швидкого розгортання. Це вимагає від розробників швидкого зворотного зв’язку, який надає процес постійної інтеграції. Тож він визначає етапи, через які збирання має пройти :
- компіляція
- ретельне тестування
- розгортання
Він стверджує, що складання зобов'язань не повинно зайняти більше 10 хвилин, через швидкий зворотний зв'язок для розробників.
Ось як я бачу речі: На першому кроці знайдіть останню версію і будуйте її. Якщо це успішно, ви запускаєте тести своїх одиниць, щоб з’ясувати, чи працюють ваші класи / групи класів відповідно до визначених і очікуваних.
Коли це успішно, ви переходите до тестової частини інтеграції. Тут ви перевіряєте взаємодію щойно успішно перевірених підрозділів. Це передбачає живлення одиниць введенням та перегляд їх стану / взаємодії / виводу. Пам'ятайте, що ми все ще перебуваємо на складанні комітетів, тому хочемо, щоб це також було швидко. Таким чином, взаємодія з файловою системою, базою даних, мережевими одноранговими програмами тощо повинна бути налаштована для швидкого виконання. Мартін Фаулер також натякає на використання баз даних у пам'яті, якщо вони потрібні, просто для швидкого виконання на сервері CI.
Після того, як ви переконалися, що підрозділи працюють і взаємодіють у міру необхідності, зазвичай потрібно дізнатися про тестове покриття (просто тестування невеликої підсистеми зазвичай просто недостатньо) і зробити тестовані артефакти доступними для функціонального тестування / QA / розгортання ( прочитайте: ретельне тестування), якщо ви вважаєте, що тести покривають достатню кількість вашої програми. Тільки тоді ви надаєте тестове середовище, яке відображає виробниче середовище, на яке ви орієнтовані, і запускаєте тести, що включають реальну базу даних, реальні файли, реальних мережевих аналогів тощо.
Зрештою, інтеграційні тести стосуються змін коду. Ви хочете переконатися, що внесені вами зміни не порушують поточну систему, тобто вони добре інтегруються. Щоб дізнатися, чи є вони, вам потрібно переконатися, що вони правильно поводяться в собі, потім, якщо вони правильно взаємодіють зі своїми залежностями та чи були вони взагалі перевірені. Ви можете бути впевнені у своїй системі після того, як пройшли всі ці тести.
Якщо на пізніх етапах виявляться проблеми з вашою програмою (наприклад, коли ваша база даних повертає певне значення, мережеве з'єднання припиниться), ви повинні спробувати вимкнути ці тести в тестах інтеграції. Збірка комісій, швидше за все, швидша, ніж QA;)