Мы большая команда (10-12 разработчиков и 4 человека), работающие над несколькими проектами с одним и тем же git-репозиторием. Это бэкэнд-сервис на основе весенней загрузки. Мы ищем хорошую стратегию git для ветвления и развертывания. у нас также есть команда qa, которая гарантирует, что наши функции работают должным образом (в определенной степени без ошибок).
Прочитав несколько статей, я почувствовал, что модель Gitflow будет хорошо работать для нас. Здесь возникает мой вопрос.
Где наша команда QA должна проверить наши возможности?
- если они будут тестировать в ветви функций, где они будут поднимать ошибки, и разработчик исправит это, и как только он пройдет тест QA, мы объединяемся для разработки. и QA снова проведет тестирование на интеграцию в развивающейся отрасли.
- Должны ли мы объединить все функции (после модульных тестов и базового тестирования от разработчика), чтобы разработать ветку и дать оттуда тест qa. все исправления и тесты будут происходить и в разработке.
Мне любопытно услышать, какой подход хорошо сработал для других.
Отличный вопрос Я не думаю, что есть «официальный» правильный ответ на это. Это зависит от того, как быстро вы можете проверить.
Существенная проблема заключается в том, что каждое слияние, компиляция или даже развертывание потенциально может создавать ошибку. Чем дальше «цепочка», которую вы тестируете, тем быстрее вы узнаете об ошибках, но и тем больше раз вам придется проходить повторное тестирование.
Чтобы быть уверенным в том, что вы протестировали программное обеспечение, которое используют клиенты, вам действительно необходимо протестировать оперативное развертывание, прежде чем трафик клиентов (при условии веб-приложения) будет направлен на эти серверы по сине-зеленому шаблону развертывания.
Но очевидно, что уже немного поздно, чтобы впервые проверить код!
Если вы тестируете ветку релиза в qa env, тогда вы можете рискнуть и сократить живое тестирование только до дымовых тестов. и применить исправления ошибок к ветке релиза. Но вы не можете оценить, завершена ли функция, прежде чем создавать релиз
Если вы тестируете разработку, вы получаете мини-ветки с исправлениями ошибок. Функции все еще объединяются до их оценки, плюс функции для следующего выпуска могут столкнуться с тестированием текущего выпуска.
Если вы тестируете ветки Feature, вам нужен миллион сред и вы должны согласовать порядок слияний и тестовых подписей. плюс много повторного тестирования.
Из моего опыта я бы порекомендовал:
быстрый тест функциональной ветви на машине разработчика. Просто убедитесь, что его функции завершены, и тестировщики / разработчики согласны с тем, что означают требования.
Ежедневное тестирование / автоматизированное тестирование на ветке разработчика, развернутой на серверах qa. Позволяет протестировать все функции вместе и сказать, когда вы будете готовы к выпуску.
Если все функции включены, но тестирование еще не завершено. например, спринт завершен. создайте ветку релиза и разверните ее во второй среде. Это позволяет продолжить исправление ошибок / тестирование в выпуске 1 одновременно с функциями для выпуска 2.
(преданные Scrum скажут, что вы должны вносить только исправления ошибок в спринт 2, но давайте будем практичны)
Дымовые тесты на живом зеленом / синем развертывании перед переключением. Это очень важно, так как вы обнаружите ошибки конфигурации / среды, которые никто не ищет во время разработки.
источник
Я согласен с Томасом Оуэнсом. Вы, вероятно, должны тестировать дважды. Один раз в ветке функций до ее слияния и один раз в основной ветке перед выпуском.
На самом деле, мне очень нравится этот рабочий процесс, поэтому я создал инструмент Topico , который автоматически создает и запускает одноразовые версии вашего приложения для каждого запроса на выборку, каждый со своим уникальным URL-адресом для тестирования. Это позволяет вашей команде QA тестировать ветви функций изолированно, без необходимости создания какой-либо динамической среды тестирования, установленной на их собственной машине.
Этот подход будет означать, что только код, прошедший человеческое тестирование, когда-либо попадет в вашу основную ветку, поддерживая его целостность.
Я представил это в нескольких компаниях, и это очень помогло нашим циклам выпуска. Теперь мы можем точно планировать выпуски, и мы гораздо лучше понимаем, что, вероятно, попадет в следующий выпуск, и что придется ждать в будущем выпуске. Это просто дает вам больше уверенности.
источник