Najlepszy zwrot z inwestycji to zwykle najwcześniejsze testy, w których można znaleźć tego rodzaju błąd.
Testy jednostkowe powinny znaleźć większość błędów, które dotyczą tylko jednej metody lub jednego komponentu. Wykrywa błędy, które zwykle można naprawić w ciągu kilku minut, przy całkowitym czasie zawracania krótszym niż jedna godzina. BARDZO tanie testy, BARDZO tanie błędy do znalezienia i naprawy! Jeśli te błędy przeszły do testowania integracji, zwrot może być bardziej podobny do dnia (testy często odbywają się co noc), zakładając, że błąd nie zostanie zasłonięty przez inny błąd; plus prawdopodobnie pojawi się więcej błędów, ponieważ inny kod został napisany przeciwko początkowemu kodowi błędów; plus wszelkie przeprojektowania wpłyną na więcej fragmentów kodu. Ponadto dopuszczenie większej liczby błędów oznacza konieczność wykonania o wiele większej liczby testów przed zakończeniem testów integracyjnych. Słabe testy jednostkowe często leżą u podstaw długich, uciążliwych i kosztownychtestowe cykle integracji. Pomijanie testów jednostkowych może skrócić czas opracowywania o połowę, ale testowanie potrwa co najmniej 3 do 4 razy dłużej, cały projekt podwoi swoją długość, a ty nadal będziesz mieć gorszą jakość niż w przypadku testowania jednostkowego IME.
Testy integracyjne są zwykle najwcześniejszymi rzeczywistymi testami, które mogą znaleźć błędy integracyjne (chociaż procesy przeglądu mogą znaleźć pewne błędy przed napisaniem oprogramowania lub zanim kod przejdzie do testowania). Chcesz znaleźć te błędy, zanim zaczniesz pokazywać oprogramowanie użytkownikowi lub wydać, ponieważ usuwanie błędów w ostatnim momencie (lub naprawianie na gorąco!) Jest bardzo drogie. Nie można znaleźć tych błędów wcześniej, gdy byłoby to tańsze do naprawienia, ponieważ potrzebujesz wielu działających komponentów do zintegrowania (z definicji). Testy integracyjne ulegają spowolnieniu, gdy błędy, które nie mają nic wspólnego z oddziałującymi elementami (jak drobne literówki), muszą zostać rozwiązane w pierwszej kolejności, zanim zaczną się bardziej interesujące testy.
Testy akceptacji użytkownika upewniają się, że oprogramowanie robi to, czego chce klient (chociaż, mam nadzieję, że klient był zaangażowany przez cały czas, aby zmniejszyć ryzyko znalezienia ogromnej luki między oczekiwaniami a faktycznym oprogramowaniem na końcu projektu - BARDZO drogie !). Zanim przejdziesz do tego etapu testowania, naprawdę powinieneś uwierzyć, że większość błędów w twoim produkcie, w porównaniu do specyfikacji, została już znaleziona. Testy akceptacji użytkownika polegają bardziej na upewnieniu się, że produkt odpowiada potrzebom klienta, niż na upewnieniu się, że nie ma błędów w porównaniu ze specyfikacjami.
Gdybym miał zautomatyzować tylko jeden rodzaj testów, byłoby to testowanie jednostkowe. Testy integracyjne mogą być wykonywane ręcznie i były wykonywane w ten sposób przez wiele dużych firm przez lata. Ręczne wykonywanie pracy, którą komputer może wykonywać w kółko, jest bardziej czasochłonne, a w przypadku większości projektów znacznie droższe, nie wspominając o nudach i podatności na błędy, ale można to zrobić. Testy akceptacyjne użytkownika są często ręczne, ponieważ użytkownicy często nie wiedzą, jak zautomatyzować swoje testy, wciąż testując to, na czym im zależy. Testy jednostkowe MUSZĄ być zautomatyzowane. Musisz być w stanie uruchomić wszystkie testy jednostkowe w ciągu kilku sekund na żądanie tak często, jak co kilka minut. Ludzie nie mogą nawet zbliżyć się do testów manualnych. Nie wspominając o tym, że testy jednostkowe są w kodzie i nie można ich wykonać bez wywołania ich za pomocą kodu, tj. Zautomatyzowania ich.
Należy pamiętać, że jest to forum przede wszystkim dla programistów, a nie testerów. Testy integracyjne są głównie wdrażane przez testerów. Testy jednostkowe są wdrażane przez programistów. Oczywiście programiści mówią więcej o testowaniu jednostkowym niż o innych typach testów. Nie oznacza to, że nie sądzą, aby inne testy były ważne. Oznacza to po prostu, że tak naprawdę tego nie robią (lub robią to rzadziej).