Nasz zespół programistów korzysta ze strategii rozgałęziania GitFlow i było świetnie!
Niedawno zatrudniliśmy kilku testerów, aby poprawić jakość naszego oprogramowania. Chodzi o to, że każda funkcja powinna zostać przetestowana / QA przez testera.
W przeszłości programiści pracowali nad funkcjami w oddzielnych gałęziach funkcji i po zakończeniu scalali je z powrotem do develop
gałęzi. Deweloper sam przetestuje swoją pracę w tej feature
gałęzi. Teraz z testerami zaczynamy zadawać to pytanie
W której gałęzi tester powinien testować nowe funkcje?
Oczywiście są dwie możliwości:
- na poszczególnych gałęziach funkcji
- na
develop
gałęzi
Testowanie na gałęzi Develop
Początkowo wierzyliśmy, że jest to pewna droga, ponieważ:
- Ta funkcja jest testowana ze wszystkimi innymi funkcjami połączonymi z
develop
gałęzią od momentu rozpoczęcia jej opracowywania. - Wszelkie konflikty można wykryć wcześniej niż później
- Ułatwia to pracę testera, ma on do czynienia przez
develop
cały czas tylko z jedną gałęzią ( ). Nie musi pytać dewelopera, która gałąź jest dla której funkcji (gałęzie funkcji to osobiste gałęzie zarządzane wyłącznie i swobodnie przez odpowiednich programistów)
Największe problemy z tym to:
develop
Oddział jest zanieczyszczona z robakami.Gdy tester znajdzie błędy lub konflikty, zgłasza je z powrotem do programisty, który naprawia problem w gałęzi deweloperskiej (gałąź funkcji została porzucona po scaleniu), a później może być wymaganych więcej poprawek. Wielokrotne zatwierdzanie lub scalanie podciągów (jeśli gałąź jest ponownie tworzona z
develop
gałęzi w celu naprawienia błędów) sprawia, że wycofanie funkcji zdevelop
gałęzi jest bardzo trudne, jeśli to możliwe. Istnieje wiele funkcji łączących się i naprawianych wdevelop
gałęzi w różnym czasie. Stwarza to duży problem, gdy chcemy utworzyć wydanie z tylko niektórymi funkcjami wdevelop
gałęzi
Testowanie na gałęzi funkcji
Więc pomyśleliśmy jeszcze raz i zdecydowaliśmy, że powinniśmy przetestować funkcje w gałęziach funkcji. Zanim przetestujemy, scalamy zmiany z develop
gałęzi do gałęzi funkcji (doganiamy develop
gałąź). To jest dobre:
- Nadal testujesz tę funkcję z innymi funkcjami w głównym nurcie
- Dalszy rozwój (np. Naprawa błędów, rozwiązywanie konfliktów) nie zanieczyszcza
develop
gałęzi; - Możesz łatwo zdecydować, aby nie udostępniać tej funkcji, dopóki nie zostanie w pełni przetestowana i zatwierdzona;
Istnieją jednak pewne wady
- Tester musi dokonać scalenia kodu, a jeśli wystąpi jakikolwiek konflikt (bardzo prawdopodobne), musi poprosić programistę o pomoc. Nasi testerzy specjalizują się w testowaniu i nie potrafią kodować.
- funkcja mogłaby zostać przetestowana bez istnienia innej nowej funkcji. Np. funkcja A i B są testowane w tym samym czasie, dwie funkcje nie są sobie znane, ponieważ żadna z nich nie została scalona z
develop
odgałęzieniem. Oznacza to, że będziesz musiał ponownie przetestować tędevelop
gałąź, gdy obie funkcje i tak zostaną scalone z gałęzią deweloperską. I musisz pamiętać, aby przetestować to w przyszłości. - Jeśli funkcja A i B są zarówno przetestowane, jak i zatwierdzone, ale po połączeniu zostanie zidentyfikowany konflikt, obaj programiści dla obu funkcji uważają, że nie jest to jego własna wina / zadanie, ponieważ jego gałąź funkcji przeszła test. Komunikacja wiąże się z dodatkowymi kosztami i czasami ten, kto rozwiązuje konflikt, jest sfrustrowany.
Powyżej znajduje się nasza historia. Mając ograniczone zasoby, chciałbym uniknąć testowania wszystkiego wszędzie. Nadal szukamy lepszego sposobu radzenia sobie z tym. Bardzo chciałbym usłyszeć, jak inne zespoły radzą sobie w tego typu sytuacjach.