W naszym październikowym wpisie podawaliśmy argumenty Dlaczego powinniśmy zacząć myśleć inaczej o testowaniu oprogramowania. Wspominaliśmy o trwającej rewolucji cyfrowej, która skutecznie zmienia krajobraz branży IT i o wzroście popularności metodyk Agile i DevOps. Coraz częstsze wykorzystywanie Cloud Computing oraz ciągle rosnąca różnorodność i liczba urządzeń, oraz przeglądarek internetowych również wywierają wpływ na to, jak wygląda obecnie świat testowania oprogramowania, jednocześnie stawiając przed nim nowe wymagania na przyszłość.

Jaki ma to wpływ na branżę testowania oprogramowania i jaka jest kondycja testerów na rynku pracy? Trochę już o tym pisaliśmy, we wspomnianym wyżej wpisie, ale w tym chcielibyśmy omówić szerzej niektóre kwestie. Wreszcie: jakie dostrzegamy możliwości wyjścia z sytuacji? Czy jest nad czym pracować, czy kondycja testerów na rynku pracy i w branży jest na tyle dobra, że pozostaje nam tylko radośnie przyklasnąć i pogratulować? Na te i inne pytania znajdziecie odpowiedzi w tym wpisie.

Sytuacja testerów w branży IT

Dzięki ciągłemu rozwojowi języków programowania, narzędzi, procesów przetwarzania danych (np. chmury), metodyk pracy i zarządzania zespołem, inżynieria oprogramowania  odnotowała znaczny postęp w swojej ewolucji. Jednocześnie tego samego nie można stwierdzić w przypadku testowania oprogramowania. Nie zaobserwowaliśmy spektakularnej poprawy wydajności czy skuteczności testowania. Wciąż wymaga ono uwagi i przełomowych rozwiązań.

Większość systemów testowych dostępna jest na rynku od wielu dekad, a pojawiające się nowe, wyglądają i działają w strukturach bardzo podobnych do swoich poprzedników zaprojektowanych jeszcze na początku XXI wieku. Tajemnicą poliszynela jest, iż branża testerska najzwyczajniej na świecie nie jest na tyle skuteczna, by zapewnić odpowiedni poziom pokrycia testowego. Problem leży w ogromnej i ciągle zwiększającej się ilości danych, które muszą zostać obsłużone przez testerów w ograniczonym czasie. W efekcie testowanie manualne i manualne tworzenie automatycznych skryptów testowych przestało być wydajne. Ponadto rosnąca złożoność powstających aplikacji wymaga większych nakładów pracy, a zatem wysiłek testowy jest większy.

Przywołując raz jeszcze grafikę o zależności pokrycia testowego od czasu, podkreślamy, że luka testowa istnieje i wciąż się powiększa. Kompleksowość testów wzrasta wykładniczo wraz z pojawianiem się nowych funkcji. Pokrycie testowe rośnie liniowo, ponieważ testy mogą być dodawane tylko pojedynczo. W efekcie produkowane jest coraz więcej kodu, niż testerzy są w stanie przetestować, co prowadzi do luki w pokryciu testowym (testing gap).

Testowanie luka wykres pokrycie testowe

Zależność pokrycia testowego od czasu oraz sposób tworzenia się luki testowej.
Linia niebieska oznacza funkcje, linia zielona zaś testy.
Kompleksowość testów wzrasta wykładniczo wraz z pojawianiem się nowych funkcji. Pokrycie testowe rośnie liniowo, ponieważ testy mogą być dodawane tylko pojedynczo.

Źródło: J. Arbon, AI for Software Testing, 2017, s. 4.

Sytuacja testerów na rynku pracy

Według badań przeprowadzonych przez Test Magazine (2016) tylko 5% ankietowanych odpowiedziało, że obecnie wykonuje tylko testy automatyczne. Większość (66%) jest na poziomie 75:25 lub 50:50 (odpowiednio – testy manualne : testy automatyczne), a 9% stwierdziło, że wykonuje jedynie testy manualne.

Wykres przedstawiający stosunek testów manualnych do automatycznych

Źródło: Test Magazine, European Software Testing Benchmark Report 2016, s. 12.

Ankietowani na pytanie, co chcieliby osiągnąć w ciągu następnych pięciu lat pracy, większość (ponad 70%) stwierdziła, że chciałaby, by stosunek testów manualnych do automatycznych wyniósł 50:50 do 25:75. 14% uznało, że nie chciałoby wykonywać żadnych testów ręcznych.

Wykres przedstawiający stosunek testów manualnych do automatycznych w przyszłości

Źródło: Test Magazine, European Software Testing Benchmark Report 2016, s. 12.

Na pytanie, jakie jest ich preferowane źródło pozyskiwania personelu do projektowania testów automatycznych, większość (51%) stwierdziła, że woli przekwalifikować obecnych pracowników. Kolejne 38% uznało, że woli zatrudniać odpowiednio wykwalifikowanych pracowników na stałe. Tylko 8% powiedziało, że zatrudni wykwalifikowanych pracowników kontraktowych, a jeszcze mniej powiedziało, że zaangażuje się w usługi doradcze (3%).

Źródła pozyskiwania testerów automatycznych

Źródło: Test Magazine, European Software Testing Benchmark Report 2016, s. 13.

Case study

W artykule Global Trends and Challenges of Software Testing Market możemy przeczytać o wyzwaniach i zagrożeniach, przed jakimi stanęła obecnie branża testerska.

