Po co nam testerzy?

Oryginalny post: Why testers?

Autor: Joel Spolsky

dog puppy Moja siostra sprawiła swoim dzieciom szczeniaczka i one próbowały go wytresować. Aby mieszkać z psem pod jednym dachem, musisz nauczyć go, by nie skakał na ludzi, nie robił kupy w domu, siadał na zawołanie oraz nigdy, przenigdy nie przeżuwał iPada. Nigdy. Dobra dziewczynka.

Z tresowaniem psów jest tak, że reakcja musi być natychmiastowa. Jeśli po powrocie do domu odkrywasz, że parę godzin wcześniej pies wywalił kubeł ze śmieciami w kuchni, jest już za późno na tresurę. Możesz na niego wrzeszczeć, ale on i tak nie pojmie o co Ci chodzi. Psy po prostu nie są takie mądre.

Jeśli chodzi o programistów, bycie lepszym w tym co się robi, wymaga szybkich reakcji, pozytywnych i negatywnych, na temat tego co właśnie zrobiłeś. Im szybciej otrzymasz odpowiedź, tym szybciej się nauczysz. Przy oprogramowaniu pudełkowanym mogą upłynąć lata, zanim otrzyma się odpowiedź od klientów.

marzocco To powód, dla którego mamy testerów. Doskonały tester dostarcza programistom natychmiastowej informacji zwrotnej na temat tego, co zrobili dobrze, a co źle. Wierzcie bądź nie, jedną z najbardziej wartościowych cech testera jest dostarczanie pozytywnego wsparcia. Nie ma lepszego sposobu na polepszenie morali programistów, zadowolenia oraz dobrego samopoczucia niż ekspres do kawy La Marzocco Linea posiadanie oddanych testerów, którzy otrzymują częste wydania od programistów, wypróbowują je, i dają negatywne i pozytywne informacje zwrotne. W innym przypadku, przygnębiającym jest bycie programistą. Oto ja, szybkopiszący, tworzący cały ten świetny kod i nikt o to nie dba. Buuuu.

Kto powinien zostać testerem? To podchwytliwe! Testowanie oprogramowania to jedna z tych ścieżek kariery, która nie jest dobrze znana, tak więc wielu ludzi, którzy mogliby być nieźli w testowaniu i polubiliby to, nigdy nie rozważa podjęcia pracy na stanowisku testera.

Oznaki dobrego testera:

  • Umiejętny
  • Lubiący dobre układanki, nawet te, które wymagają wielu dni na ułożenie
  • Lubiący myśleć o rzeczach metodycznie
  • Ogólnie lubiący pracę z oprogramowaniem i komputerami

Nie musisz być programistą, aby zostać testerem. Wiele firm wymaga, aby testerzy byli programistami, którzy piszą zestawy automatycznych testów. To wydaje się być bardziej skuteczne. To odzwierciedla nieporozumienie na temat tego, co powinni robić testerzy, czyli ewaluacja nowego kodu, znajdowanie dobrych rzeczy, znajdowanie złych rzeczy oraz dawanie pozytywnego i negatywnego wsparcia programistom. Pewnie, automatyczne zestawy testów są oszczędnością czasu, ale testowanie oprogramowania pokrywa znacznie więcej niż to. Jeśli położysz zbyt duży nacisk na te skrypty, nie zauważysz źle ułożonego tekstu, wrogiego interfejsu użytkownika, złego doboru kolorów oraz niespójności. Co gorsza, wyrobisz sobie kulturę testerów, którzy gorączkowo pracują nad tym, aby ich kod działał, co oddala ich od tego, co naprawdę powinni robić: ewaluować czyiś kod.

Wyjątkowo paskudnym pomysłem jest oferowanie stanowiska testera programistom, którzy aplikują do Twojej firmy, a nie są wystarczająco dobrzy, aby pracować na stanowisku programisty. Testerzy nie muszą być programistami, ale jeśli odpowiednio długo będziesz twierdził, że tester to tylko niekompetentny programista, w końcu będziesz budował zespół niekompetentnych programistów, a nie zespół kompetentnych testerów. Jako iż testowania można się nauczyć w pracy, a ogólnej inteligencji nie, naprawdę potrzebujesz bardzo mądrych ludzi na testerów nawet, jeśli nie mają odpowiedniego doświadczenia. Wielu testerów, z którymi pracowałem nie zdawało sobie nawet sprawy, że chcą być testerami, dopóki ktoś nie zaoferował im pracy.

