Testy wydajności

Wykonujemy testy wydajności w oparciu o najlepsze narzędzia oraz nasze doświadczenie w testowaniu systemów skalowanych dla kilkunastu milionów użytkowników.

Metody i narzędzia do prowadzenia testów

Podczas prowadzenia testów wykorzystujemy metody powszechnie sprawdzone i jednocześnie umożliwiające osiągnięcie optymalnych i wiarygodnych wyników. Podczas testów wykorzystujemy narzędzia Open Source Apache JMeter oraz Grafana Labs K6. Oba narzędzia to zweryfikowane i świetnie poznane przez naszych inżynierów środowiska, które działają sprawnie. Testy oparte o te narzędzia gwarantują osiąganie doskonałych rezultatów oraz niższą cenę.

Prowadzimy również testy przy użyciu komercyjnych narzędzi LoadRunner od Micro Focus (wcześniej narzędzia należały do firmy HP). Nasze doświadczenia wskazują, że dla środowisk przeznaczonych do obsługi bardzo dużej liczby użytkowników (ponad 500 000 jednoczesnych użytkowników) LoadRunner sprawdza się nieco lepiej oferując wyższą wydajność niż JMeter czy K6.

Testujemy nie tylko strony internetowe ale również rozbudowane aplikacje webowe np.: sklepy internetowe, systemy finansowo-księgowe, kadrowo-płacowe i wszystkie inne aplikacje użytkowe.

Prowadzimy również testy aplikacji umieszczonych w chmurach dostawców globalnych: Microsoft Azure, Google Cloud Platform, Amazon AWS, Oracle Cloud z uwzględnieniem architektury tych platform.

 

Rodzaje testów

Testy obciążeniowe (ang. Load tests)

To najczęściej prowadzone testy, które umożliwiają sprawdzenie w jaki sposób zachowuje się testowany system przy dużym obciążeniu. Na potrzeby tego rodzaju testów tworzymy różne scenariusze, które umożliwiają symulację dużej liczby użytkowników chodzących po stronach i wykonujemy różne czynności: logujemy się, dokonujemy zakupów płatności, dodajemy komentarze, walidujemy dane. Mierzymy przy tym czas odpowiedzi strony w celu wskazania elementów do poprawy.

Podsumowując: testy obciążenia umożliwiają sprawdzenie spełnienie wymagań wydajnościowych określonych zgodnie z zasadami opisanymi wyżej. Generowane jest obciążenie zgodne z wymaganiami naszego Klienta (często pomagamy je definiować na podstawie obserwacji) i sprawdzane jest czy system spełnia wymagania żądań na sekundę (ang. Request Per Second RPS), czasów odpowiedzi, liczby równoległych użytkowników, a jednocześnie poziom błędów jest odpowiednio niski.

Testy pojemności albo skalowalności (ang. capacity tests)

Ten rodzaj testów umożliwia określenie maksymalnej liczby użytkowników, wykonujących określone czynności przy zachowaniu najkrótszego, akceptowalnego czasu odpowiedzi strony.

Nasi klienci często chcą wiedzieć czy aplikacja webowa będzie odpowiadała szybko i sprawnie przy dużej liczbie użytkowników korzystających jednocześnie. Dzięki temu testowi pomagamy określić próg, przy którym ten czas zostanie przekroczony.

Tym samym Klient wie doskonale przy jakich warunkach będzie musiał podnieść parametry środowiska aby czas odpowiedzi nadal był właściwy.

Podsumowując: bazują na testach wydajności ale generowane obciążenie zostaje stopniowo zwiększane w celu określenia limitów systemu i punktów krytycznych. Może zaistnieć potrzeba powtórzenia tego testu wielokrotnie po przeprowadzeniu tuningu odpowiednich parametrów systemu zidentyfikowanych jako wąskie gardło i przyczyna ograniczenia.

 

Testy warunków skrajnych (ang. stress tests)

Często zastanawiamy się jak i czy w ogóle tłumaczyć z języka angielskiego stress test. To faktycznie prowadzenie testów w warunkach skrajnych, których głównym celem jest załamanie systemu.

Dzięki tego rodzaju testom możesz przekonać się czy aplikacja będzie wyrzucała błędy na ekran, może tak będzie zachowywał się serwer webowy albo serwer baz danych. Dowiesz się również czy przy tego rodzaju testach system przetrwa czy też ulegnie awarii całkowicie.

Dzięki tej wiedzy nasi klienci są w stanie przygotować plan obrony przed katastrofą i oraz plan odtworzenia po katastrofie (ang. Disaster Recovery Plan).

Testy wytrzymałości (ang. endurance tests)

Celem tych testów jest weryfikacja w jaki sposób zachowa się system przy wygenerowaniu obciążenia na zadanym poziomie przez długi czas. Jeżeli system teleinformatyczny ma działać w trybie 24/7/365 to ten test z pewnością wykaże czy nie pojawią się wycieki pamięci, zatory kolejek czy też nie nastąpi degradacja czasu odpowiedzi serwera.

Testy wytrzymałości prowadzimy często długi czas naśladując ruch generowany przez użytkowników. Testy mogą trwać kilka godzin, dni, tygodni np.: kilka tygodni testu umożliwia zweryfikowanie stabilności zachowania sklepu internetowego.

Podsumowując: testy wytrzymałości umożliwiają weryfikację w jaki sposób system zachowuje się przy dużych obciążeniach, przez dłuższy czas. W czasie testów przeciążeniowych zidentyfikowane jest obciążenie powyżej wymagań ale przy którym system wciąż zachowuje się poprawnie (tj. akceptowalne czasy odpowiedzi i poziom błędów). Następnie system jest poddany takiemu obciążeniu przez długi okres czasu (np. 8h, 24h itp.).