W tekście przytoczone zostały przykłady firm: Uber i Bitcoins. Korzystają one, tak jak wiele innych firm na rynku, z technologii IoT, czujników i Big Data, wykorzystując je w swoich aplikacjach i usługach. Popularność tych rozwiązań widać na rynku testowania oprogramowania, który stanął przed nowym wyzwaniem zmierzenia się z cyberbezpieczeństwem, zapewnieniem integracji i wysokiej jakości usług w kontekście oprogramowania, jednocześnie utrzymując skrócony cykl tworzenia oprogramowania i wprowadzania nowości na rynek, by nadążyć za złożonością i dynamiką zmian na rynku IT.

Wyzwania, przed jakimi staje obecnie testowanie oprogramowania, uwidoczniły się w przypadku niedawnego spadku cen w Bitcoinie. Upadek MtGox, który doprowadził do utraty aktywów o wartości około 200 milionów funtów, był spowodowany błędem w oprogramowaniu bitcoin, które nie zostało wychwycone przez zespół. MtGox wyprzedał się, a obecna cena Bitcoinów zmalała w pierwszym kwartale 2018 roku. Było to spowodowane luką w oprogramowaniu, która została wykorzystana przez grupę hakerów.

Bitcoin

Podobna sytuacja miała miejsce w przypadku Ubera. Kiedy Uber opracował samoautonomiczne (self-autonomous) oprogramowanie do auta samojezdnego, był to prawdziwy kamień milowy dla firmy. Jednak wypadek samojezdnego Ubera, który doprowadził do śmierci kobiety w Arizonie, miał poważne konsekwencje. Firma musiała zakwestionować wytworzone oprogramowanie do samojezdnych pojazdów, po tym, jak nastąpiło masowe oburzenie medialne dotyczące ofiar śmiertelnych tego typu wypadków, które mogły być spowodowane błędem oprogramowania.

Pojawiające się trendy i tendencje na rynku, powodują znaczne rozszerzenie perspektyw rozwoju branży programistycznej, przynosząc jednocześnie zakłócenia w sektorze zapewniania jakości produktu. Defekty oprogramowania, które nie zostały wykryte w fazach rozwoju i testowania, jak w przypadku Bitcoin i Ubera, tworzą „testing gap” w zapewnianiu jakości produktu. Choć podane za Global Trends and Challenges of Software Testing Market przykłady mogą wydać się zbyt odległe i ekstremalne, to jednak pamiętajmy o tym, że są one pierwszymi krokami w stronę, w którą prawdopodobnie zmierza rozwój technologii, dlatego warto się i nad nimi pochylić.

Propozycje rozwiązania sytuacji

Rynek testowania oprogramowania nie jest w stanie sprostać w tym momencie wymaganiom stawianym zarówno przez branżę programistyczną, jak i technologiczną w ogóle. Nie można stać z założonymi rękami i biernie przyglądać się sytuacji. Wyjścia z tego impasu są minimum dwa. Naszym zdaniem to najprostsze i najbardziej kompleksowe rozwiązania. Oczywiście wiele osób może się z nimi nie zgodzić, część wpadnie na lepsze wyjścia z sytuacji, lepiej dostosowane do ich potrzeb i wymogów ich firmy. My staraliśmy się znaleźć takie, które będą jak najbardziej uniwersalne i dostępne dla jak największego grona odbiorców.

Propozycja 1 – więcej inżynierów testów automatycznych

W związku z rosnącą popularnością metodyk Agile i DevOps oraz z powiększającą się „testing gap” warto zastanowić się nad zwiększeniem liczby ekspertów od testów automatycznych na rynku. Testy automatyczne mają wiele zalet, o których pisaliśmy w jednym z naszych poprzednich wpisów: Jak wybrać testy do automatyzacji.

Badania przeprowadzone przez serwis społecznościowy StackOverflow wykazały, że wśród ponad 100 000 programistów, zaledwie 6,7% zajmuje się QA i projektowaniem testów. To stanowczo za mało jak na rosnące potrzeby i wymagania rynku. Należy pamiętać, że wiele programistów zwyczajnie nie chce przebranżowić się na inżynierów testów automatycznych z powodu różnicy w zarobkach.

Czym zajmują się programiści

Źródło: Developer Survey Results

Rozważając inne rozwiązanie, czyli szkolenie testerów manualnych z zakresu tworzenia automatów. W 2017 roku wciąż większość testerów (42%) określiła swoje działania testerskie jako „w większości” lub „całkowicie” manualne. W roku 2016 odsetek ten był niewiele mniejszy – 41%. Natomiast w 2017 roku 32% zapytanych odpowiedziało, że częściej lub wyłącznie korzystają z testów automatycznych. Rok wcześniej odsetek ten wynosił zaledwie 26%.

Rodzaje działań testerskich.

Źródło: Developer Survey Results

Zmiany idą w dobrym kierunku, ale wciąż nie są wystarczająco skuteczne, by uzupełnić lukę w pokryciu testowym.

Propozycja 2 – narzędzia do przeprowadzania testów automatycznych bez konieczności znania języków programowania

Innym rozwiązaniem jest stworzenie takiego narzędzia do testowania oprogramowania, które umożliwi przeprowadzanie testów automatycznych bez konieczności posiadania wiedzy z zakresu programowania. Takie rozwiązanie jest uniwersalne i dostępne dla każdego. Jedyne czego wymaga to komputera i dostępu do internetu. Użytkownik łączyłby się przez chmurę z serwerem. Następnie wybierałby interesujące go urządzenia, ich wersje i modele, rodzaje i wersje przeglądarek i przeprowadzałby na nich testy automatyczne wybranej przez siebie strony internetowej czy aplikacji webowej. Po skończonym procesie otrzymywałby raport z wynikami testowanej strony.

Takie narzędzie brzmi jak melodia przyszłości? No cóż, przyszłość zwykle nadchodzi szybciej, niż się spodziewamy 😉

5

  •  
    3
    Shares
  • 3
  •  
  •  
  •