Czy programista może dogadać się z testerem?

O ogromnej wadze testowania oprogramowania nie trzeba przekonywać żadnego odpowiedzialnego programisty. Lepiej przecież zapobiegać błędom, niż usuwać je z już udostępnionych aplikacji. Duża liczba błędów wpływa negatywnie nie tylko na samą opinię o produkcie, ale także działa niekorzystnie na markę producenta, nie wspominając już o kosztach usuwania bugów. Dlatego wytwórcy oprogramowania coraz powszechniej stawiają na zespoły testerskie, z którymi muszą współpracować programiści. Problem polega jednak na tym, że jeśli nawet programista rozumie wagę testów, nie oznacza to, że rozumie testerów. Niestety, nierzadko postrzega ich, jako przeciwników, a przynajmniej kolesi, którzy, nie wiedząc czemu, przyczepiają się o wszystko i są po prostu złośliwi. Czy zatem programista rzeczywiście może dogadać się z testerem? Oczywiście, ale potrzebne jest odpowiednie podejście.
 

Tester- wróg czy przyjaciel programisty?


Fundamentem jakiegokolwiek porozumienia z testerem jest uświadomienie sobie, że nie jest on wrogiem programisty. Nawet jeśli to osoba niezwykle irytująca, na której widok podnosi się Twoje ciśnienie, musisz zmienić podejście. Traktowanie testera jako wroga, którego trzeba jak najszybciej pokonać wszelkimi możliwymi sposobami, to najprostszy krok do konfliktu w zespole, a w rezultacie strata czasu, przedłużająca się praca nad projektem i nerwowa atmosfera. Oczywiście zmiana podejścia do testera nie jest łatwa. W końcu przecież w pocie czoła tworzysz kod, rozwiązujesz skomplikowane problemy programistyczne, łapiesz nadgodziny, może nawet zarywasz nocki przed deadlinem, a tu pojawia się napuszony tester, który wciska we wszystko swój wścibski nos i się wymądrza. Tylko czy to rzeczywiście wina testera, że napisałeś kod z błędami? Musisz zmienić swoje podejście do testera, zacząć go postrzegać w innym świetle. Nie zapominaj, że pracujecie w tym samym zespole, jesteście częścią tej samej firmy i macie ten sam cel: udostępnienie klientowi wysokiej jakości oprogramowania.
 

Komunikacja jako istotny element współpracy


Często dużym problemem we współpracy programisty z testerem jest brak komunikacji. Nie jesteście przecież osobnymi wyspami, które nigdy się nie spotkają. Prędzej czy później staniecie naprzeciwko siebie dosłownie lub w sensie metaforycznym (na przykład za pośrednictwem poczty elektronicznej), a wtedy zapewne dojdzie do starcia. Nagle okaże się, że to, co dla testera jest błędem, nie jest żadnym bugiem z Twojego punktu widzenia, że test, który został przeprowadzony, nie jest w ogóle ważny dla Ciebie, ponieważ dana funkcja bardzo dobrze działa. Tester będzie miał zapewne inne zdanie na ten temat. Tych wszystkich nieporozumień można by uniknąć, gdyby istniała dobra komunikacja pomiędzy programistą a testerem. Najlepiej porozmawiaj z osobą odpowiedzialną za testy jeszcze przed napisaniem kodu i omów z nią to, co zostanie przetestowane. Ustalcie wspólne priorytety. Wiedząc co i jak zostanie przetestowane, będziesz mógł podejść odpowiednio do kodu i unikniesz pyskówki z testerem.
 

Testuj pierwszy swój kod


Programista musi zrozumieć, że tester nie jest jego niańką, która pogłaszcze po głowie i zajmie się całą robotą związaną z testowaniem, zwalniając tym samym z tego obowiązku kodera. Jeśli chcesz uniknąć nadmiernej frustracji, pretensji i poczucia, że tester jest złośliwy, sam testuj jako pierwszy, to co napisałeś. To właśnie Twoją rolą jest identyfikowanie problemów, usuwanie bugów i „dopieszczanie” kodu. Musisz zrozumieć, że tester to w rzeczywistości ostatnia obrona, przed tym, aby oddać klientowi oprogramowanie z błędami. To ostatni szaniec, który dba w rezultacie o Twoją reputację i prestiż firmy w oczach użytkowników produktów. Zrozumienie tej specyfiki pracy testera zmienia optykę postrzegania specjalistów od testowania. Nie każ im szukać błędów, daj im możliwość sprawdzenia poprawności kodu. Nie przez przypadek najlepsi testerzy mawiają często, że weryfikują oprogramowanie, a nie testują. Niby niewielka różnica, a jednak istotna.
 

