Zwinny proces wdrażania oprogramowania. Gdzie testują kontrolę jakości i właściciele firm?

9

Ostatnio dużo czytałem na temat różnych procesów wdrażania aplikacji internetowych przy użyciu SVN lub GIT, z myślą o przeprojektowaniu tego, jak obecnie wdrażamy tam, gdzie pracuję.

Podobnie jak w przypadku wielu smaków Agile, zakłada się, że wszystko, co jest przeznaczone do opanowania lub pnia, jest gotowe do produkcji. Zarówno GitHub, jak i Etsy, http://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/, mówią, że działają na tej podstawie (chociaż Etsy faktycznie ma środowisko testowe).

Ten proces zakłada, że ​​wszystkie testy jednostkowe i testy CI zostały uruchomione. Testy uruchamiasz lokalnie i na CI, a następnie zatwierdzasz do trunkingu. SO, w tym momencie Twój kod jest poprawny technicznie .

Twój kod może być technicznie poprawny, ale testy użytkowników / funkcjonalne mogą odkryć więcej błędów, szczególnie jeśli chodzi o testy front-end.

Moje pytanie brzmi: Gdzie QA i właściciele firm testują wprowadzone przez Ciebie zmiany funkcji? Na lokalnym komputerze deweloperskim, zanim zaangażujesz się w magistralę, lub na maszynie kontroli jakości / pomostowej?

Jeśli masz maszynę pomostową, która znika z magistrali, i zakładasz, że cały kod przypisany do magistrali jest gotowy do produkcji ... eh .. to w którym momencie kod jest podpisany i dobrze jest rozpocząć produkcję zarówno od strony technicznej, jak i biznesowej perspektywiczny? Jeśli masz tylko jedną maszynę pomostową, wielu programistów i właśnie tam kod ma zostać poddany kontroli jakości, to jak możesz wdrożyć z magistrali, skoro wiele zmian programistów może oczekiwać na wypisanie się.

Chciałbym usłyszeć, jak inni podeszli do tego?

Bazza
źródło

Odpowiedzi:

6

Na lepsze lub gorsze zwykle robię to, gdy testowanie odbywa się w odniesieniu do bazy oddziałów, a podpisem biznesowym jest połączenie punktu kontrolnego z głównym wdrożeniem.

Widziałem to zarówno w przypadku programowania „głównego” z osobnym odgałęzieniem „wdrożonym”, jak i gałęzi „funkcji” programistycznej z głównym jako „wdrożonym”.

przepływ pracy wygląda następująco:

  • kodować coś
  • uruchom testy lokalne
  • zameldować się w działającym oddziale
  • (opcjonalnie) kompiluj serwer buduje testy ant
  • Kontrola jakości / testy biznesowe
  • poprawki błędów (pętla powrót na górę)
  • scal, aby wdrożyć gałąź
  • rozmieścić

Niektórzy ludzie pracują w jednym oddziale, ale jeśli masz zamiar przeprowadzić testy ręczne, które stają się trudne. Większość osób, z którymi się spotkałem, przyjmuje założenie, że wszystko można wdrożyć po zatwierdzeniu, które również działają z jednego łącza, robią coś małego lub mają OGROMNĄ liczbę automatycznych testów, LUB uważają, że „wdrożyli” w tej rozmowie być kompilacją na serwerze testowym, a proces kontroli jakości między serwerem testowym a produkcją jest obsługiwany osobno.

Rachunek
źródło
Dzięki Bill. Pracujemy w środowisku, w którym programiści stale zatwierdzają i wdrażają osobne elementy funkcjonalności witryny. Jeśli pracujesz nad gałęzią funkcji, po sprawdzeniu działającej gałęzi, gdzie widzisz, że przeprowadzane są testy jakości / biznesowe? Jeśli masz tylko jedną maszynę do kontroli jakości, do której programiści zatwierdzają gałęzie, wówczas realistycznie można przetestować tylko jedną funkcję naraz, chyba że masz witrynę i osobną instancję serwera aplikacji skonfigurowaną dla każdego programisty na maszynie do kontroli jakości, więc jego zmiany mogą być testowane w izolacji przed rozpoczęciem do pnia.
Bazza
z mojego doświadczenia wynika, że ​​zwykle nie stworzyliśmy osobnej gałęzi funkcji dla każdego dewelopera, bardziej podobnej do jednej dla każdej drużyny i skonfigurowaliśmy hosta qa dla każdego z nich, nawet jeśli była to tylko dodatkowa maszyna deweloperska.
Bill
Doceń komentarze. Dał mi kilka pomysłów.
Bazza
2

Przeprowadziliśmy automatyczne testy akceptacji w tej samej gałęzi funkcji. Kiedy tworzysz kandydata do wydania, obejmuje on zautomatyzowane testy, które przeprowadziłeś, aby sprawdzić, czy funkcja została zaliczona. Testujesz także kandydata do wydania. Kiedy wszystko mija, promujesz to, łącząc się z mistrzem.

Więcej o tym procesie tutaj:

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

Sprawdź także komentarze.

Mam nadzieję że to pomoże,

Adam

adymitruk
źródło
@Adam - Dzięki za to i link. Dyskusja tam była interesująca. Jedzenie do namysłu.
Bazza
0

Zasadniczo oczekiwanie na zatwierdzenie, zanim kod jest doskonały, zajmuje połowę czasu na przywrócenie zalet systemu kontroli wersji. (Bez większego opracowania, powiedziałbym, że jeśli nie zezwolono na wielokrotne zameldowanie do VCS, nie ma możliwości cofnięcia mojej własnej pracy!) Tak więc, jako praktykę, zawsze prosimy ludzi o pozostanie w odprawie (w ramach oddziału dla SVN lub mogą to być lokalne zatwierdzenia w przypadku GIT) tyle, ile chcą. W rzeczywistości im więcej, tym lepiej.

Jednak gdy nadejdzie punkt, w którym wszystko wydaje się być zrobione i przetestowane - nazywamy to wydaniem, a następnie łączy się z pniem. Zasadniczo, QA może certyfikować RC, biorąc świeżą kontrolę HEADw oddziale i jeśli on / ona jest w porządku, to samo łączy się z pniem.

Zasadniczo używamy koncepcji oddziałów zadań lub oddziałów prywatnych, aby ludzie mogli dokonywać meldunków tyle, ile potrzebują. Jednocześnie bagażnik jest stosunkowo wolny od zepsutych odpraw.

Dipan Mehta
źródło