Analiza przypadku
Nikt tego za was nie przetestuje
W latach 1997–2020 stosunek liczby programistów do dedykowanych testerów w Microsofcie, Amazonie i Google zmienił się z mniej więcej 1:1 na mniej więcej 100:1, a praca testerska nie zniknęła razem z testerami.
- Kto to opublikował
- The Pragmatic Engineer (Gergely Orosz), Carlos Arguelles (Medium, publikacja własna), Whittaker, Arbon i Carollo (Addison-Wesley) oraz GDS (blog GOV.UK). Wszędzie wypowiadają się znane z nazwiska osoby z wewnątrz.
- Kiedy
- Wydarzenia z lat 1997–2021; relacje opublikowane w latach 2011–2021
- Skala
- Amazon urósł z 3000 do 50 000 SDE w latach 2009–2020; GOV.UK obsługuje 70 aplikacji; badane proporcje od 1:1 do 100:1
- Wynik
- Proporcje dedykowanych testerów od 1:1 (Microsoft, 1997) do 100:1 (Amazon, 2020); aplikacja Whitehall w GOV.UK osiągnęła 96,7% automatycznego pokrycia kodu
Formalna cezura: 2014
W lipcu 2014 roku, w ramach zwolnień 18 000 osób, Microsoft formalnie zlikwidował stanowisko Software Development Engineer in Test (SDET). Gergely Orosz, piszący jako The Pragmatic Engineer, opisał, jak wyglądało to, co istniało wcześniej.
Od połowy lat dziewięćdziesiątych do 2014 roku Microsoft utrzymywał w większości zespołów produktowych proporcję około 2:1 między Software Development Engineers a SDET. Orosz podaje konkretny przykład: zespół Skype na Xbox One w 2012 roku miał 12 SDE i 6 SDET, a do tego 2 kierowników projektu, 1 kierownika inżynierii i 1 lidera SDET. Testowanie zajmowało określoną część etatów. Jego koszt był widoczny w schemacie organizacyjnym.
Brian Harry, Technical Fellow w Microsofcie, opisał zmianę, która nastąpiła potem:
„Połączyliśmy organizacje deweloperską i testerską w jedną, wspólną organizację »inżynierską«. W większości wyeliminowaliśmy rozróżnienie między ludźmi, którzy piszą kod, a ludźmi, którzy testują”.
Harry jako efekty wymienił lepszą jakość, zwinność i zadowolenie inżynierów.
Ważne zastrzeżenie: zwolnienia z 2014 roku nie były przede wszystkim decyzją dotyczącą SDET. Z 18 000 zlikwidowanych stanowisk około 12 500 przypisano przejęciu Nokii, które Microsoft sfinalizował w tym roku. Likwidacja SDET i zwolnienia po Nokii nastąpiły jednocześnie. Oddzielenie strukturalnego efektu usunięcia dedykowanego testowania od zamieszania związanego z wchłonięciem dużego przejęcia jest naprawdę trudne i każdy, kto przytacza przypadek Microsoftu jako argument za dedykowanym testowaniem lub przeciw niemu, powinien uwzględnić ten czynnik zakłócający.
Liczby: proporcja w Amazonie
Carlos Arguelles, Senior Principal Engineer w Google, który pracował w Microsofcie w latach 1997–2009 i w Amazonie w latach 2009–2020, opublikował w 2021 roku osobistą relację o tym, jak w trakcie jego kariery zmieniał się stosunek programistów do testerów. publikacja własna To wspomnienia jednej, znanej z nazwiska osoby z wewnątrz, a nie zweryfikowane dane firmowe, i liczby są jego.
Według jego relacji proporcja w Microsofcie w 1997 roku wynosiła mniej więcej 1:1, na podstawie jego bezpośredniego doświadczenia. W Amazonie w 2009 roku było około 300 SDET i 3000 SDE: proporcja 10:1. Do 2020 roku, gdy odchodził z Amazona, liczby zmieniły się na około 600 SDET i 50 000 SDE: bliżej 100:1.
Przydatna jest tu arytmetyka. Liczba etatów testerskich w ciągu tych jedenastu lat mniej więcej się podwoiła. Liczba inżynierów wzrosła mniej więcej szesnastokrotnie. Dedykowane testowanie się nie skurczyło; organizacja inżynierska rosła wokół niego tak szybko, że proporcja zmieniła się o rząd wielkości. Arguelles nie rozstrzyga, czy była to świadoma strategia rekrutacyjna, czy skutek tego, które zespoły rosły najszybciej. Relacja odnotowuje wynik: proporcję, przy której pojedynczy SDET odpowiadał za znacznie więcej inżynierów niż wcześniej.
Wyjątek, który zawsze tak wyglądał
Sytuacja Google jest inna i tę różnicę warto nazwać. W książce How Google Tests Software (Whittaker, Arbon i Carollo, Addison-Wesley, 2012) przedmowa odnotowuje, że gdy współautor, dyrektor ds. inżynierii, dołączył w 2001 roku, było tam „około 200 programistów i tylko 3 testerów”. Larry Page ujmował to, według tej samej książki, tak: „Niedobór przynosi jasność”.
To zdanie łatwo zapamiętać. Wygodnie też w nie wierzyć, jeśli nie zatrudnia się testerów. Proporcja 200:3 pochodzi z 2001 roku, sprzed głównego okresu wzrostu Google. W 2011 roku Google Testing Blog opisywał wewnętrzne narzędzia, funkcję produktywności inżynierskiej i platformę zbudowaną przez minioną dekadę po to, by testowanie prowadzone przez programistów było wykonalne w dużej skali. Niedoborem zarządzano, a nie po prostu go zaakceptowano. Jasność wzięła się z budowania systemów, które pozwalały niewielkiej liczbie testerów wywierać efekt na dużą skalę, a nie z założenia, że inżynierowie przejmą tę pracę bez wsparcia.
To zdanie warto zarówno cytować, jak i kwestionować. Żadne z tych odczytań samo nie wystarcza.
Praca, która wpadła między role
W relacjach z Microsoftu, Amazona i Google wzorzec jest ten sam. Liczba dedykowanych testerów spadała albo stała w miejscu, podczas gdy inżynierów przybywało. Praca testerska przeszła na inżynierów zatrudnionych jako inżynierowie, a nie testerzy, którzy mają backlog funkcjonalności do dostarczenia.
Przy 10:1 jeden SDET obsługujący dziesięciu inżynierów nadal może mieć bezpośredni wpływ: pisać testy, przeglądać pokrycie, wyłapywać to, co się prześlizguje. Przy 100:1 nie jest to możliwe. Ta funkcja skaluje się tylko przez infrastrukturę: standardy pokrycia, praktyki pisania testów wbudowane w code review, bramki wdrożeniowe powiązane z sensownymi sygnałami i inżynierów nauczonych, jak dobrze wykonywać pracę testerską. Nic z tego nie złoży się samo. Ktoś musi zostać przydzielony do zbudowania tego, a dostarczanie funkcjonalności domyślnie nie zostawia na to miejsca.
To koszt, który łączy relacje Arguellesa i Microsoftu, choć żadna nie nazywa go wprost. Ta zamiana jest wykonalna. Organizacje, którym się udało, najpierw zbudowały maszynerię albo budowały ją równolegle. Te, które tego nie zrobiły, polegają na tych inżynierach, którym w danym sprincie najbardziej zależy. To presja na pojedyncze osoby, a nie system.
Jak wygląda świadome zastępstwo
W październiku 2021 roku brytyjski Government Digital Service opisał, jak podszedł do pokrycia testami GOV.UK: 70 aplikacji i komponentów, zbudowanych głównie w Ruby on Rails. Ustalono standard 95% automatycznego pokrycia kodu po stronie serwera. Aplikacja Whitehall osiągnęła 96,7%.
Szczegół, który odróżnia ich relację od pozostałych, to uzasadnienie rezygnacji z ręcznych sprawdzeń przy wdrożeniach. Ich tekst zauważa, że ręczne sprawdzenia mają konkretny słaby punkt: wiedza o tym, co sprawdzać, może całkowicie zniknąć, gdy odchodzą ludzie, którzy ją mają. Ich odpowiedzią nie była nadzieja, że wiedza przetrwa. Zastąpili ręczny proces jawnym standardem i udokumentowali uzasadnienie tej zmiany.
GOV.UK potraktował usunięcie ręcznego sprawdzenia jako coś, co wymaga świadomego zastępstwa, a nie jako lukę, która sama się wypełni. To niewielka różnica. To także część, którą większość relacji pozostawia niedopowiedzianą.
Co z tego wynika
Żadna z tych relacji, ani wszystkie razem, nie dowodzi, że likwidacja dedykowanych ról testerskich była błędem. Microsoft, Amazon i Google nadal dostarczają oprogramowanie na dużą skalę. Teza jest tu węższa.
Przejście od dedykowanego testera do testowania przez inżynierów jest wykonalne, ale ma koszt, który regularnie jest niedofinansowany. Tym kosztem są narzędzia i szkolenia. Przy 10:1 doświadczony SDET może mieć realny wpływ samą swoją obecnością. Przy 100:1 ta funkcja skaluje się tylko przez infrastrukturę: standardy, narzędzia, bramki pokrycia i inżynierów nauczonych testowania. Bez tej infrastruktury pokrycie testami zależy od sumienności poszczególnych osób. To nie strategia; to nadzieja, że dobre nawyki przetrwają bez uczenia i wzmacniania, a ona nie przetrwa rotacji pracowników.
Obserwację GOV.UK warto powiedzieć wprost, bo to część, którą większość organizacji pomija. Kto usuwa ręczne sprawdzenie, jest winien organizacji świadome zastępstwo. Wiedza nie przenosi się sama. Jeśli usuwacie osobę, która wie, co sprawdzać, musicie zapisać tę wiedzę gdzie indziej, zanim to zrobicie, a nie potem. Organizacje, którym udała się zmiana proporcji, traktowały to jako problem projektowy. Te, którym się nie udała, polegają teraz na tym, kto akurat pamięta.
Jeśli wasza proporcja się przesunęła, a nic nie zbudowano, by to udźwignąć, pokrycie testami zależy teraz od sumienności poszczególnych osób, a to nie jest strategia. To problem szkoleniowy, zanim stanie się problemem narzędziowym, i właśnie na takie luki QualityLabs przygotowuje szkolenia.
Źródła
- The Pragmatic Engineer (Gergely Orosz): “How Microsoft Does Quality Assurance”. Relacja dziennikarska o strukturze SDET w Microsofcie i likwidacji tej roli w 2014 roku. Orosz jest byłym inżynierem Microsoftu; relacja opiera się na publicznych wypowiedziach i znanych z nazwiska źródłach, w tym Brianie Harrym.
- Carlos Arguelles: “The paradigm shifts going from 1:1 to 10:1 to 100:1 dev:test ratio” (Medium, 31 sierpnia 2021). Osobista relacja opublikowana samodzielnie przez znaną z nazwiska osobę z wewnątrz (Senior Principal Engineer w Google; wcześniej Microsoft i Amazon). Liczby to jego wspomnienia, a nie zweryfikowane dane.
- Google Testing Blog: “How Google Tests Software” (2011). Przegląd wewnętrznej funkcji inżynierii testów w Google i jej narzędzi.
- James A. Whittaker, Jason Arbon i Jeff Carollo, How Google Tests Software (Addison-Wesley, 2012). Źródło liczby 200 programistów / 3 testerów (2001) i cytatu Larry’ego Page’a „Scarcity brings clarity”. Te liczby pochodzą sprzed głównego okresu wzrostu Google.
- GDS: “A new standard of testing for GOV.UK” (Ben Thorner i Peter Hartshorn, 8 października 2021). Opublikowana relacja o standardzie 95% pokrycia w GOV.UK i uzasadnieniu rezygnacji z ręcznych sprawdzeń przy wdrożeniach.