Наша команда разработчиков использует стратегию ветвления GitFlow, и это было здорово!
Недавно мы наняли пару тестеров для улучшения качества нашего программного обеспечения. Идея состоит в том, что каждая функция должна быть проверена /QA с помощью тестера.
В прошлом разработчики работают над функциями в отдельных ветвях функций и после этого сбрасывают их обратно в ветвь develop
. Разработчик сам проверит свою работу в этой ветке feature
. Теперь с тестировщиками мы начинаем задавать этот вопрос
На какой ветке тестер должен тестировать новые функции?
Очевидно, есть два варианта:
- в отдельной ветки функции
- на ветке
develop
Тестирование в области разработки
Изначально мы полагали, что это верный путь, потому что:
- Эта функция протестирована со всеми другими функциями, объединенными с ветвью
develop
с момента ее создания. - Любые конфликты могут быть обнаружены раньше, чем позже
- Это облегчает работу с тестером, он имеет дело только с одной ветвью (
develop
) в любое время. Ему не нужно спрашивать у разработчика, по какой ветке есть какая функция (ветки функций - это личные ветки, управляемые исключительно и свободно соответствующими разработчиками).
Самые большие проблемы с этим:
-
Филиал
develop
загрязнен ошибками.Когда тестер обнаруживает ошибки или конфликты, он сообщает их разработчику, который исправляет проблему в ветке разработки (ветвь функции была оставлена после объединения), и после этого может потребоваться больше исправлений. Множественная подпоследовательность совершает или объединяется (если ветвь снова отлажена с
develop
ветвью снова для исправления ошибок) делает возможным откатывание функции из веткиdevelop
очень сложно, если это возможно. Есть несколько функций, которые объединяются и фиксируются на веткеdevelop
в разное время. Это создает большую проблему, когда мы хотим создать выпуск только с некоторыми функциями в веткеdevelop
Тестирование по ветке функций
Итак, мы снова подумали и решили протестировать функции на ветвях функций. Перед тем, как мы проверим, мы сменим изменения из ветки develop
на ветвь функции (догоним с ветвью develop
). Это хорошо:
- Вы все еще проверяете функцию с другими функциями в основном
- Дальнейшая разработка (например, исправление ошибок, разрешение конфликта) не будет загрязнять ветвь
develop
; - Вы можете легко решить не выпускать эту функцию до тех пор, пока она не будет полностью протестирована и одобрена;
Однако существуют некоторые недостатки
- Тестер должен выполнить слияние кода, и если есть какой-либо конфликт (очень вероятно), он должен обратиться за помощью к разработчику. Наши тестеры специализируются на тестировании и не способны кодировать.
- функция может быть протестирована без наличия другой новой функции. например Функции A и B одновременно тестируются, две функции не знают друг о друге, потому что ни одна из них не была объединена с ветвью
develop
. Это означает, что вам придется снова протестировать веткуdevelop
, когда обе функции будут объединены в ветку разработки в любом случае. И вы должны помнить, чтобы проверить это в будущем. - Если функции A и B проверяются и утверждаются, но при объединении конфликт идентифицируется, обе разработчики для обеих функций считают, что это не его собственная ошибка/работа, потому что его функция проходит мимо теста. В общении есть дополнительные накладные расходы, и иногда тот, кто разрешает конфликт, разочаровывается.
Выше наша история. Имея ограниченный ресурс, я бы хотел избежать тестирования всего повсюду. Мы все еще ищем лучший способ справиться с этим. Я хотел бы услышать, как другие команды справляются с такими ситуациями.