4digital.cloud4digital.cloud
← Wszystkie realizacje

Projektowanie rozwiązań

Wiarygodne testy wydajności

Rezultat: Testy pokazały, że pod określonym obciążeniem aplikacja gubiła część żądań i nie odpowiadała w wymaganym czasie, a przy dużym natężeniu niepoprawnie przetwarzała zdarzenia.

01 / Zagadnienie

Test wydajności miał odtworzyć rzeczywiste procesy aplikacji, a nie tylko wygenerować ruch. Żądania dla poszczególnych ścieżek, w tym ścieżki krytycznej, trzeba było budować na podstawie pobranych i przetworzonych danych, z uwzględnieniem zależności między systemami.

Statyczny zestaw żądań wysyłanych przez generator obciążenia tych zależności nie odwzorowywał. Pomiar musiał też opisywać aplikację, a nie ograniczenia drogi, którą docierał do niej ruch testowy.

02 / Metodologia

Testy zaprojektowałem według trzech zasad:

  • Scenariusze budowane z danych — żądania przygotowywane na podstawie pobranych i przetworzonych danych, z uwzględnieniem zależności między systemami.
  • Oddzielenie przygotowania scenariusza od generowania obciążenia — dane i żądania przygotowuje osobna aplikacja, a generator obciążenia realizuje właściwy test.
  • Pomiar bez ograniczeń ścieżki dostępu — testy uruchamiane tam, gdzie wynik opisuje aplikację, a nie drogę, którą dociera do niej ruch testowy.

03 / Autorskie rozwiązanie i rezultat

Zaprojektowałem i zbudowałem aplikację, która integruje się z systemami potrzebnymi do przygotowania danych, buduje żądania dla różnych scenariuszy testowych i przekazuje je do generatora obciążenia. Testy uruchamiałem tam, gdzie pomiar nie obejmował ograniczeń ścieżki dostępu.

Testy ujawniły klasy nieprawidłowości niewidoczne przy statycznym zestawie żądań: gubienie żądań i przekroczenia czasu odpowiedzi pod określonym obciążeniem oraz nieprzetworzone i niepoprawnie przetworzone zdarzenia przy dużym natężeniu.

Wartość: wiarygodny obraz zachowania aplikacji pod obciążeniem, w tym konkretne klasy błędów pojawiające się przy dużym natężeniu żądań i zdarzeń.

Obszary technologiczne
Testy wydajności · Programowanie (JVM) · Integracje · Przygotowanie danych testowych · Generowanie obciążenia · Przetwarzanie zdarzeń