Oprogramowanie jest testowane w celu potwierdzenia, że wszystkie prawidłowe dane wejściowe są poprawnie interpretowane i wykonywane, a nieprawidłowe dane wejściowe są odrzucane. Testy sprawdzają również, czy wyniki są generowane wydajnie, a duża ilość danych może być przetwarzana bez problemów. Testowanie można przeprowadzić ręcznie lub elektronicznie. Zautomatyzowane testowanie oprogramowania polega na wykorzystaniu specjalistycznego oprogramowania do testowania tworzonego kodu. Takie testowanie przynosi korzyści procesowi tworzenia oprogramowania, gdy jest stosowane rozsądnie.
Testy manualne zależą od skrupulatności osób przeprowadzających testy. Ręczne testowanie oprogramowania jest czasochłonne i wymaga znacznego stosunku testerów do programistów w przypadku większości aplikacji. To podnosi koszty rozwoju. Ponadto testowanie ręczne ma ograniczenie polegające na tym, że dużych ilości danych lub dużej liczby jednoczesnych użytkowników lub danych wejściowych nie można łatwo przetestować.
Zautomatyzowane testowanie oprogramowania programowo kontroluje wykonanie testów i ocenę wyników. Oprogramowanie testujące dostarcza dane wejściowe, które odpowiadają różnym warunkom, do ocenianego oprogramowania. Dla każdego zestawu warunków oprogramowanie testujące porównuje rzeczywiste wyniki z wynikami pożądanymi i prowadzi statystyki dotyczące zagregowanego zachowania oprogramowania docelowego. Po „uruchomieniu” oprogramowanie testujące zazwyczaj zapewnia podsumowanie wyników, dzięki czemu ludzie mogą szybko określić, co należy naprawić.
W automatycznym testowaniu oprogramowania żmudne zadania związane z testowaniem, takie jak logowanie lub wprowadzanie danych, takich jak adresy pocztowe, są zmechanizowane. W każdym przebiegu można przetestować szerokie kombinacje warunków. Ponieważ testowanie automatyczne wymaga użycia komputerów i oprogramowania, umożliwia również symulację dużych ilości danych wejściowych lub bardzo szybkich danych wejściowych. Każdy przebieg szeregu warunków testowych można ukończyć w ciągu kilku godzin. Dlatego też testowanie automatyczne jest bardzo przydatne do testowania regresji, które zapewnia, że nowa funkcja lub poprawka błędu nie zepsuły w sposób niezamierzony poprzednio działającego kodu.
Niektóre najnowsze metodologie programistyczne, takie jak Extreme Programming, podkreślają, że testy są dostępne przed kodowaniem. Metodologie programistyczne podkreślają, że testy regresyjne należy przeprowadzać wiele razy dziennie, aby zapewnić poprawność oprogramowania w miarę jego rozwoju. Jeśli zespół programistów musi przestrzegać tej metodologii w przypadku jakiegokolwiek znaczącego oprogramowania, obowiązkowe staje się stosowanie zautomatyzowanego testowania oprogramowania.
Oprogramowanie do testowania automatyki musi być zasilane żądanymi wejściami i wyjściami. Jednym ze sposobów, aby to zrobić, jest zapisanie warunków testu ręcznego w oprogramowaniu. Innym sposobem jest napisanie kodu generującego różne warunki, w dopuszczalnych granicach testowanego oprogramowania. Zatem podstawą zautomatyzowanego testowania oprogramowania jest zdecydowanie ludzki wysiłek. Oprogramowanie do automatycznego testowania nie może samodzielnie wyjść poza to.
Zautomatyzowane testowanie oprogramowania wiąże się ze znacznymi kosztami zarówno pod względem nabywanego oprogramowania, jak i jego użytkowania. Tak więc, czy zautomatyzować i jaka część testów zautomatyzować, to kluczowe decyzje. Testowanie automatyczne nie jest odpowiednie dla funkcji i środowisk, w przypadku których oczekuje się znaczących zmian. W większości zastosowań odpowiednie jest połączenie testów ręcznych i automatycznych.