Niezależność testowania

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. Z drugiej, 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.

Tekst w całości pochodzi z sylabusa ISTQB 2018. Zostały z niego usunięte nagłówki, odesłania i został przeedytowany. Choć jako źródło wiedzy sylabus może być postrzegany jako zbyt "ciężki", w małych dawkach jest to bardzo wartościowe kompendium wiedzy.

Całość można pobrać ze strony >> https://sjsi.org/ist-qb/do-pobrania/

 

Najbliższe terminy szkoleń

 

7-8 listopada - Warszawa

TestComplete od podstaw


7-8 listopada - Kraków

Administracja JIRA na poziomie projektowym


18-20 listopada - Katowice

ISTQB Poziom Podstawowy


18-20 listopada - Kraków

Python dla testerów oprogramowania

 

Partnerzy

Narzędzia testerskie