Jak obniżyć koszty testowania?

Jak obniżyć koszty testowania?
Jeśli pracujesz w dojrzałej organizacji, która chciałaby obniżyć swoje wydatki na prowadzenie testów, możesz to zrobić na wiele sposobów.

Wydatki ponoszone na testowanie to we współczesnych projektach w największym zakresie koszt pracy osoby wykonującej kontrolę oprogramowania. To, jak oszczędzić na testowaniu, zależy w dużej mierze od kontekstu projektowego oraz organizacyjnego. Oto kilka decyzji, które mogą obniżyć koszty testowania. Poniższe odnosimy do organizacji, które wykonują testy w sposób profesjonalny i szukają sposobu na optymalizację. 

Zwolnienie testerów

Zaczynamy tym dość kontrowersyjnym punktem, aby pokazać jedną z możliwości. Oczywiście redukcja pracowników zajmujących się testowaniem jest opcją, ale prowadzi bezpośrednio do zredukowania zadań związanych z kontrolą jakości. Mniej czasu i budżetu na kontrolę jakości to mniejsza świadomość jego obecnego stanu i większe ryzyko nieudanego wdrożenia.

Przerzucenie odpowiedzialności za testowanie na inne role projektowe

Zespół projektowy składa się z wielu ról, a jakość jest odpowiedzialnością wszystkich członków projektu. Dlaczego wszyscy oni nie mieliby wziąć na siebie, choć częściowo obowiązków weryfikacji produktu? Testujący analitycy, kontrolujący jakość właściciele produktu czy piszący testy programiści to odciążenie osób zajmujących się pełnoetatowo testowaniem. Teoretycznie większe zaangażowanie tych ról w testy to mniejsze zaangażowanie w ich własne zadania, ale to również miejsce na optymalizację wielu zadań w procesie produkcji oprogramowania. Przykładowo analityk ma szeroką perspektywę biznesową i może tworzyć ciekawsze scenariusze end 2 end, a programista piszący testy często musi zrozumieć szerszy kontekst działania danego modułu. Te perspektywy w kontroli jakości pozwalają zupełnie inaczej spojrzeć na to, co się buduje oraz dostarczyć produkt wyższej jakości.

Wczesne testowanie / shift left

Defekty wyłapane we wczesnych etapach produkcji oprogramowania to wyzerowanie kosztów ich poprawiania i zerowa ich propagacja na inne produkty. Czym wcześniej rozpocznie się weryfikacja, tym projekt poniesie niższe koszty w późniejszych etapach. Wynika to np. z tego, że przy wczesnym wprowadzeniu kontroli jakości sumaryczna liczba defektów jest mniejsza. Tester poświęca więc mniej czasu na raportowanie defektów, na retesty i na testy regresji. Może więc bardziej zaangażować się w inne zadania.

Testowanie na produkcji

W systemach o niższej krytyczności możemy przerzucić odpowiedzialność za testy i jakość na końcowego użytkownika. Można to przeprowadzić na dwa sposoby. Możemy zmusić / poprosić użytkowników o raportowanie defektów (które powinny być wychwycone przed wdrożeniem) albo skonstruować mechanizm monitorowania użycia oprogramowania i logować wyjątki pojawiające się w działaniu. Należy pamiętać, że diagnozowanie problemów produkcyjnych pozwala je naprawiać albo przywracać ostatnią stabilną wersję (roll back).

Zautomatyzowanie rzeczy powtarzalnych

Jeśli daną czynność w testowaniu wykonujemy wielokrotnie, to zawsze warto rozważyć jej automatyzację. Automatyzacja to nie tylko szansa na odciążenie nużącej pracy, ale również większa powtarzalność, większa częstotliwość wykonania, a co za tym idzie precyzyjniejsza kontrola jakości. 

Zainwestowanie w zapewnienie jakości (QA) zamiast w kontrolę jakości (QC)

Wbudowana w produkty software’owe jakość wynikająca z profesjonalnych praktyk wytwórczych pozwala na niższe koszty weryfikacji produktu. Przykładowo podejść TDD (ang. test driven developement) podwyższa koszty wytworzenie produktu, ale obniża koszty jego testowania. W założeniu kod w całości pokryty testami jednostkowymi będzie bardziej "odporny" na awarie. Inną formą QA jest też dobrze skonstruowany i dopasowany do organizacji proces wytwórczy, który potrafi wspomagać pracowników w produkcji oprogramowania. 

Outsourcing testów / kupienie usługi testowania

Utrzymanie własnego działu testów ma swoje zalety i wady. Do wad na pewno należy konieczność ciągłego opłacania testerów, nawet jeśli aktualnie nie mamy dla nich projektu. Rozwiązaniem jest zastosowanie jednego z wielu modelów outsourcowania testów. Projekty mogą kupować usługę testowania albo pojedynczych specjalistów, którzy wspomogą projekty w czasie prowadzenia testów. Można również wybrać jeszcze tańsze modele prowadzenia testów, jak np. platformy crowdsourcingowe, w których testy zlecane są tzw. "tłumowi" w Internecie. Często w takich modelach nie płaci się za przepracowane godziny, a za znalezione defekty.
 
Przedstawione opcje to tylko wycinek tego, co możemy zrobić, aby koszty testów zredukować. Nie każda opcja będzie zawsze mniej kosztowna od testowania. Przykładowo przy wysokich kosztach automatyzacji może się okazać, że wykonania pewnych zadań ręcznie ciągle będzie bardziej opłacalne. Wdrożenie którejkolwiek z przedstawionych opcji zawsze powinno być poprzedzone analizą opłacalności (np. analizą ROI).

To powinno Cię zainteresować