Błędy w kodzie a efektywność


Efektywność zespołu ma kluczowe znaczenie dla dotrzymywania ustalonych z klientem terminów. Niestety, każdy cykl znajdowania błędów, naprawiania i ponownego sprawdzania poprawności działania oprogramowania wiąże się z wydłużeniem pracy nad projektem. Co, jeśli takich cykli jest bardzo wiele? Nie powinno dziwić, że takie procedury zabierają dużo czasu, skoro konieczne jest wykonanie wielu różnych czynności: od znalezienia i zgłoszenia błędu, poprzez przypisanie go konkretnemu programiście do poprawy, aż do wysłania kodu do ponownego sprawdzenia, ustalenia, czy bug został naprawiony, a potem oznaczenie tego, jako sprawy załatwionej. Dobra współpraca programisty z testerem polega również na tym, że potrafią uniknąć takich formalnych procedur, które są bardzo czasochłonne i obniżają efektywność zespołu. Częsty kontakt z testerem, rozmowa, bezpośrednia współpraca to szybszy sposób na eliminowanie błędów niż ograniczanie kontaktu tylko do oficjalnych procedur.
 

Warto współtworzyć zautomatyzowane testy


Konflikt między programistami a testerami często wynika z tego, że ci ostatni nie są… programistami. Nie, to nie kwestia megalomanii koderów. To kwestia odpowiednich umiejętności, wiedzy. Ile razy już frustrowałeś się, analizując raport na temat błędów w Twoim kodzie, chociaż dobrze wiedziałeś, że ten działa? Mimo to okazywało się, że zautomatyzowane testy się nie powiodły. Niestety, czasami problem polega na tym, że takie testy nie przechodzą, ponieważ tester nie napisał lub nie przygotował ich poprawnie. Ty, jako programista, dostrzegasz to od razu i krew Cię zalewa! Cały dzień zepsuty! Czy nie lepiej zatem współpracować również na tym polu z testerami? Zamiast doświadczać frustracji przy lekturze raportu o błędach, korzystniej jest pomóc testerowi w tworzeniu zautomatyzowanych testów. Oczywiście nie chodzi o to, żebyś wykonywał za niego całą pracę, ale o to, żeby wesprzeć go wiedzą programistyczną.
 

Gdy tester nie chce porozumienia


Na koniec zostawiliśmy kwestię najtrudniejszą. Niestety, możesz trafić na testera, który w rzeczywistości nie chce żadnego porozumienia. Bez względu na to, że wyciągasz do niego rękę, czynisz inne przyjazne gesty, on i tak jest do ciebie negatywnie nastawiony. Mało tego, na każdym kroku próbuje Ci udowodnić, że Twój kod jest do niczego. Dlaczego tak się dzieje? Przyczyn jest wiele – tester może mieć do Ciebie jakiś żal z przeszłości, wyładowuje na Tobie frustracje spoza pracy lub czuje się kimś gorszym od programisty. Ten ostatni przypadek wcale nie jest rzadki. Być może to człowiek, który aplikował do firmy na stanowisko programisty, a wylądował na stanowisku testera. Teraz nienawidzi wszystkich koderów. W takiej sytuacji mógłbyś oczywiście iść na konfrontację. Tylko po co? Konflikt nie jest dobry ani dla Ciebie, ani dla efektywności Twojego zespołu. O wiele lepiej ugryźć się czasem w język, przełknąć dumę i przyznać, że tester ma rację. Oczywiście nie jest to wcale łatwe. Jednak nierzadko okazuje się, że taki sfrustrowany tester potrzebował dowartościowania albo po prostu zwykłej, ludzkiej rozmowy i że szybko sam zaczyna rozumieć niestosowność swojego zachowania, a nawet jest mu wstyd. Wtedy wyciągnie do Ciebie dłoń. Niestety, nie działa to w każdym przypadku. Bywają testerzy „niereformowalni”, z którymi nie ma szansy na porozumienie. To samo zresztą dotyczy programistów. Jednak w takiej sytuacji nie będziesz mógł zarzucić sobie, że nie próbowałeś dogadać się z testerem.
 

Jeśli chcielibyście dowiedzieć się więcej o pracy testerów i o specyfice tego zawodu, zapraszamy do lektury artykułu „Zawody IT - Tester Oprogramowania”.