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.