Tak jak produkt fizyczny jest testowany w celu sprawdzenia, czy spełnia pożądane zachowanie i specyfikacje, tak samo testowane jest oprogramowanie. Testowanie oprogramowania może być wykonywane ręcznie przez ludzi lub przy użyciu narzędzi. Zautomatyzowane narzędzie testujące to oprogramowanie używane do testowania oprogramowania docelowego, czyli rozpatrywanego oprogramowania. Takie narzędzie wykonuje różne testy na docelowym oprogramowaniu i określa, czy testy zakończyły się pomyślnie.
Oprogramowanie należy przetestować, aby zapewnić, że generowane są prawidłowe wyniki, prawidłowe dane wejściowe są akceptowane i prawidłowo przetwarzane, a nieprawidłowe dane wejściowe są odrzucane. Testy są konieczne, aby określić, czy wyniki są generowane szybko, oprogramowanie działa dobrze, nawet jeśli jednocześnie korzysta z niego duża liczba osób i tak dalej. Często stosuje się testy ręczne, ale są one zależne od dokładności osób przeprowadzających testy. Ręczne testowanie oprogramowania zajmuje czas i wymaga znacznej liczby osób dla większości nietrywialnych aplikacji, co zwiększa koszty. Ponadto testowanie tysięcy jednoczesnych użytkowników lub dużych ilości danych nie może być łatwo przeprowadzone ręcznie.
Automatyzacja testów to wykorzystanie narzędzi do testowania oprogramowania. Zautomatyzowane narzędzie testujące samo w sobie jest oprogramowaniem, które można opracować, kupić lub nabyć. Narzędzie zazwyczaj rozpoczyna wykonywanie oprogramowania docelowego i przekazuje różne dane wejściowe do oprogramowania docelowego w celu przetestowania różnych warunków. Ocenia odpowiednie dane wyjściowe oprogramowania docelowego i śledzi wynik pozytywny/negatywny każdego testu. Pod koniec serii testów narzędzie zazwyczaj podaje wyniki podsumowujące, dzięki czemu można szybko określić liczbę i powagę defektów.
Zautomatyzowane narzędzie testujące może działać na dwa sposoby. Po pierwsze, może być sterowane kodem, czyli narzędzie może być ściśle powiązane z napisanym kodem, aby sprawdzać, czy wyniki dla różnych danych wejściowych są poprawne. Po drugie, może być oparty na interfejsie użytkownika, w którym czynności użytkowników, takie jak ruchy myszy, wejścia klawiatury, wejścia głosowe itp., są naśladowane, a dane wyjściowe dostarczane użytkownikom są sprawdzane pod kątem poprawności. W tym drugim przypadku rzeczywiste działania danej osoby mogą być rejestrowane, a następnie odtwarzane przez narzędzie lub takie działania mogą być generowane ze skryptu poleceń wprowadzanych do narzędzia.
Na rynku dostępne są zautomatyzowane narzędzia do testowania ogólnego przeznaczenia. Większość z nich jest dość droga, ale niektóre narzędzia są dostępne za darmo. Jeśli docelowe oprogramowanie jest wysoce specyficzne lub unikalne, to narzędzie testowe prawdopodobnie musi być opracowane na zamówienie przez ten zespół programistyczny. Jak każde oprogramowanie, same narzędzia mają ograniczenia i działają poprawnie tylko wtedy, gdy mają dobre dane wejściowe. Jeśli nie dostarczymy stosunkowo kompletnego zestawu testów, narzędzie nie pomoże określić jakości oprogramowania docelowego.
Zautomatyzowane narzędzie testujące ma wiele zalet. Po utworzeniu serii testów, testy mogą być wykonane szybciej niż osoba może je wykonać. Testy mogą być przeprowadzane w nocy lub w nietypowych godzinach, dzięki czemu ludzie mogą skoncentrować się na tym, co robią najlepiej. Testy można przeprowadzać w kółko, aby określić, czy błędy wkradły się do oprogramowania docelowego w miarę jego modyfikacji w czasie.