1. Strona główna
  2. Sylabus poziomu podstawowego ISTQB 2018 (wersja 1.01)
  3. 5. Zarządzanie testami
  4. 5.1. Organizacja testów
  5. 5.1.1. Niezależne testowanie

5.1.1. Niezależne testowanie

Zadania związane z testowaniem mogą wykonywać zarówno osoby pełniące konkretne role w procesie testowym, jak i osoby pełniące inne role (np. klienci). Z jednej strony pewien stopień niezależności często zwiększa skuteczność wykrywania defektów, ponieważ autor i tester mogą być obarczeni różnymi błędami poznawczymi (patrz podrozdział 1.5.). Z drugiej strony niezależność nie zastępuje znajomości produktu, a programiści mogą efektywnie wykrywać wiele defektów w tworzonym przez siebie kodzie.

Poniżej przedstawiono niektóre poziomy niezależności testowania (w kolejności od najniższego do najwyższego):

  • brak niezależnych testerów (jest to jedyna forma testowania dostępna w sytuacji, w której programiści testują własny kod);
  • niezależni programiści lub testerzy pracujący w ramach zespołu programistów (w tym przypadku programiści mogą np. testować produkty tworzone przez współpracowników);
  • niezależny zespół testowy działający w ramach organizacji, podlegający kierownictwu projektu lub dyrekcji;
  • niezależni testerzy będący przedstawicielami działów biznesowych lub społeczności użytkowników oraz testerzy specjalizujący się w określonych typach testów, takich jak: testowanie użyteczności, testowanie zabezpieczeń, testowanie wydajnościowe, testowanie zgodności czy testowanie przenaszalności;
  • niezależni testerzy spoza organizacji pracujący u klienta (on-site) lub poza siedzibą firmy (outsourcing).

W większości typów projektów zazwyczaj najlepiej sprawdza się uwzględnienie wielu poziomów testowania i powierzenie wykonywania części testów niezależnym testerom. W testowaniu (zwłaszcza na niższych poziomach testów, np. testowaniu modułowym) powinni również uczestniczyć programiści, ponieważ w ten sposób mogą kontrolować jakość swojej pracy.

Sposób zapewnienia niezależności testowania zależy od wybranego modelu cyklu życia oprogramowania. W przypadku zwinnego wytwarzania oprogramowania testerzy mogą zostać przydzieleni do pracy w ramach zespołu programistów, a w niektórych organizacjach stosujących metody zwinne mogą być uznawani za członków szerszego niezależnego zespołu testowego. Ponadto w takich organizacjach właściciele produktu mogą wykonywać na zakończenie każdej iteracji testowanie akceptacyjne mające na celu walidację historyjek użytkownika.

Wśród potencjalnych korzyści wynikających z niezależności testowania należy wymienić:

  • prawdopodobieństwo wykrycia przez niezależnych testerów innego rodzaju awarii niż te wykryte przez programistów ze względu na różne doświadczenia, techniczne punkty widzenia i błędy poznawcze;
  • możliwość zweryfikowania, zakwestionowania lub obalenia przez niezależnych testerów założeń przyjętych przez interesariuszy na etapie specyfikowania i implementowania systemu.

Potencjalne wady niezależności testowania to między innymi:

  • izolacja od zespołu programistów może prowadzić do braku komunikacji, opóźnień w dostarczaniu informacji zwrotnych dla zespołu wytwórczego i złych relacji z zespołem wytwórczym;
  • niebezpieczeństwo utraty przez programistów poczucia odpowiedzialności za jakość;
  • niebezpieczeństwo potraktowania niezależnych testerów jako wąskiego gardła i obciążenia ich odpowiedzialnością za nieterminowe przekazanie produktu do eksploatacji;
  • ryzyko, że niezależni testerzy nie będą dysponowali ważnymi informacjami (np. na temat przedmiotu testów).

Wiele organizacji jest w stanie osiągnąć korzyści z niezależnego testowania jednocześnie unikając wpisanych w nie wad.