Automatyzacja testów nie zastąpi testowania

Automatyzacja testów nie zastąpi testowania
Choć automatyzacja jest odmieniana przez wiele przypadków w kontekście przyszłości rynku pracy, to jednak automatyzacja testowania jest jedynie ślepą uliczką ewolucji.

Wiele zawodów znika, a jeszcze więcej w niedalekiej przyszłości zniknie. Proste prace rolne zostały zastąpione przez maszyny, sprzedawcy w sklepach zastępowani są przez samoobsługowe kasy, rolę telemarketera przejmuje automat, który przynajmniej w początkowej konwersacji jest nie do rozróżnienia od prawdziwego człowieka, a analitycy kredytowi to dziś tak naprawdę algorytmy przyznawania kredytów. Żołnierzy na polu bitwy zaczynają zastępować roboty, rakiety oraz drony, autonomiczne samochody pojawiają się na razie na bardzo powtarzalnych trasach autobusowych, ale w perspektywie kilku(nastu) lat mogą zastąpić kierowców. Powodem do znikania zawodów są:

  • wysokie koszty ludzkiej pracy,
  • niebezpieczne warunki pracy,
  • braki kadrowe wśród ekspertów do wykonywania danej pracy,
  • ludzkie pomyłki,
  • etc. 

Jest naprawdę wiele mniejszych i większych powodów, aby przestać oddawać pracę w ręce ludzi i to praktycznie w każdym obszarze. Co prawda przez wiele lat uznawano, że maszyna nie zastąpi człowieka, a sztuczna inteligencja nigdy nie powstanie, ale zaczęto wątpić w unikalność ludzkiego mózgu i potencjalnego problemu z jego zastąpieniem. Podważono np. kwestię ludzkiej intuicji i dopatrzono się prostego wyszukiwania wzorców oraz łączenia ich z przeszłymi informacjami w celu podjęcia właściwej decyzji. De facto jest to coś, co może zrobić dobrze wyuczona maszyna. 

Czy przekłada się to również na branżę IT? Oczywiście. Nie tylko jesteśmy dostawcami software’u, który eliminuje konieczność pracy w kolejnych branżach, ale i sami możemy paść ofiarą swojego dziecka. Zastąpienie testerów i programistów przez maszyny to nie pytanie "czy?", tylko pytanie "kiedy?". Pewnym pocieszeniem dla testerów może być to, że prace nad wyeliminowaniem testerów są mniej zaawansowane, niż badania nad wyeliminowaniem programistów. Wynika to z tych samych powodów, o których pisałem wcześniej. Programistów potrzeba dziś bardzo wielu, a ich pensje biją kolejne rekordy. Z drugiej strony pisany przez nich kod ma błędy i zawsze będzie miał błędy. Wydaje się, że jedynym sensownym rozwiązaniem jest podmienienie ich na maszyny. Wielkie korporacje wydają setki miliardów dolarów na tworzenie oprogramowania, więc wydanie kilku miliardów na prace badawcze mające na celu wyeliminowanie koderów wydają się niewielkim kosztem. 

Testerów do tej pory starano się wyeliminować procesowo, uznając jak np. w agile, że testy niskopoziomowe zrobią sobie testerzy, a wysokopoziomowe klienci. Delikatnie rzecz ujmując to się nie sprawdziło, więc zaczęto inwestować w inne pomysły, w tym również w automatyzację testów polegającą na tym, że programista napisze kod, który będzie testował inny kod. Już samo wyartykułowanie tego w kontekście wcześniejszych zdań wydaje się być absurdem, ale tak aktualnie wygląda rynek. Ale w mojej opinii ta ścieżka prowadzenia testowania zniknie szybciej, niż ścieżka bazująca na ludzkiej umiejętności weryfikowania rzeczy ważnych i zdolności do wyszukiwania defektów. Skoro poświęca się tak dużo czasu na eliminowanie czynności pisania kodu, która stanowi trzon obecnej automatyzacji testów, to taka forma zastępowania pracy testerów nie ma przed sobą przyszłości. Taka forma automatyzacji jest tym, czym w ewolucji człowieka był neandertalczyk i umrze śmiercią naturalną.

Zagrożeń lub nadziei (w zależności od punktu widzenia) płynących z eliminacji pracy testera oprogramowania jest wiele. Wydaje się jednak, że obecnie definiowana "automatyzacja testowania" nie pozbawi w przyszłości pracy testerów. Jak na razie trend jest raczej odwrotny i rosnące zapotrzebowanie na automaty nie przekłada się na eliminację klasycznych testerów, a obie te ścieżki dość dobrze się uzupełniają w dążeniu do oprogramowania bezawaryjnego.

To powinno Cię zainteresować