Testy wydajności systemów IT

Usługa testów wydajności systemów skierowana jest do organizacji wykorzystujących bądź planujących uruchomienie systemów działających w dużej skali, krytycznych dla organizacji. Wykonanie testów wydajnościowych i wdrożenie rekomendacji zapobiega problemom występującym na produkcji spowodowanych przez niewystarczającą wydajność systemów takim jak zwolnione działanie, nieprawidłowe działanie czy też zupełne wyłączenie. Zalecamy wykonanie testów wydajnościowych przed wdrożeniem istotnych zmian w systemie, takich jak wdrożenie nowej wersji aplikacji, rekonfiguracja infrastruktury.

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