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