Testy wydajnościowe to specjalne rodzaje testów, które służą do sprawdzania wydajności i niezawodności oprogramowania, sprzętu lub systemu.
Celem tych testów jest zbadanie, jak dana aplikacja, sprzęt lub system radzi sobie z obciążeniem i jakie są jego ograniczenia w zakresie wydajności.
Testy wydajnościowe mogą być wykonywane w różnych sytuacjach, na przykład podczas tworzenia nowego oprogramowania lub przygotowywania systemu do wdrożenia, a także w celu zdiagnozowania i rozwiązania problemów z wydajnością już istniejącego oprogramowania lub systemu.
Testy wydajnościowe polegają na wyznaczaniu specjalnych scenariuszy testowych, które symulują różne warunki i obciążenia, a następnie namierzaniu i porównywaniu parametrów takich jak czas odpowiedzi, wydajność procesora czy pamięć ram. Wyniki tych testów mogą być wykorzystywane do optymalizacji i udoskonalania oprogramowania lub systemu oraz do zapewnienia jak najlepszej wydajności i niezawodności
Systemy i aplikacje mają ograniczoną wydajność, dlatego producenci wprowadzając je na rynek podają ich wydajność w karcie katalogowej za pomocą różnych miar i testów.
Na przykład dla pamięci dyskowych są to IOPsy i opóźnienia, a dla serwerów/procesorów - benchmarki CPU. Pozwala to porównywać rozwiązania lub dobierać odpowiednie dla potrzeb użytkownika, szczególnie w przypadku pamięci masowej i IOPSów.
W przypadku złożonych systemów, takich jak aplikacje, trudno jest określić wydajność za pomocą jednego kryterium, ale dla aplikacji, które kupujesz i instalujesz na własnych zasobach, ważne jest wiedzieć, jaki serwer (procesor i RAM) i storage (wielkość lub szybkość) są potrzebne, aby aplikacja działała sprawnie przy określonej liczbie użytkowników.
Producenci zdobywają tę informację przeprowadzając testy wydajnościowe i korygują ją na podstawie doświadczenia i rzeczywistych przypadków użytkowania.
Właściwie każdą aplikację powinno się regularnie testować. Zarówno zmiany developerskie w kodzie jak i przybywanie danych wprowadzanych przez użytkowników potrafią diametralnie zmienić działanie aplikacji (jej wydajność) i takie testowanie potrafi wykryć problem zanim zauważą go użytkownicy, oraz pozwoli go odpowiednio wcześniej rozwiązać. Istotne są także testy stabilności – wykrywające np. problemy z wyciekami pamięci (aplikacja przy stałym obciążeniu chce coraz więcej zasobów – zwykle pamięci RAM) i zapotrzebowanie to rośnie w nieskończoność.
Za każdym razem testy wydajnościowe są dostosowywane do klienta.
Pierwszy etap to zbadanie co trzeba przetestować, ustalenia jakie scenariusze interesują klienta, a następnie przygotowanie narzędzi, przeprowadzenie testów i opracowanie wyników.
Testów wydajnościowych nie przeprowadzamy ‘manualnie’, musimy skorzystać z dedykowanego do tego celu oprogramowania, technicznych kompetencji ludzkich, czy zagadnień z dziedziny automatyzacji testów