Struktura automatyzacji testów to zestaw narzędzi używanych do wykonywania zautomatyzowanych testów oprogramowania. Struktury automatyzacji testów zapewniają znaczną przewagę nad testami ręcznymi i są powszechnie stosowane w szybkim tworzeniu oprogramowania. Te frameworki umożliwiają programistom tworzenie testów, wykonywanie testów i analizowanie wyników testów. Struktura automatyzacji testów może być oparta na kodzie, danych, graficznym interfejsie użytkownika (GUI) lub ich kombinacji.
Ramy automatyzacji testów są wymagane, aby sprostać potrzebom szybkiego tworzenia oprogramowania. W klasycznym cyklu życia oprogramowania kaskadowego, testowanie oprogramowania było dyskretną fazą wykonywaną po wdrożeniu lub kodowaniu. W związku z tym testy przeprowadzane przez ludzi były typowe.
Wiele zespołów programistycznych zastąpiło model kaskadowy różnymi metodologiami zwinnego tworzenia oprogramowania, które zazwyczaj wymagają szybkiego, iteracyjnego programowania. Szybki rozwój stworzył potrzebę szybkiego testowania. Struktura automatyzacji testów umożliwia zespołowi programistycznemu przeprowadzanie częstych, zautomatyzowanych testów na podstawie kodu. Na przykład, zamiast wymagać oddzielnej fazy testowania po opracowaniu, zespół korzystający ze struktury automatyzacji testów może zdecydować się na uruchomienie pełnego zestawu testów w nocy, a także mniejszych fragmentów testów automatycznych w ciągu dnia, gdy wprowadzane są zmiany w źródle. kod.
Najczęściej używanym typem frameworka jest framework oparty na kodzie, który służy do wykonywania testów białoskrzynkowych. Struktury oparte na kodzie wymagają od programistów pisania małych fragmentów kodu w formie testów jednostkowych w celu przetestowania funkcjonalności lub wydajności oprogramowania. Deweloperzy korzystający ze struktur opartych na kodzie muszą zadbać o to, aby pisać swoje oprogramowanie w sposób testowalny — to znaczy, że kod musi być zmodularyzowany, tak aby test jednostkowy mógł wywołać fragment kodu i zweryfikować wynik. Te frameworki zazwyczaj zawierają implementację xUnit, gdzie „x” różni się w zależności od testowanego języka programowania.
Struktury testowe oparte na graficznym interfejsie użytkownika są używane do przeprowadzania testów czarnoskrzynkowych, przy użyciu narzędzia programowego, tak jak zrobiłby to użytkownik, za pomocą myszy i klawiatury. Mogą składać się ze skryptów napisanych przez programistów w celu wykonania szeregu funkcji lub mogą składać się ze skryptów generowanych przez narzędzia, takich jak skrypty nagrywania i odtwarzania. Jedną z potencjalnych wad tych frameworków jest to, że skrypt będzie się psuł za każdym razem, gdy zmieni się GUI. Niektóre frameworki automatyzacji GUI mogą generować skrypt, który może być edytowany przez programistę w przypadku zmian GUI, a inne mogą wymagać od użytkownika utworzenia nowej sesji nagrywania i odtwarzania.
Struktury testów opartych na danych wykonują testy oprogramowania przy użyciu danych, a testy te zazwyczaj działają z tabelami danych, które określają zarówno dane wejściowe, jak i wyjściowe. Dane mogą być przechowywane w różnych lokalizacjach, takich jak bazy danych, arkusze kalkulacyjne czy pliki tekstowe. Skrypty mogą być napisane w celu wykonania metod programowych przyjmujących dane wejściowe jako parametry i w celu sprawdzenia wartości zwracanej przez metodę programową w stosunku do danych wyjściowych. Wszystko, co można zmienić, takie jak środowisko, w którym wykonuje się test, może być również przechowywane z danymi i oddzielone od skryptu testowego. Zaletą zapewnianą przez te frameworki jest oddzielenie danych i logiki, co często prowadzi do skrócenia długoterminowej konserwacji.