Jeśli:

  • Kochasz oprogramowanie i komputery
  • Chciałbyś pracować w zespole tworzącym oprogramowanie, oraz
  • Niekoniecznie lubisz programowanie

powinieneś rozważyć zostanie testerem.

Data publikacji oryginału: 26 stycznia, 2010


Korzystając z okazji, chcielibyśmy dowiedzieć się, jak to jest u Was w firmach. Zachęcamy więc do wzięcia udziału w sondzie oraz do podzielenia się w komentarzach własnymi doświadczeniami związanymi z tematyką dzisiejszego wpisu.

Kto u Ciebie w firmie testuje oprogramowanie?

16 komentarze:

KonradKubiec.com pisze...

Straszne źle rozumiana jest rola testera w Polsce.

Łatwiej powiedzieć "Po co w ogóle mi testerzy?" i nakazać programistom, aby sami testowali swój kod.. A później tyle zdziwienia z powodu błędów i wściekłości klienta. Programista, tak jak zrozumie zadanie, tak je wykona i "przetestuje" myśląc jak twórca (pomijając większość błędów, których nie uważa za błąd!).

Do puki ktoś, nie tworzący danego rozwiązania, nie spyta "Dlaczego?", nie możemy mówić o rzetelnych testach. Błędy zawsze się ujawnią, to tylko kwestia czasu. Lepiej żeby ujawnił je tester niż klient.

Tomasz Kowalczyk pisze...

Fakt, testerzy są ważni, ale to i tak nie zmieni faktu, że przy aktualnym modelu wytwarzania oprogramowania programiści zdani są na własne zdolności testowania.

Anonimowy pisze...

Co ma do zrobienia programista/developer
polecam:
http://techportal.ibuildings.com/2010/02/08/coding-is-the-easy-part/


KrzysztofB

koziołek pisze...

Jeden dobry tester jest wart więcej niż dziesięciu najlepszych programistów. Tak naprawdę to on ma jedną z najbardziej odpowiedzialnych funkcji w zespole, bo musi przełożyć oczekiwania klienta na język programisty i w dodatku sprawdzić, czy programista zrozumiał.
Cóż... dobry tester ma serce programisty, w słoiku na biurku.

batman pisze...

~koziołek
Pomyliłeś testera z analitykiem. Ten drugi odpowiada za przetłumaczenie języka klienta, na język programisty. Tester musi sprawdzić, czy to co analityk przekazał programistom, działa według założeń.

Nie można przeceniać testerów. Cały zespół jest ważny i tak na prawdę nie ma najważniejszej roli. Jeśli chociaż jedno ogniwo w łańcuchu wytwarzania oprogramowania jest słabe, wówczas cały produkt jest słaby. I nic nie pomoże tutaj najlepszy tester, czy programista.

rafek pisze...

@batman: Analityk to kolejna rola, która dość często przypisywana jest programistom. A wiadomo, programiści językiem biznesu rozmawiać nie potrafią..

batman pisze...

~rafek
Zdarza się, że programista jest analitykiem, programistą, testerem i serwisantem w jednym. Najczęściej dzieje się tak w niewielkich firmach, których nie stać na zatrudnienie 4 osób odpowiedzialnych tylko za swoją "działkę".

koziołek pisze...

@batman, nie do końca. Analityk tłumaczy na zrozumiały język jak generalnie ma zachowywać się dany program. Tester tłumaczy jak pani Hania, Ela czy insza Hildegarda widzi ten program. Analityk powie "Gdy wykonujemy akcję A to mamy komunikat o błędzie", a tester "gdy klikniemy tu to powinien wyskoczyć komunikat o takiej treści, a nie stacktrace". Różnica w poziomie abstrakcji.

Anonimowy pisze...

generalnie roznica jest taka:
programista testujac stara sie udowodnic, ze jego program DZIALA.
tester szuka sytuacji, w ktorych program NIE DZIALA!

Konradzik pisze...

