Wykonujemy różne warianty testów, w zależności od potrzeb klienta:
- Testy wydajnościowe (performance testing) – podstawowy rodzaj testów polegający na sprawdzeniu czy system pod ustalonym obciążeniem produkcyjnym będzie sprawnie realizował swoje zadania
- Testy obciążeniowe (load testing) – duża liczba jednocześnie działających użytkowników / przeprowadzanych transakcji utrzymywana przez określony w scenariuszu czas. Sprawdzenie jak wiele transakcji system jest w stanie obsłużyć w określonym przedziale czasu
- Testy szczytu obciążenia (peak load testing) – sprawdzenie zachowania systemu pod czasowo zwiększonym obciążeniem. Sytuacja taka ma miejsce w firmach o czasowo zwiększonym wolumenie operacji np. w okresie zamknięcia miesiąca, w szczytach zakupowych takich jak okres przedświąteczny.
- Testy przeciążeniowe (stress testing) – celowe przeciążenie systemu zbyt dużą liczbą transakcji / użytkowników / danych i sprawdzenie czy system zachowuje się w oczekiwany sposób nie powodując np. utraty spójności danych
- Testy stabilności w długim okresie (soak–endurance–stability testing) – obciążenie systemu jest utrzymywane w długim czasie. Ten rodzaj testu pozwala na ujawnienie nieprawidłowości w przydzielaniu i zwalnianiu zasobów takich jak wycieki pamięci w aplikacji. Dla systemów opartych o bazę danych pozwala wykryć zmianę wydajności systemu związaną z przyrostem danych w bazie.
- Testy skalowalności (scalability – capacity testing) – obciążenie systemu jest stopniowo zwiększane, aż do ujawnienia się wąskich gardeł.
Efekty testów
W praktyce łączymy wykonanie różnych rodzajów testów, tak by odpowiedzieć na typowe pytania „czy mój system będzie pracował po wejściu na produkcję”, „jak system się zachowa w momencie chwilowego obciążenia”, „czy jesteśmy gotowi na gorący okres zakupowy”, „co zrobić by zwiększyć wydajność systemu – w co zainwestować by go rozwiązać: CPU/pamięć/dyski/połączenia sieciowe/poprawić aplikację/zoptymalizować bazę danych etc”
Wynikiem testów jest:
- ocena wydajności działania systemu pod planowanym obciążeniem
- ocena pojemności systemu – określenie maksymalnego obciążenia jakie system może przenieść przy obecnych zasobach i w obecnej architekturze i przy zachowaniu akceptowalnych czasów odpowiedzi
- ocena stabilności działania systemu w sytuacji przeciążenia
- określenie możliwości skalowania systemu
- wskazanie czynników ograniczających wydajność systemu (tzw. „wąskich gardeł”) oraz sposobów na ich usunięcie np. poprawki w kodzie, zmiana architektury, rozbudowa zasobów tak by wydajność systemu spełniała wymagania biznesowe
Usługa typowo obejmuje:
- analizę architektury systemu (aplikacji i infrastruktury)
- wybór reprezentatywnych kluczowych transakcji do obciążenia systemu
- ustalenie kryteriów akceptacji dla czasów odpowiedzi systemu
- ustalenie scenariuszy testowych, w szczególności ustalenie wolumenu transakcji nakładanych na system w czasie
- opomiarowanie kluczowych komponentów systemu (wdrożenie lub uzupełnienie istniejącego systemu monitoringu)
- wygenerowanie danych testowych dla transakcji
- wytworzenie skryptów do obciążenia systemu
- przeprowadzenie testów w różnych scenariuszach
- opracowanie wyników i przygotowanie rekomendacji
- opcjonalnie – implementacja rekomendacji, w tym strojenie wydajnościowe środowiska IT