Sytuacja testerów na rynku IT. Dwa rozwiązania na brakujących specjalistów
Rewolucja cyfrowa skutecznie zmienia krajobraz branży IT, rośnie też zainteresowanie metodykami 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?
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.
Szymon Binek. Współzałożyciel Clickray i BrowserSpot. Międzynarodowy przedsiębiorca z ponad dziesięcioletnim doświadczeniem w budowaniu firm, online marketingu oraz tworzeniu business development. Mierzenie sukcesu za pomocą wskaźnika ROI ma we krwi. Entuzjasta blockchaina skupiony na tworzeniu nowych modeli biznesowych. W wolnym czasie pisze o nowych technologiach oraz uprawia crossfit.
Spis treści
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 w ś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).
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.
Ź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.
Ź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ł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 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.
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.
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.
Ź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%.
Ź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, 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.
Artykuł został pierwotnie opublikowany na browserspot.com. Grafikę główną artykułu opracowano na podstawie pexels.com.