Hah, słusznie podsumował(a) dyskusję pan(i) powyżej.

Ja jako programista wiem zwykle, po dopisaniu jakiegoś modułu który element może się sypnąć - co wypada sprawdzić. Przyznam, że po sprawdzeniu kilku większych problemowych miejsc resztę zostawiam testerom opisująć co moim zdaniem powinni dobrze 'przeklikać'. I testerzy odwalają świetną robotę sprawdzając wszystkich moich kandydatów i dorzucając kilka własnych odkryć.

Przeczytałem ostatnio w 'nie każ mi myśleć' o instytucji testera 'z ulicy' który przychodzi i przeklikuje Twoje oprogramowanie widząc je pierwszy raz na oczy. To jest piękna sprawa pod względem ergonomii. Testerzy 'firmowi' tylko na początku zgłaszają setki błędów, nie mogą czegoś znaleźć, nie wiedzą jak coś działa itd. Później przyzwyczajają się do tego co jest - wsiąkają - testowanie ergonomii interfejsu znów pada.

Anonimowy pisze...

Testerów w danej firmie zmieniać najlepiej, co 2-3 miesiące, aby nie "nasiąknęli" aplikacjami danej firmy. Najlepiej utworzyć coś w rodzaju współpracy między firmami, gdzie by się wymieniano testerami...

Niestety w firmie w której pracuje nigdy nie ma czasu na testy. Testerów nie ma, osoba - programista odpowiedzialna za inny projekt rzadko kiedy testuje projekt innej osoby - ale czasem się zdarza.
Z reguły jest tak, że osoba odpowiedzialna za swoją "działkę", prócz tego, że aplikacji musi zaprojektować i napisać, to musi ją testować. Niestety chore terminy, itp. nie pozwalają nawet programiście przetestować własnej aplikacji... A potem "olaboga" aplikacja na wdrożeniu nie działa tak jak trzeba...

Monika pisze...

przeglądając ogłoszenia na testerów znalazły się tylko ogłoszenia dla programistów, więc ja sie pytam, jak zostać testerem nie będąc programistą z doświadczeniem lub ze znajomościami???

Anonimowy pisze...

Prawdziwy tester :D czy jest potrzebny ??? Odpowiedź brzmi: tak. Dlaczego? 1)Bo błąd konwersji typów w Ariane 5 kosztował 500 mln.$ ... 2)Źle zaprogramowana maszyna rentgenowska zabiła kilka osób... Wydaje mi się, że warto by było programować w Haskellu kod krytyczny (te 20%), ponieważ w tym języku jego kod jest jednocześnie dowodem swojej poprawności. Znając życie i w programowaniu w Haskellu da się pewno popełnić błędy, i dlatego jestem ciekaw jak one wyglądają...??? :P S. A tak tworzy się dziś oprogramowanie na wariackich papierach, nie próbując nawet testować poprawności algorytmów i tylko mechanizmy Javy ratują sytuację, że się za bardzo nie sypie, ale wszystko do czasu... :D Od czasu do czasu słychać, że jakiś bankomat wypłaca 2* więcej ... Dla Moniki: poczytaj sobie o dowodzeniu poprawności oprogramowania... to jest bardzo ciekawe ... pzdr

Anonimowy pisze...

co do komentarza powyżej warto przeczytać: http://scienceblogs.com/goodmath/2009/11/types_in_haskell_types_are_pro.php

Olesku.pl pisze...

~koziolek
"Jeden dobry tester jest wart więcej niż dziesięciu najlepszych programistów." - dzięki :) szkoda, że nie zarabiam tyle co oni... ;]

Anonimowy pisze...

Jestem w projekcie, gdzie nie ma testów jednostkowych, wszystko spoczywa w rękach testerów i powiem, że mają bardzo dużo roboty :) Praktycznie każda zmiana w kodzie może powodować regresję. Po 2-3 (dwu tygodniowych) sprintach potrzebny jest okres 3 tygodni walidacji i poprawy regresji. Totalna masakra. Więc moja konkluzja, że nawet jak będziesz miał najlepszych testerów ale zawalisz ich gównianą robotą, którą mógłby robić komputer to też będzie lipa.

Prześlij komentarz

Related Posts with Thumbnails