Я работаю в команде по управлению релизами в очень крупной интернет-компании. Мы в основном используем процесс, который вы описали выше, и мы выбрали этот процесс специально. В нашей методологии постановка служит механизмом разветвления для окончательного уровня тестирования в производстве.
Очевидно, что вы хотите выполнить все тестирование перед началом работы, но в большой сложной среде с большим количеством пользователей это очень трудная цель. В частности, практически невозможно адекватно загрузить тестовое программное обеспечение в QA. Функциональное тестирование намного проще автоматизировать, чем нагрузочное тестирование. Когда на ваши серверы попадают многие тысячи пользователей, все происходит странным образом и сложно предсказать.
Итак, вот что мы делаем:
- развитие
- включает в себя непрерывную интеграцию и автоматизированное тестирование
- тестирование релиза
- моя группа анализирует сам релиз
- просмотр журналов установки
- откат тестирования
- контроль качества
- приемочное тестирование пользователя
Это та точка, в которой мы разветвляемся между постановкой и производством. Мы используем модель поезда для выпуска, с новым поездом, начинающимся каждые несколько недель. Даже пронумерованные поезда идут на промежуточные серверы (которые находятся в производстве). Нечетных поездов нет.
Между чередующимися поездами разработчики могут вносить отдельные изменения в промежуточные серверы ( конечно, после того, как эти изменения были проверены QA). Это позволяет им проверить, что их программное обеспечение работает так, как ожидалось, в реальной производственной среде. Обычно это зарезервировано для компонентов, которые считаются более рискованными, мы не подталкиваем каждую маленькую деталь к постановке.
Затем все понимают, что, когда начнется следующий четный поезд, он уничтожит все, что находится на промежуточных серверах, и вернет их к исходной линии поезда. Разработчики либо гарантируют, что их изменения попали в поезд, либо решат, что они еще не готовы к общему использованию, и в этом случае эти изменения просто стираются на промежуточных серверах.
Подводя итог, можно сказать, что короткий ответ (по крайней мере для нас) состоит в том, что невозможно полностью протестировать сложные системы в QA. Постановка обеспечивает безопасный способ проведения ограниченного производственного тестирования.
На соответствующей заметке, вот мои слайды из презентации, которую я только что дал, о том, как работает наш процесс выпуска.