TABLE OF CONTENTS:
Testowanie aplikacji to nieodłączny element całego procesu wytwarzania oprogramowania. Jednak zdarzają się jeszcze sytuacje, w których potrzeba testowania systemów jest kwestionowana. Czy deweloper może testować aplikacje? Tak, może. Czy powinien? Zdecydowanie tak. Czy wystarczy, że system przetestują programiści? Odpowiedź jest bardzo prosta i krótka: nie, nie wystarczy. Dlaczego? O tym poniżej słów kilka od Michała Zaczyńskiego, naszego eksperta w dziedzinie testowania oprogramowania.
Człowiek z natury ma problem z obiektywną oceną efektów swojej pracy, a gdy dodatkowo wchodzi w grę ograniczony czas na realizację zadania, to taka ocena kończy się przeważnie bardzo powierzchowną analizą. I tak też czasem bywa z testowaniem własnego kodu przez programistów. Często pokrywają one tylko główne, najważniejsze i pozytywne ścieżki użytkownika w aplikacji, pomijając to, co się stanie, kiedy coś pójdzie nie tak. Takie podejście nie wynika zwykle z braku wiedzy czy chęci do testowania, nie śmiałbym nawet tak sugerować. Wynika ono przede wszystkim z braku czasu na głębsze zastanowienie się nad problemami, które mogą się pojawić, a czasem z sentymentu do stworzonego kodu. W przypadku roli dedykowanego do zadania testera, nie ma tutaj żadnej więzi z testowaną aplikacją, a postawiony przed nim cel jest zupełnie inny niż w przypadku dewelopera. Zadaniem testera jest sprawdzenie poprawności działanie aplikacji i jego w tym głowa, żeby znaleźć każdy, najdrobniejszy nawet szczegół wpływający na jej działanie. Programista, który dzieło stworzył, może być nie do końca obiektywny, nawet mimo szczerych chęci.
Większość deweloperów nie ma wiedzy, czym są i jak zastosować takie techniki jak pair-wise testing, decision table czy classification tree. I nie ma nic w tym dziwnego! Nie są to bowiem zagadnienia związane z rozwojem aplikacji, ale z jej testowaniem. Należy pamiętać, że testowanie to nie tylko przeklikanie aplikacji, ale cały proces wymagający bardzo konkretnej wiedzy i doświadczenia oraz polegający na zastosowaniu odpowiednich technik, tych mniej lub bardziej formalnych. Testowanie oprogramowania to odrębna i pełnoprawna specjalizacja w świecie IT. Tworzone systemy są coraz bardziej skomplikowane, więc żeby móc je przetestować, trzeba posiadać obszerną wiedzę w tym zakresie, którą na bieżąco trzeba uzupełniać. Nasi testerzy certyfikowani są przez ISTQB, organizację wyznaczającą najwyższe standardy w dziedzinie testowania oprogramowania, a Solwit od niemal 12 lat, jako jedna z dwóch firm w Polsce jest jej Platynowym Partnerem.
Podział ról między testerem a deweloperem nie jest wynikiem jedynie posiadanej wiedzy. Każdy z nich ma swoje miejsce na innym etapie procesu wytwarzania oprogramowania – i nie ma tu mowy o lepszym czy gorszym punkcie. Ważna jest współpraca, bez której nawet najlepiej przygotowana aplikacja nie będzie kompletna.
Dla zobrazowania: w momencie zbierania wymagań, kiedy deweloper jest odpowiedzialny za przygotowanie architektury, tester ma przeanalizować, czy będzie można sprawdzić poprawność implementacji poszczególnych zadań. Kiedy programista implementuje kolejne etapy aplikacji, tester w tym samym czasie sprawdza jej jakość przez testowanie gotowych modułów. Na sam koniec, gdy deweloper kończy realizację swoich zadań, bardzo często to właśnie tester musi potwierdzić, że aplikacja jest gotowa do releasu. I choć nie ma oczywiście decydującego zdania w tym zakresie, to jego doświadczenie oraz opinia o testowanym systemie często mają fundamentalny wpływ na zielone bądź czerwone światło.
Współpraca między programistami i testerami jest niemal mityczna. Na szczęście większość opowieści można wsadzić między bajki, a na co dzień tworzymy zgrane, interdyscyplinarne zespoły, które wiedzą, że jedynie połączenie kompetencji daje efekt w postaci działającej i przetestowanej aplikacji.
Na koniec zostaje aspekt finansowy. Chociaż na rynku IT widać, że stawki testerów i programistów zaczynają się wyrównywać, to jednak nadal koszt godziny pracy testera jest niższy niż dewelopera. To powinno być ostatecznym argumentem, szczególnie dla osób decyzyjnych, że czas deweloperów należy wykorzystać w 100% na zadania związane z rozwojem aplikacji, a testowanie powierzyć testerom. Jeśli zajmą się tym specjaliści, będzie to nie tylko optymalne, ale również po prostu tańsze.
Warto wspomnieć również jeszcze o jednej rzeczy, którą trudno zakwalifikować bezpośrednio do któregoś z powyższych obszarów, a która niewątpliwie jest bardzo ważna, jeśli nie najważniejsza. Deweloperzy (przeważnie, ale nie zawsze!) po prostu nie lubią testować, a przypisywanie im tego zadania kończy się pobieżnym jego wykonaniem, a bywa, że i frustracją, która skutkuje zmianą pracy. Mając na uwadze dobro zespołu deweloperskiego oraz wyżej wymienione punkty, warto oddać testowanie oprogramowania specjalistom, którzy w należyty sposób zadbają o jakość wytworzonej aplikacji.