Ex ante: Wydaje się, że istnieje wiele zamieszania w kwestii tego, co uważa się za testowanie tego, co nie jest. Jasne, każdy programista musi przetestować swój kod podczas jego tworzenia, musi zweryfikować, czy działa. Nie może przekazać go testerowi, zanim uzna, że jest to zrobione i wystarczająco dobre. Ale programiści nie widzą wszystkiego. Mogą nie rozpoznawać błędów. Te błędy można znaleźć dopiero w późniejszym etapie cyklu programowania, gdy przeprowadzane są dokładne testy. Pytanie brzmi, czy programiści powinni przeprowadzić tego rodzaju testy, czy nie, i moim skromnym zdaniem należy na to spojrzeć z punktu widzenia kierownika projektu:
Programiści mogą być testerami, ale nie powinni być testerami . Programiści zwykle mimowolnie / nieświadomie unikają korzystania z aplikacji w sposób, który mógłby ją uszkodzić. To dlatego, że to napisali i przeważnie testują, w jaki sposób należy go używać.
Z drugiej strony dobry tester próbuje torturować aplikację. Jego / jej głównym celem jest złamanie go. Często używają aplikacji w sposób, jakiego nie wyobrażali sobie programiści. Są bliżej użytkowników niż programistów i często mają inne podejście do testowania przepływu pracy.
Używanie programistów jako testerów zwiększa koszty programowania i nie wpływa na jakość produktu tak bardzo, jak posiadanie dedykowanego testera. Nie pozwoliłbym programistom testować swoich prac, kiedy mogę to zrobić lepiej przez testera za tanie. Tylko jeśli pętla sprzężenia zwrotnego między programistami a testerami stanie się zbyt droga, chciałbym, aby programiści sprawdzali kod drugiej strony, ale z mojego doświadczenia wynika, że tak rzadko jest i zależy to w dużej mierze od procesu.
To nie znaczy, że programista powinien być niechlujny i pozostawić wszystko testerowi. Oprogramowanie należy wykonać za pomocą testów jednostkowych, a błędy techniczne należy ograniczyć do minimum przed przekazaniem oprogramowania testerowi. Mimo to czasami naprawiasz tutaj, łamiesz problemy lub inne błędy, których żaden programista nie mógł przewidzieć, to w porządku. Ponadto testy integracyjne powinny być wykonywane głównie przez programistów. Głównym celem testera jest sprawdzenie, czy wymagania są spełnione.
W tak małym zespole (a także w zależności od wielkości aplikacji) widzę też testera w roli hybrydowej, pisząc testy jednostkowe i testy interfejsu użytkownika. Zdecydowanie powinieneś go zatrudnić .
Ale ważniejsze od testera są regularne zamrażanie / odgałęzienia. Nie prezentuj niczego, co nie zostało odpowiednio przetestowane. Gdy dodasz funkcję lub coś zmienisz, wszystko, co ją otacza, musi zostać ponownie zweryfikowane. Otrzymasz złą reputację tylko wtedy, gdy Twoja firma tego nie zrobi. Nie uwalniaj czegoś niestabilnego. Gdy klient chce mieć oprogramowanie w określonym terminie, przestań je programować wystarczająco wcześnie i przetestuj odpowiednio, aby mieć wystarczająco dużo czasu na usunięcie błędów. Często lepiej jest odrzucić prośby o funkcje w ostatniej chwili, niż źle je zaimplementować lub zwolnić bez odpowiedniego testowania.