Świat się zmienia. Ciężko z tym polemizować. Wiek pary, wiek elektryczności, wiek komputerów. Obecnie znajdujemy się w okresie określanym jako „industry 4.0”, w którym dzięki szerokiemu zastosowaniu internetu, automatyzacji i przetwarzania danych, powoli zaciera się granica między człowiekiem a maszyną. Jak wpłynie to na kształt znanego nam IT? Analiza w dalszej części wpisu.
Jednym z zasadniczych plusów blogowania jest możliwość stałego poszerzania wiedzy. Komentarze pod artykułem nierzadko mają większą wartość niż sam wpis blogera. Podobnie jest z wiadomościami od czytelników. Taka właśnie wiadomość od Marcina Konwerskiego była inspiracją dzisiejszego wpisu. Marcin pisze:
Jestem testerem i zastanawiam się czy to stanowisko jest zagrożone. W chwili obecnej całe IT to eldorado ale to musi się kiedyś skończyć. Ktoś zacznie liczyć koszty i się kapnie że przejście z fail-safe do safe to fail jest opłacalne. Chciałbym poznać twoją opinie na ten temat.
Marcin bardzo trafnie przedstawił bliski mi punkt widzenia na to, jak dzisiaj wygląda rozwój projektów IT. Zastanówmy się więc głębiej nad odpowiedzią.
Więcej niż małpki?
O tzw. testerach manualnych słyszałem bardzo różne opinie. Jedni uważali, że ich funkcję równie dobrze mogłyby pełnić przyuczone małpy. Inni twierdzili, że to bardzo trudny zawód, wymagający nielichych umiejętności. Jak jest naprawdę? Odpowiedź brzmi jak zwykle w IT – to zależy. Jest grupa osób, które w roli testera widzą prostego użytkownika aplikacji. Taką samą wartość jak w zatrudnianiu 20 studentów dostrzegają w wykorzystaniu platform takich, jak Amazon Mechanical Turk. Tylko czy takie „klikanie” po aplikacji faktycznie jest efektywne? Wątpię. Z pewnością pokryje ścieżki pozytywne (w taki sposób większość ludzi używa aplikacji). Jednak sporo poważnych błędów będzie miała się dobrze. Równie dobrze moglibyśmy zatrudnić do tego swoje dzieci.
Co umie tester?
Kim dla mnie jest dobry tester? To ktoś posiadający bardzo specyficzne umiejętności analityczne. Analitycznego szukania dziury w całym. Programista, widząc wymaganie „przy zamówieniu 5 książek wysyłka ma być darmowa”, od razu widzi prostego ifa. Jeżeli liczba książek jest większa lub równa pięć, ustaw koszt wysyłki zamówienia na zero złotych. I super. Robota zrobiona, fajrant, wypłata 15k. A co mówi dobry tester? „Krótkie wymaganie. Na pewno nie przewidzieli większości scenariuszy”. I zaczyna się seria niewygodnych pytań:
Tester: A co jeżeli będą dostępne 2, a 3 zostaną wysłane dopiero drugą paczką? To obie będą za darmo?
Klient: Hmmm, nie. Wtedy nie. Wszystkie muszą wyjść w jednej paczce.
Programista: (Nowy if.)
Tester: A jak zamówię 5 książek i zmywarkę to też będę miał darmową wysyłkę?
Klient: No nie – oczywiście, że nie. Tylko książki.
Programista: (Ehhh, kolejny if.)
Tester: A 4 ebooki i jedną drukowaną?
Klient: To też nie. Musza być wszystkie drukowane.
Programista: (Chyba trzeba będzie jednak powtórzyć szacowanie.)
Obecnie w projektach IT rezygnuje się z klasycznej roli analityka. Dość szeroko omawia tę sytuację Jakub Nabrdalik w prezentacji User Stories considered harmful. Po części ta rola przechodzi właśnie na testerów, bo mają oni znacznie bardziej niż inne profesje rozwiniętą zdolność zgłębiania wymagań.
Serce programisty
Stare przysłowie IT mówi, że tester powinien mieć serce programisty. W słoiku na biurku. I faktycznie – dobry tester wie, jak przyprawić developerów o szybsze bicie serca. Natomiast w obecnych czasach powinien mieć je już nie tylko na biurku. Zwiększanie częstotliwości wdrożeń, nawet do modelu ciągłego dostarczania, zmienia reguły kontroli jakości oprogramowania. Skracanie czasu od zbudowania paczki do jej produkcyjnego uruchomienia do godzin czy kilkunastu minut, w sposób oczywisty wyklucza możliwość manualnej weryfikacji jakości. W dużych projektach testy potrafiły zajmować całe tygodnie. O skompresowaniu ich do godziny nie ma nawet co marzyć. Przynajmniej, jeżeli nie zastąpimy ludzi automatami. Te ostatnie mają sporo zalet. Są całkowicie powtarzalne, nie miewają gorszych dni ani kaca. Dużo łatwiej estymować czas ich trwania. I ciężko zaprzeczyć temu, że w tę stronę zmierzamy.
Takie czołgi można kupić w każdym sklepie z czołgami
Wiele memów od czasu aneksji Krymu w tym stylu komentuje nieprawdopodobne wydarzenia. A skąd wziąć automaty do testów? Czy są w każdym sklepie z automatami? Tutaj właśnie do gry wkraczają osoby, które łączą doświadczenie testerskie z umiejętnością programowania. Z naciskiem na to pierwsze. To zresztą pokrywa się często z popularną testerską ścieżką kariery. Tester manualny -> tester automatyzujący -> programista. Ten ostatni etap wynika często z wypalenia zawodowego lub też ciągot w stronę wyższych zarobków (co powoli zaczyna się w wielu przypadkach zacierać) . Natomiast ten pierwszy krok jest obecnie według mnie obligatoryjny. Wielu testerów już posiada umiejętność wykonywania zapytań na relacyjnych i nierelacyjnych bazach danych. Kolejnym krokiem jest zatem poznanie podstaw programowania. Na temat popularnych języków takich, jak Python, Java czy Groovy, bezpłatnych kursów, tutoriali, książek i prezentacji z konferencji znajdziemy tysiące. O ile do przygotowania wygodnego frameworku testów akceptacyjnych w projekcie wymagane jest naprawdę duże doświadczenie i wyczucie, o tyle do jego sprawnego wykorzystania można przystąpić dość szybko.
Tester idealny
Czy ktoś taki istnieje? Pewnie nie. Jednak nie mogłem się powstrzymać przed uzewnętrznieniem swojej wizji takiej osoby. Na pewno wspomniana wcześniej znajomość baz danych i programowania jest podstawą. Pisanie testów automatycznych z wykorzystaniem technologii takich, jak Geb, RestAssured etc., pozwoli weryfikować zarówno interfejs użytkownika, jak i API. Jeżeli testy wykryją błąd, potrafi przejrzeć logi, zalogować się ssh na serwer, zerknąć na zmiany w kodzie aplikacji i wstępnie określić przyczynę błędu. Oczywiście nie przeanalizuje w pełni problemu z transakcjami czy race-condition, ale brakujący wykrzyknik w warunku if – czemu nie. Poza tym wsparcie w analizie biznesowej wymagań, a może nawet wzięcie za nią odpowiedzialności.
TLDR
Czy testerzy są zagrożeni? Absolutnie nie. Czy muszą się zmienić, aby przeżyć? Oczywiście tak. Czy statystyczny programista może zastąpić dobrego testera? Wątpię – inny sposób myślenia.
A jakie jest Wasze zdanie na ten temat? Zapraszam do dyskusji.
Panie Jakubie, Pełna zgoda z tezami postawionymi w artykule – dorzuciłbym jedynie, iż praca dla testerów manualnych, którzy nie mają ochoty bądź zdolności do ewolucji w strone automatyzacji również nie jest zagrożona w perspektywie „nastu” lat – a to za sprawą olbrzymich „legacy” projektów i instytucji, w której utrzymywane są starodawne twory, rozwijane skomplikowane okołobankowe systemy etc.. Rozwój oprogramowania (a właściwie tempo rozwoju) w takich firmach nie implikuje konieczności automatyzacji „wszystkiego co się rusza”. Nie mniej dla dobra każdej osoby poruszającej się w obrembie IT jest ciągły rozwój – taka specyfika branży – więc na pewno nie należy liczyć na… Czytaj więcej »
Dziękuję za komentarz. Oczywiście, że systemy legacy nie wymrą z dnia na dzień. Z drugiej strony widać w ostatnich 2 latach (po szkoleniach i audytach, które przeprowadzamy), że coraz więcej firm zaczyna przepisywać systemy legacy, które nie dają już elastyczności wymaganej przez dzisiejszy biznes. Zostawia się tam stabilne core’owe procesy, których praktycznie się nie dotyka, a cała resztę przenosi do okolicznych serwisów, budując popularną ostatnio architekturę słońca. Czyli monolitu, wokół którego orbitują serwisy.
Pozdrawiam,
Kuba
Ciekawy artykuł, widać jednak, że autor albo nigdy nie był testerem albo miał styczność z pseudo testerami, którzy nie mieli większych ambicji. Czy to tester manualny czy automatyczny musi się rozwijać i odważę się postawić tezę, że to właśnie tester manualny powinien zdobywać więcej wiedzy (teoretycznej oraz praktycznej). Co do głównego wątku uważam, że to właśnie zawody związane bezpośrednio z programowaniem mogą być zagrożone – czyli programista oraz tester automatyczny. Programowanie zostanie zastąpione przez maszyny i pozostaną tylko testerzy, którzy swoją ludzką umiejętnością twórczego myślenia (czyt. tester manualny) będą musieli sprawdzić czy przypadkiem maszyny nie planują ataku na świat… 😉… Czytaj więcej »
Dzięki za komentarz. Testerem faktycznie nie byłem, jednak liczba testerów, z którymi miałem do czynienia dawno przekroczyła pojemność dwucyfrowych liczb. Zarówno z małych, średnich jak i ogromnych organizacji. W IT rozwijać muszą się wszyscy. Tak jak wspominałem w artykule wielu testerów oczywiście się rozwija w różnych kierunkach – jak choćby wykorzystanie wszelakich baz danych, analiza logów, analiza kodu, etc. Niemniej jednak obecny trend w IT to model Continous Deployment i TiP, gdzie wersja ląduje na produkcji nawet kilka razy dziennie, najlepiej bez przechodzenia przez choćby jedno środowisko test czy staging. Wszelkie testy odbywają się dopiero na produkcji, a realizują je… Czytaj więcej »
Szanuję za użycie nazwy „tester automatyzujący”, zamiast niestety wciąż jeszcze popularnego sformułowania „tester automatyczny”.
Niestety wyrazy szacunku nie dla mnie, tylko dla Jakuba Rosińskiego, po którego komentarzu na Facebooku dopiero to poprawiłem 😉
Ale od teraz już pamiętam!
Pozdrawiam
Dobry artykuł, seria niewygodnych pytań jest znakomicie przedstawiona.
Brakuje mi tylko informacji, która potrzebują testerzy a jest o tym mało mówione, albo zapominane. Testerzy (których głównym zdaniem jest zdobycie informacji) muszą mieć odpowiednie soft skills. W pracy „manualnej” bez odpowiednich umiejętności komunikacji (czy bugów czy raportów testowych) nie ma dobrych testerów. Bo koniec końców, jeżeli dobrze nie przedstawimy problemu to on nigdy nie zostanie naprawiony.
Kuba, bardzo dobry wpis, czekam na artykuł „Czy programiści są potrzebni?” 😉 Masz jakieś doświadczenia z testerami, którzy wywodzą się z programowania vs programistami wywodzącymi się z testowania?
Zastanawiam się też, dlaczego panuje przekonanie o tym, że bycie testerem jest łatwiejsze, niż bycie programistą. Tak najczęściej myślą osoby, które wchodzą do branży i taki obraz wysyłamy (głównie programiści oczywiście) w świat. Jak pisał Sebastian, dobre testowanie manualne jest trudną sztuką, bo wymaga wiedzy biznesowej i technicznej, a sprowadzone jest do małpiego klikania (a chaos monkeys przecież już zautomatyzowano)…
Ola, Dzięki za komentarz! Szczerze mówiąc nie znam praktycznie żadnych testerów wywodzących się z programowania. Ta ścieżka kariery traktowana jest raczej jako uwstecznienie, głównie z racji zarobków. Czemu testowanie jest postrzegane jako prostsze? Wg mnie to wynika z tego, że bardzo wiele firm nie ma zupełnie kultury zapewniania jakości. Sprawdzają tylko czy podstawowe przeklikanie się przez aplikacje działa. Testerzy, którzy rozumieją biznes, potrafią zrobić dużo więcej niż klikać scenariusze to wcale nie tak często spotykany obrazek. Uważam, ze z racji szerokiej automatyzacji będzie się to w najbliższych latach zmieniało. Po prostu ta pierwsza grupa odejdzie do lamusa i zostaną testerzy… Czytaj więcej »
Dobre podejście do sprawy. Dodałbym do tego problem hype’u na rewolucję życiową, np. pod tytułem „przekwalifikowanie na testera”. Znam przypadki takiej zmiany, gdzie osoba zupełnie nie-IT poszła w działkę testerską. Odbyło się to prawdopodobnie w przekonaniu, że bycie testerem to taka właśnie „małpia” ale i nieźle płatna robota. Nie wiem czy do takiej wizji nie dokładają swojego firmy szkoleniowe, które wykorzystują obecny czas… W każdym razie, próby te skończyły się niepowodzeniem, bo tak jak piszesz – tester to coś więcej niż klikacz. Ja cenię takie osoby właśnie za umiejętność zadawania pytań, za szersze widzenie problemów, którego zamknięci w swoim boksie… Czytaj więcej »
Cześć! Dzięki za komentarz 🙂
Nie udało mi się dotrzeć do liczb, głównie z racji tego, ze nikt nie rozgranicza „sensownego” i „bezsensownego” testera 🙂
Ale z parciem na kasę jest to samo co ze szkołami kodu. Większość osob się nie nadaje do programowania, ale z racji, że „pieniądze nie śmierdzą” obiecuje im się złote góry a potem jest niemile zaskoczenie
Pozdrawiam,
Kuba
„Czy testerzy są zagrożeni? Absolutnie nie. Czy muszą się zmienić, aby przeżyć? Oczywiście tak. Czy statystyczny programista może zastąpić dobrego testera? Wątpię – inny sposób myślenia.” szkoda ze to nie bylo na poczatku to dalej bym nie czytał. glupota jakich mało i zero logiki.
Ciężko nazwać ten komentarz konstruktywną krytyką. Który konkretnie fragment jest pozbawiony logiki i głupi? Łatwiej też dyskutuje się z osobami podpisującymi się przynajmniej imieniem, niż anonimowymi komentatorami.
Pozdrawiam,
Kuba
przeciez wkleiłem fragment w ciapkach do którego sie odnoszę. jaki jest sens porównywać dobrego testera ze srednim programistą? gdzie tu logika? w tym fragmencie „Czy testerzy są zagrożeni? Absolutnie nie. Czy muszą się zmienić, aby przeżyć? Oczywiście tak” – sam sobie zaprzeczasz. bez sensu. no to albo muszą się zmienic zeby przezyc albo nie muszą bo nie są zagrozeni. albo sie jest w ciązy albo się nie jest. ” Programista, widząc wymaganie „przy zamówieniu 5 książek wysyłka ma być darmowa”, od razu widzi prostego ifa” takie rzeczy chyba u Januszy lub u słabych programistów lub w firmie gdzie programista jedynie… Czytaj więcej »
„sam sobie zaprzeczasz. bez sensu. no to albo muszą się zmienic zeby przezyc albo nie muszą bo nie są zagrozeni. albo sie jest w ciązy albo się nie jest.” Absolutnie nie. Testerzy w mojej ocenie będą potrzebni. Jednak nie koniecznie będą wykonywali te same zadania, które robią dzisiaj. Czyli rola zostanie, ale zakres obowiązków się zmieni. Tak samo jest z release managerami. Rola jest, ale przy zmianie z cyklu release’ów co 3 miesiące na daily deployment zmienia się zakres odpowiedzialności i obowiązków. Nie widzę tutaj sprzeczności. „takie rzeczy chyba u Januszy lub u słabych programistów lub w firmie gdzie programista… Czytaj więcej »
Pracuję jako tester od ponad 7 lat i przyznam, że wcale nie dziwią mnie krytyczne opinie na temat testerów (co rzutuje na samą opinię o ich pracy, a więc testowaniu). Od początku mojej pracy jako tester, notorycznie spotykam się z osobami, które mówią „chcę zostać testerem, nie mam żadnego doświadczenia i żadnej wiedzy”. Na palcach jednej ręki mogę policzyć takie stwierdzenia w odniesieniu do zawodu programisty. W przypadku testerów nie byłbym w stanie ogarnąć pamięcią wszystkich takich przypadków. Notoryczne jest podejście, gdzie osoba wyraża przekonanie, że bez jakiejkolwiek TWARDEJ wiedzy z zakresu IT, będzie mogła testować oprogramowanie. Czy ktoś spotkał… Czytaj więcej »
Dzięki za komentarz Andrzej! Widać na pewno różne punkty widzenia i siedzenia w temacie opinii o testerach. Jedni potrafią dostrzec funkcjonujące tam patologie, inni dość mało konkretnie bronią idealnego obrazu. Dla przykładu portal testerzy.pl podsumowali mój wpis następującym komentarzem: „Czy to najbardziej wypaczony obraz testera w historii polskiego Internetu? Na pewno dobry kandydat. Nam nasuwa się pytanie czy Kubryński jest potrzebny.” Ja współpracując z dziesiątkami dużych i średnich firm związanych z IT i szkoląc każdego roku 100-200 doświadczonych programistów, mam wydaje się dość dobry ogląd sytuacji. Praktycznie każdy mówi, że ciężko znaleźć kompetentnych testerów, którzy potrafią zrobić coś sensownego. W… Czytaj więcej »
Polskie portale dla testerów to również temat rzeka. Akurat portal Testerzy.pl kojarzy mi się przede wszystkim z lakonicznymi wpisami, gdzie na końcu najważniejszy jest link do organizowanego przez nich szkolenia. Zresztą wiąże się z tym wspomniany „biznes certyfikacyjny” i „testerskie szkoły kodowania”, gdzie w dwa dni mają zamiar za ogromne pieniądze nauczyć budowy frameworka testowego. Tutaj również ma miejsce wmawianie ludziom, że ISTQB FL to sukces prawie na miarę doktoratu z medycyny i otwarte drzwi do pracy za legendarne 15k. To generuje potem przekonanie takich osób o ich fantastycznych umiejętnościach, które jak wspomniałem w przypadku ISTQB FL, są do nauczenia… Czytaj więcej »
Z ciekawością przeczytałem artykuł, skusił mnie do tego – bądź co bądź – dość kontrowersyjny tytuł. Ktoś wcześniej w komentarzach słusznie wspomniał, że całe rozważania przede wszystkim powinniśmy oprzeć na tym czym testowanie (a szerzej zapewnienie jakości) tak naprawdę jest i określenia dobrej definicji tego pojęcia. Zbyt często niestety spotykam się z przekonaniem wśród różnorakich grup (dev, analitycy, biznes, menedżerowie), że tester to właśnie taka małpka, tylko potrafiąca zadawać trafne pytania oraz posiadająca jakąśtam wiedzę techniczną, aby trochę pogrzebać w dociekaniu przyczyn wywołanej przed momentem awarii. To przecież zawód szalenie kreatywny i wymagający, nierzadko dużo bardziej niż zawód programisty, bo… Czytaj więcej »
Artykuł jak artykuł, dobry ale komentarze jeszcze lepsze,
a z jedną jego tezą, chyba zgodzą się wszyscy komentatorzy:
„Komentarze pod artykułem nierzadko mają większą wartość niż sam wpis blogera”
Pozdrawiam wszystkich uczestników dyskusji 😉