Pracuję w zespole zarządzania wydaniami w bardzo dużej firmie internetowej. Stosujemy zasadniczo proces opisany powyżej i celowo wybraliśmy ten proces. W naszej metodologii etapowanie służy jako mechanizm rozgałęziający dla końcowego poziomu testowania w produkcji.
Oczywiście chcesz przeprowadzić wszystkie testy przed rozpoczęciem produkcji, ale w dużym, złożonym środowisku z dużą liczbą użytkowników jest to bardzo trudny cel. W szczególności właściwie załadowanie oprogramowania testowego w ramach kontroli jakości jest praktycznie niemożliwe. Testowanie funkcjonalne jest o wiele łatwiejsze do zautomatyzowania niż testowanie obciążenia. Gdy masz tysiące użytkowników uderzających na twoje serwery, sprawy zawodzą w dziwny i trudny do przewidzenia sposób.
Oto co robimy:
- Rozwój
- obejmuje ciągłą integrację i automatyczne testowanie
- testowanie wersji
- moja grupa analizuje samą wersję
- przeglądanie dzienników instalacji
- testowanie wycofania
- QA
- testy akceptacyjne użytkownika
W tym momencie rozgałęziamy się między inscenizacją a produkcją. Do wypuszczania używamy modelu pociągu, a nowy pociąg rozpoczyna się co kilka tygodni. Nawet ponumerowane pociągi jadą na serwery pomostowe (które są w produkcji). Pociągi o nieparzystych numerach nie.
Pomiędzy parzystymi pociągami programiści mają możliwość wypychania indywidualnych zmian na serwery pomostowe ( oczywiście po przetestowaniu tych zmian przez QA). Pozwala im to sprawdzić, czy ich oprogramowanie działa zgodnie z oczekiwaniami w rzeczywistym środowisku produkcyjnym. Jest to na ogół zarezerwowane dla komponentów, które są uważane za wyższe ryzyko, nie popychamy każdego małego elementu do inscenizacji.
Następnie wszyscy rozumieją, że kiedy rozpocznie się następny parzysty pociąg, usunie to, co jest na serwerach pomostowych i ustawi je z powrotem do linii bazowej pociągu. Deweloperzy albo upewniają się, że ich zmiany dotarły do pociągu, albo decydują, że nie są jeszcze gotowi do ogólnego użytku, w którym to przypadku zmiany zostaną po prostu usunięte na serwerach pomostowych.
Podsumowując, krótką odpowiedzią (przynajmniej dla nas) jest to, że niemożliwe jest całkowite przetestowanie złożonych systemów w kontroli jakości. Inscenizacja zapewnia bezpieczny sposób wykonywania ograniczonych testów produkcyjnych.
W powiązanej notatce oto moje slajdy z prezentacji, którą właśnie przedstawiłem na temat tego, jak działa nasz proces wydawania.