Narzędzia do testów wydajnościowych mają dwie główne funkcje:
- generowanie obciążenia,
- pomiar i analiza odpowiedzi systemu na zadane obciążenie.
Generowanie obciążenia odbywa się poprzez zaimplementowanie zdefiniowanego wcześniej profilu produkcyjnego (patrz punkt 4.5.4) w postaci skryptu. Skrypt może zostać zarejestrowany wstępnie dla jednego użytkownika (np. z wykorzystaniem narzędzia nagrywająco-odtwarzającego), a później zaimplementowany dla określonego profilu produkcyjnego przy użyciu narzędzia do testów wydajnościowych. Implementacja musi brać pod uwagę zróżnicowanie danych w poszczególnych transakcjach (lub zbiorach transakcji).
Narzędzia do testów wydajnościowych generują obciążenie przez symulowanie dużej liczby użytkowników („wirtualnych”) realizujących określone profile produkcyjne i generujących dane wejściowe o ustalonej wielkości. Skrypty testujące wydajność często odtwarzają interakcję użytkowników z systemem na poziomie protokołu komunikacyjnego, a nie przez symulowanie interakcji przy użyciu interfejsu GUI, jak to ma miejsce w przypadku standardowych skryptów automatyzacji. Zwykle pozwala to zmniejszyć liczbę odrębnych „sesji” niezbędnych w trakcie testowania. Niektóre narzędzia do generowania obciążenia sterują działaniem aplikacji również za pomocą interfejsu użytkownika, aby dokładniej zmierzyć czas odpowiedzi systemu w warunkach obciążenia.
Narzędzia do testów wydajnościowych dokonują wielu pomiarów, które można przeanalizować w trakcie wykonywania testów lub po ich zakończeniu. Typowe metryki i raporty to:
- liczba symulowanych użytkowników;
- liczba i typ transakcji generowanych przez symulowanych użytkowników oraz częstotliwość pojawiania się transakcji;
- czasy odpowiedzi na poszczególne żądania transakcji zgłaszane przez użytkowników;
- raporty i wykresy prezentujące obciążenie i czasy reakcji;
- raporty dotyczące wykorzystania zasobów (np. w funkcji czasu, z podaniem wartości minimalnych i maksymalnych).
Głównymi czynnikami, które należy wziąć pod uwagę podczas wdrażania narzędzi do testów wydajnościowych, są:
- sprzęt i przepustowość sieci wymagane do wygenerowania obciążenia;
- kompatybilność narzędzia z protokołami komunikacyjnymi używanymi przez testowany system;
- elastyczność narzędzia pozwalająca na implementowanie różnych profili produkcyjnych;
- wymagane funkcje monitorowania, analizy i raportowania.
Ze względu na dużą pracochłonność wymaganą do wytworzenia narzędzi do testów wydajnościowych nie są one zwykle opracowywane w ramach projektu, tylko nabywane. Może jednak okazać się zasadne opracowanie konkretnego narzędzia do testowania wydajności, jeśli z powodu ograniczeń technicznych nie da się skorzystać z gotowego produktu lub jeśli profil obciążenia i realizowane przez niego funkcje są stosunkowo proste.