Testuj - nie ryzykuj
Wielkość rynku testowania oprogramowania przekroczyła 40 miliardów USD w 2020 r. i szacuje się, że wzrośnie o ponad 7% CAGR w latach 2021-2027.
Testy są wszędzie
Żyjemy w dobie Czwartej Rewolucji Cyfrowej, w której świat rzeczywisty przenikają technologie. Klaus Schwab twórca idei Industry 4.0 wskazuje, że obecnie w niektórych obszarach działania trudno wskazać granicę między światem fizycznym a cyfrowym. Rozmycie tej granicy będzie dalej się pogłębiać a w naszym otoczeniu ilość dostępnych rozwiązań cyfrowych będzie rosła lawinowo. Obecnie większość działań społecznych oraz procesów biznesowych jest niemożliwa do zrealizowania bez ściągnięcia aplikacji czy uruchomienia systemu. Jeśli przeżywamy przy tym męczarnie to prawdopodobnie staliśmy się nie użytkownikiem a testerem tego rozwiązania. Brak odpowiednich testów przed udostępnieniem aplikacji przerzuca na użytkownika konieczność radzenia sobie z błędami, co zwykle przekłada się na nieuchronną porażkę aplikacji.
A Ty kiedy ostatnio byłeś czyiś testerem?
Dlaczego testowanie jest ważne?
Produkty związane z systemami oprogramowania są coraz większą częścią życia społeczeństwa. W Polsce średnio instalujemy 25 apek rocznie, a około 10 z nich używamy codziennie (30 miesięcznie). Gdy do tego dołożymy rozwijające się rozwiązania z zakresu administracji, medycyny czy edukacji to okaże się, że wrażliwość na błędy staje się krytyczna. Błędy w oprogramowaniu mogą w prowadzić do utraty reputacji produktów, ale i w konsekwencji do straty czasu, pieniędzy i motywacji zarówno dostawcy jak i użytkownika.
Człowiek może zrobić pomyłkę (error, mistake)
... która powoduje błąd, defekt (defect, fault, bug) w kodzie, w oprogramowaniu, w systemie
... który może doprowadzić do awarii, upadku (failure) jeżeli błędny kod zostanie wykonany
Skąd się biorą błędy?
Najczęstsze przyczyny defektów oprogramowania wynikają z błędów spowodowanych naturą ludzką, nadmiernym komplikowaniem kodu, ale też presją czasu. Koncentracja na jak najszybszych sprintach i jak najszybszym „dowożeniu” wartości może odbywać się kosztem jakości i w dłuższej perspektywie skutkować budową dużego długu technologicznego. Na błędy i dług wpływają dodatkowo zmiany wymagań, technologii, czy integracje z wieloma innymi systemami. Wszystkie te przyczyny są jednak codziennością każdego biznesu i nie da się ich w pełni uniknąć, więc każda inicjatywa minimalizacji ich wpływu na produkt jest na wagę sukcesu.
Testowanie a jakość
Testowanie często jest konieczne do spełnienia wymagań kontraktowych, prawnych czy standardów branżowych, ale przede wszystkim zmniejsza ryzyko awarii i podnosi jakość oprogramowania. Co to tak naprawdę znaczy? Otóż testowanie pozwala zmierzyć jakość oprogramowania i jeśli błędy są znajdowane i usuwane to bezpośrednio wpływa to na budowanie zaufania do produktu końcowego.
Cele testowania
Głównym celem jest znalezienie defektów, które pozwolą określić jakość i w konsekwencji oszacować ryzyka w funkcjonowaniu produktu. Cele można zdefiniować zależnie od momentu w cyklu życia oprogramowania:
- testy developerskie eliminacja jak największej liczby defektów na etapie wytwarzania oprogramowania (np. testy jednostkowe - koncepcja Test Driven Development)
- testy akceptacyjne weryfikacja czy oprogramowanie spełnia wymagania (np. funkcjonalne, wydajnościowe)
- testy utrzymaniowe przy nowych wydaniach weryfikacja czy nie pojawiły się nowe błędy (np. testy automatyczne, regresji)
- testy operacyjne weryfikacja podczas komercyjnego użytkowania (np. testy użyteczności, UX)
Tester - Twój przyjaciel
W wielu przedsięwzięciach testowanie jest powierzane bezpośrednio zespołowi developerskiemu. Jest to najłatwiejsze i najtańsze podejście do zagadnienia jednak często rodzi ryzyko niepełności lub nieobiektywności. Rozwiązaniem jest podejście niezależności testowania w postaci odrębnego zespołu lub outsourcingu usług testowania. Korzyścią z takiego podejścia jest:
- większa efektywność i skuteczność testowania robionego przez eksperta w tej dziedzinie
- brak powiązania z testowanym produktem i „spojrzenie pod innym kątem”
- możliwość zrównoleglenia testowania i developmentu
- przyśpieszenie wydawania poprzez skupienie zespołu developerskiego nad wytwarzaniem
To wszystko bezpośrednio przekłada się na pomoc zespołowi developerskiemu w rozwoju kompetencji oraz regularnym usprawnianiu pracy nad produktem.
TaaS - Testy As A Service
Zatrudnienie testera to duży problem z przyczyn rynkowych (kwestie kadrowe, rotacja) oraz zarządczych (konieczność ustalenia kompetencji, wymagań). Dodatkowo w trakcie prac programistycznych wymagania mogą się zmieniać, co wiąże się z potrzebą poszukiwania nowych kompetencji i żmudnym procesem rekrutacji. Warto wtedy skorzystać z testów jako usługi, co oznacza dostęp do różnorodnych profesjonalnych kompetencji testerskich i kontraktowanie się na za zadana, które wykonane są z najwyższą efektywnością. Według prognoz rynkowych w ramach Industry 4.0 tylko niewykwalifikowani pracownicy, do czasu zastąpienia w dużej części przez automatyzację - pozostaną w trybie rozliczania za czas pracy, pozostałe zawody przejdą stopniowo w model pracy zadaniowej. Podążaj za trendami!