Wiele źródeł i osób próbuje przekonywać, że testowanie samo w sobie przynosi zyski. Może to zrobić tylko, gdy zarabia się na wykonywaniu testów.
Jest kilka tez o testowaniu, które naprawdę trudno podważyć.
- Testowanie nie podnosi jakości oprogramowania. Tak jak mieszanie cukru w herbacie nie powoduje, że staje się ona słodsza. Dostarczając informacji o jakości nie zmieniamy jej w żaden sposób.
- Testowanie obniża koszty, ale ciągle jest kosztem. Im wcześniej zaangażujemy testy, tym teoretycznie mniejsze koszty poprawy defektów w późniejszych fazach. We współczesnych projektach czas od zdefiniowania wymagania do dostarczenia oprogramowania jest tak krótki, że ciężko mówić o wczesnym zaangażowaniu, które przynosi wielkie oszczędności.
- Testy mogą stać się niepotrzebnym wydatkiem jeśli ich wyniki nie przekładają się na decyzje biznesowe lub projekt nie jest w stanie dostarczyć produktu. W uproszczeniu, testowanie będzie jedynie dodatkowym kosztem wszędzie tam, gdzie nie przekłada się na dostarczenie lepszego produktu.
- Testowanie nie daje gwarancji poprawności działania. Czy testerom uda nam się zapewnić zerową ilość defektów w skończonym czasie? Czy testowanie da 100% gwarancję poprawności oprogramowania? W każdym przypadku odpowiedź brzmi - Nie.
- Testowanie jest tak dużym obciążeniem, że współczesne metodyki próbują się go pozbyć. Manifest Agile nie zakłada testerów, Scrum oddaje zadania kontroli jakości członkom zespołu i właścicielowi produktu, a w kulturze DevOps testowanie zredukowane jest do automatyzacji i monitorowania. Jeśli testowanie byłoby tak oczywistą korzyścią, metodyki nie próbowałyby z nim walczyć, a robiłyby wszystko, by było go możliwiej najwięcej.
Nie zmienia to faktu, że testowanie oprogramowania jest kosztem w wielu przypadkach niezbędnym do poniesienia, tak jak (prawie) każdy inny koszt projektowy.
- Czy koszt pracy nawet najlepszego kierownika projektu jest zyskiem? Nie. Czy zagwarantuje powodzenie projektu? Nie, ale może ograniczyć ryzyko jego niepowodzenia.
- Czy programowanie jest zyskiem? Nie. Jest nakładem pracy, więc również i wydatkiem. Czy najlepszy programista zagwarantuje wytworzenie produktu? Nie, ale dzięki jego dobrej pracy produkt może być wysokiej jakości.
Podczas inwestowania w testowanie zawsze należy zastanowić się nad tym, czy nakłady zwrócą się z nawiązką i przeanalizować tzw. business case'a. Z matematyki może nam wyjść, że koszt testowania przełoży się na większe zyski ze sprzedaży wytworzonego produktu.