Jesteśmy dużym zespołem (10-12 programistów i 4 qa) pracującym nad wieloma projektami z tym samym repozytorium git. Jest to serwis internetowy oparty na bootowaniu wiosennym. Szukamy dobrej strategii rozgałęziania i wdrażania git. mamy również zespół qa, który zapewnia, że nasze funkcje działają zgodnie z oczekiwaniami (w pewnym stopniu wolne od błędów).
Po przeczytaniu kilku artykułów mam wrażenie, że model Gitflow będzie dla nas dobrze działał. Oto moje pytanie.
Gdzie nasz zespół kontroli jakości powinien przetestować nasze funkcje?
- powinni przetestować gałąź funkcji, w której będą zgłaszać błędy, a programista to naprawi, a gdy przejdzie test kontroli jakości, łączymy się, aby się rozwijać. a QA ponownie przeprowadzi testy na liczbach całkowitych w gałęzi developerskiej.
- czy powinniśmy połączyć wszystkie funkcje (po testach jednostkowych i testach podstawowych od dewelopera), aby rozwinąć gałąź i pozwolić stamtąd test qa. poprawki i testy będą się również pojawiać w fazie rozwoju.
Jestem ciekawy, jakie podejście działało dobrze dla innych.
Świetne pytanie. Nie wydaje mi się, żeby istniała „oficjalna” poprawna odpowiedź na to pytanie. To zależy od tego, jak szybko możesz przetestować.
Podstawowym problemem jest to, że każde scalenie, kompilacja, a nawet wdrożenie może potencjalnie spowodować błąd. Im dalej w górę łańcucha testujesz, tym wcześniej wiesz o błędach, ale także im więcej razy musisz ponownie testować.
Aby mieć pewność, że przetestowałeś oprogramowanie, z którego korzystają klienci, naprawdę musisz przetestować wdrożenie na żywo, zanim ruch klientów (przy założeniu aplikacji internetowej) zostanie skierowany na te serwery za pomocą niebieskiego / zielonego wzorca wdrażania.
Ale oczywiście jest to trochę za późno, aby po raz pierwszy sprawdzić kod w ogóle!
Jeśli przetestujesz gałąź wydania w środowisku qa env, możesz zaryzykować i zredukować testy na żywo tylko do testów dymu. i zastosuj poprawki błędów w gałęzi wydania. Ale nie możesz ocenić, czy funkcja jest kompletna przed utworzeniem wydania
Jeśli przetestujesz programowanie, otrzymasz mini gałęzie z funkcją naprawy błędów. Funkcje są nadal scalane przed ich oceną, a funkcje dla następnej wersji mogą kolidować z testowaniem bieżącej wersji.
Jeśli testujesz gałęzie Feature, potrzebujesz miliona środowisk i musisz uporządkować kolejność scalania i testować podpisy. plus dużo ponownych testów.
Z mojego doświadczenia polecam:
szybki test gałęzi funkcji na maszynie deweloperskiej. po prostu upewnij się, że jego funkcja jest kompletna, a testerzy / deweloperzy są zgodni co do wymagań.
Codzienne testy / testy automatyczne w oddziale deweloperskim wdrożonym na serwerach qa. Pozwala przetestować wszystkie funkcje razem i powiedzieć, kiedy będziesz gotowy do wydania.
Jeśli wszystkie funkcje są włączone, ale testy nie zostały zakończone. np. sprint jest zakończony. utworzyć gałąź wydania i wdrożyć w drugim środowisku qa. Pozwala to na poprawianie / testowanie błędów w wersji 1, aby kontynuować w tym samym czasie, co funkcje w wersji 2.
(wielbiciele Scrum powiedzą, że w sprincie 2 powinieneś umieszczać tylko poprawki błędów, ale bądźmy praktyczni)
Testy dymu podczas wdrażania zielonego / niebieskiego na żywo przed przełączeniem. Są to bardzo ważne, ponieważ wychwytujesz błędy konfiguracji / środowiska, których nikt tak naprawdę nie szuka podczas programowania.
źródło
Zgadzam się z Thomasem Owensem. Prawdopodobnie powinieneś testować dwa razy. Raz w gałęzi funkcji przed jej scaleniem i raz w głównej gałęzi przed wydaniem.
Tak naprawdę uwielbiam ten przepływ pracy, że stworzyłem narzędzie Topico , które automatycznie buduje i uruchamia wersje jednorazowe aplikacji dla każdego żądania ściągania, każde z własnym unikalnym testowym adresem URL. Pozwala to zespołowi kontroli jakości na oddzielne testowanie gałęzi funkcji bez potrzeby tworzenia jakiegoś dynamicznego środowiska testowego skonfigurowanego na ich własnym komputerze.
Takie podejście oznacza, że tylko kod, który przeszedł testy na ludziach, kiedykolwiek dotrze do głównej gałęzi, zachowując w ten sposób jej integralność.
Wprowadziłem to w kilku firmach i bardzo pomogło to naszym cyklom wydawniczym. Jesteśmy teraz w stanie dokładnie zaplanować wydania i jesteśmy znacznie lepsi w zrozumieniu, co może sprawić, że pojawi się w następnym wydaniu i co będzie musiało czekać na przyszłe wydanie. To po prostu daje więcej pewności siebie.
źródło