logo

Test wydajności

W tej sekcji dowiemy się o testowaniu wydajności, dlaczego go potrzebujemy, rodzajach testów wydajnościowych i procesie testowania wydajności.

Poniżej znajdują się tematy, które zrozumiemy w tej sekcji:

Co to jest testowanie wydajności?

Jest to najważniejsza część testów niefunkcjonalnych.

Sprawdzanie zachowania aplikacji poprzez zastosowanie pewnego obciążenia nazywa się testowaniem wydajności.

Ogólnie rzecz biorąc, test ten określa, jak szybko serwer odpowiada na żądanie użytkownika.

Podczas testowania wydajności aplikacji skoncentrujemy się na różnych czynnikach, takich jak Czas reakcji, obciążenie i stabilność aplikacji.

Czas odpowiedzi: Czas odpowiedzi to czas, jakiego potrzebuje serwer, aby odpowiedzieć na żądanie klienta.

Obciążenie: Tutaj Load oznacza, że ​​kiedy Liczba N użytkowników korzystających z aplikacji jednocześnie lub wysyłających jednorazowo żądanie do serwera.

Stabilność: O współczynniku stabilności możemy powiedzieć, że gdy N-liczba użytkowników korzysta z aplikacji jednocześnie przez określony czas.

Kiedy używamy testów wydajnościowych?

Przeprowadzimy testy wydajności, gdy oprogramowanie będzie stabilne i przeniesione do wersji produkcyjnej, a dostęp do niego może uzyskać wielu użytkowników jednocześnie, dlatego mogą wystąpić pewne problemy z wydajnością. Aby uniknąć tych problemów z wydajnością, tester przeprowadza jedną rundę testów wydajnościowych.

Ponieważ są to testy niefunkcjonalne, co nie oznacza, że ​​zawsze używamy testów wydajnościowych, przeprowadzamy je tylko wtedy, gdy aplikacja jest funkcjonalnie stabilna.

Uwaga: Testowania wydajności nie można przeprowadzić ręcznie, ponieważ nie można utrzymać jego kosztownych i dokładnych wyników.

Rodzaje testów wydajnościowych

Poniżej przedstawiono rodzaje testów wydajnościowych:

bin do bcd
    Testowanie obciążenia Test naprężeń Testowanie skalowalności Testowanie stabilności
Test wydajności

Omówmy jeden po drugim, aby zapewnić pełne zrozumienie Obciążenie, stres, skalowalność, I Stabilność test wydajności.

Testowanie obciążenia

Testowanie obciążenia służy do sprawdzania wydajności aplikacji poprzez zastosowanie obciążenia mniejszego lub równego żądanemu obciążeniu, co nazywa się testowaniem obciążenia.

Na przykład: Na poniższym obrazku 1000 użytkownikówżądane obciążenie , które podaje klient, oraz 3/sekundę jest bramka co chcemy osiągnąć przeprowadzając testy obciążeniowe.

Test wydajności

Test naprężeń

Testy obciążeniowe to testy, które sprawdzają zachowanie aplikacji poprzez zastosowanie obciążenia większego niż pożądane.

Na przykład: Jeśli weźmiemy powyższy przykład i zwiększymy pożądane obciążenie z 1000 do 1100 użytkowników, a celem będzie 4/sekundę. Test warunków skrajnych w tym scenariuszu zakończy się pomyślnie, ponieważ obciążenie jest większe (100 w górę) niż rzeczywiste pożądane obciążenie.

Test wydajności

Testowanie skalowalności

Sprawdzanie wydajności aplikacji poprzez zwiększanie lub zmniejszanie obciążenia w poszczególnych wagach (liczba użytkownika) nazywa się testowanie skalowalności . Testowanie skalowalności w górę i w dół nazywane jest testowaniem skalowalności.

Testowanie skalowalności jest podzielone na dwie części, które są następujące:

    Testowanie skalowalności w górę Testowanie skalowalności w dół

Testowanie skalowalności w górę

Testuje tam, gdzie my zwiększyć liczbę użytkowników w określonej skali dopóki nie znajdziemy punktu krytycznego. Będziemy używać testów skalowalności w górę, aby znaleźć maksymalną pojemność aplikacji.

Testowanie skalowalności w dół

Testowanie skalowalności w dół jest stosowane, gdy test obciążenia nie został pomyślnie zakończony, a następnie rozpoczyna się zmniejszenie nr. użytkowników w określonym przedziale czasu aż do osiągnięcia celu. Aby łatwo było zidentyfikować wąskie gardło (błąd).

Testowanie stabilności

Sprawdzanie wydajności aplikacji przez przykładanie obciążenia przez określony czas jest znany jako Testowanie stabilności .

Przykład testu wydajności

Weźmy jeden przykład tam, gdzie to zrobimy przetestuj zachowanie aplikacji, gdy pożądane obciążenie jest mniejsze niż 1000 lub równe 1000 użytkowników .

Na poniższym obrazku widzimy, że 100 w górę liczba użytkowników stale rośnie, aby sprawdzić maksymalne obciążenie , co jest również tzw testowanie skalowalności w górę .

    Scenariusz 1:Kiedy mamy żądane obciążenie 1000 użytkowników, a czas docelowy wynosi 2,7/s, scenariusze te zostaną spełnione podczas wykonywania testu obciążenia, ponieważ podczas testowania obciążenia skoncentrujemy się na nie. użytkowników, a zgodnie z wymaganiami jest to 1000 użytkowników.Scenariusz 2:W kolejnym scenariuszu zwiększymy pożądane obciążenie o 100 użytkowników, a czas docelowy wzrośnie do 3,5sek. Ten scenariusz zostanie spełniony, jeśli przeprowadzimy testy warunków skrajnych, ponieważ tutaj rzeczywiste obciążenie jest większe niż (1100) obciążenie pożądane (1000).Scenariusz 3:W tym przypadku, jeśli zwiększymy żądane obciążenie trzykrotnie
    1200 → 3,5sek: [nie jest mniejsze lub równe pożądanemu obciążeniu, dlatego tak będzie Ponieść porażkę ]
    1300 → 4sek: [nie jest mniejsze lub równe żądanemu obciążeniu. tj., Ponieść porażkę ]
    1400 → Rozbił się
Test wydajności

Uwaga 1: Testowanie objętości i nasiąkania jest rodzajem testów, ale nie testem wydajności.

Testowanie objętości

Testowanie woluminu to testowanie, które pomaga nam sprawdzić zachowanie aplikacji poprzez włożenie ogromnej ilości obciążenia pod względem danych, co jest znane jako testowanie wolumenu i tutaj skoncentrujemy się na liczbie szybkości transmisji danych niż na liczbie użytkowników .

Uwaga 2:
Objętość jest pojemnością, podczas gdy Obciążenie jest ilością, tj. testowanie obciążenia oznacza nie. użytkowników, a testowanie wolumenowe oznacza ilość danych.

Testowanie namaczania

W tego typu testach sprawdzamy zachowanie aplikacji w środowisku, które nie jest obsługiwane przez długi czas, co jest znane jako testowanie nasiąkania.

ciąg do json Java

Ogólnie rzecz biorąc, testowanie namaczania jest negatywnym typem testów, ponieważ już wiemy, że serwer lub środowisko nie jest wspierane.

Proces testowania wydajności

Testowania wydajności nie można przeprowadzić ręcznie, ponieważ:

  • Potrzebujemy dużo zasobów, a podejście to stało się bardziej kosztowne.
  • Dokładności nie da się utrzymać, jeśli ręcznie śledzimy czas reakcji.

Proces testowania wydajności będzie się składał z następujących kroków:

  • Zidentyfikuj scenariusze wydajności
  • Zaplanuj i zaprojektuj skrypt testu wydajności
  • Skonfiguruj środowisko testowe i rozłóż obciążenie
  • Wykonaj skrypty testowe
  • Wynik
  • Wynik analizy
  • Zidentyfikuj wąskie gardło
  • Uruchom ponownie test
Test wydajności

Jeśli wykonamy a przepływ dodatni procesu testowania wydajności, może przebiegać według poniższego procesu:

Zidentyfikuj scenariusze wydajności

Po pierwsze, zidentyfikujemy scenariusze wydajności w oparciu o poniższe czynniki:

Najczęściej spotykane scenariusze: Oznacza to, że możemy znaleźć scenariusze wydajności w oparciu o scenariusze, które są powszechnie stosowane, jak w aplikacja Gmail; będziemy występować zaloguj się, skrzynka odbiorcza, wyślij elementy, utwórz wiadomość e-mail i wyloguj się .

Najbardziej krytyczne scenariusze: Scenariusze krytyczne oznaczają regularnie używane i ważne dla aplikacji biznesowej w Gmailu zaloguj się, utwórz, skrzynkę odbiorczą i wyloguj się .

Ogromna transakcja danych: Jeśli mamy ogromne dane, oznacza to, że n-liczba użytkowników korzystających z aplikacji w tym samym czasie.

Kiedy już zidentyfikujemy scenariusze wydajności, przejdziemy do następnego kroku.

Zaplanuj i zaprojektuj skrypt testu wydajności

Na tym etapie zainstalujemy narzędzia na Maszynie Inżyniera Testów i uzyskamy dostęp do serwera testowego, a następnie napiszemy skrypt zgodnie ze scenariuszami testowymi i uruchomimy narzędzie.

Kiedy już zakończymy pisanie scenariusza, przejdziemy do kolejnego kroku.

Skonfiguruj środowisko testowe i rozłóż obciążenie

Po napisaniu skryptów testowych, przed wykonaniem, aranżujemy środowisko testowe. A także zarządzaj narzędziami, innymi zasobami i rozdzielaj obciążenie zgodnie ze „Wzorem użytkowania” lub wspomnij o czasie trwania i stabilności.

Wykonaj skrypty testowe

Kiedy już zakończymy dystrybucję obciążenia, wykonamy, zweryfikujemy i będziemy monitorować skrypty testowe.

Wynik

Po wykonaniu skryptów testowych otrzymamy wynik testu. I sprawdź, czy wynik spełnia cel w podanym czasie reakcji, czy nie, a czas reakcji może być maksymalny, średni i minimalny.

Jeżeli odpowiedź nie spełnia wymaganego czasu reakcji, wówczas zastosujemy przepływ ujemny gdzie wykona poniższe kroki:

Wynik analizy

W pierwszej kolejności przeanalizujemy wynik testu, czy odpowiada on czasowi reakcji, czy też nie.

Zidentyfikuj wąskie gardło

Następnie zidentyfikujemy wąskie gardło (błąd lub problem z wydajnością ). Wąskie gardło może wystąpić z powodu takich aspektów jak problem w kodzie, problem ze sprzętem (dysk twardy, procesor RAM), problemy z siecią, i problem z oprogramowaniem (systemem operacyjnym) . A po znalezieniu wąskiego gardła wystąpimy strojenie (poprawka lub regulacja) aby rozwiązać to wąskie gardło.

Uruchom ponownie test

Po naprawieniu wąskich gardeł uruchom ponownie skrypty testowe i sprawdź wynik, czy spełnia wymagany cel, czy nie.

Problem występuje podczas testów wydajności

Podczas wykonywania testów wydajnościowych aplikacji mogą wystąpić pewne problemy, nazywane także problemami Problem z wydajnością .

Problemy z wydajnością są następujące:

    Problem z czasem reakcji Problem ze skalowalnością Wąskie gardło Problem z szybkością

Problem z czasem reakcji

Czas odpowiedzi oznacza, jak szybko serwer odpowiada na żądanie klienta. Jeżeli żądanie użytkownika nie zostanie zrealizowane w określonym czasie, może nastąpić utrata zainteresowania użytkownika konkretnym oprogramowaniem lub aplikacją. Dlatego aplikacja lub oprogramowanie powinno mieć idealny czas reakcji, aby szybko odpowiedzieć na żądanie użytkownika.

Problem ze skalowalnością

Problemy ze skalowalnością pojawiają się, gdy aplikacja nie jest w stanie obsłużyć jednocześnie n-liczby użytkowników i oczekiwanych żądań użytkowników. Dlatego to zrobimy testowanie skalowalności w górę (sprawdź maksymalną pojemność aplikacji) i testowanie skalowalności w dół (kiedy oczekiwany czas nie pokrywa się z czasem rzeczywistym).

sortowanie listy według Java

Wąskie gardło

Wąskie gardło to nieformalna nazwa błędu, który pojawia się, gdy aplikacja jest ograniczona przez jeden komponent i ma zły wpływ na wydajność systemu.

Głównymi przyczynami wąskiego gardła są problemy z oprogramowaniem (kwestia związana z systemem operacyjnym), problemy ze sprzętem (problemy związane z dyskiem twardym, pamięcią RAM i procesorem), I problem z kodowaniem, itp.

Poniżej przedstawiono najczęstsze wąskie gardła wydajności:

  • Wykorzystanie pamięci
  • Użycie dysku
  • Zużycie procesora
  • Ograniczenia systemu operacyjnego
  • Wykorzystanie sieci

Problemy z szybkością

Kiedy przeprowadzamy testy wydajności aplikacji, powinna ona działać szybciej, aby przyciągnąć zainteresowanie i uwagę użytkownika, ponieważ jeśli prędkość aplikacji będzie niska, może ona stracić zainteresowanie użytkownika aplikacją.

Narzędzia do testowania wydajności

Na rynku dostępne są różne rodzaje narzędzi do testowania wydajności, niektóre z nich to narzędzia komercyjne i narzędzia typu open source.

Narzędzia komercyjne: LoadRunner[HP], WebLOAD, NeoLoad

Narzędzie typu open source: JMeter

LoadRunner

Jest to jedno z najpotężniejszych narzędzi do testowania wydajności, które służy do wspierania testów wydajności dla szerokiego zakresu protokołów, wielu technologii i środowisk aplikacji.

Szybko identyfikuje najczęstsze przyczyny problemów z wydajnością. A także dokładnie przewidzieć skalowalność i pojemność aplikacji.

JMeter

Oprogramowanie Apache JMeter to narzędzie typu open source, które jest w całości aplikacją Java zaprojektowaną do ładowania zachowań testów funkcjonalnych i pomiaru wydajności.

Ogólnie rzecz biorąc, został zaprojektowany do testowania aplikacji internetowych, ale teraz został rozszerzony również o inne funkcje testowe.

Kolejka priorytetowa Java

Apache JMeter służy do testowania wydajności zarówno zasobów statycznych, jak i dynamicznych oraz dynamicznych aplikacji internetowych.
Można go używać do odtworzenia dużego obciążenia serwera, sieci lub obiektu, grupy serwerów w celu przetestowania ich wytrzymałości lub analizy ogólnej wydajności przy różnych typach obciążenia.

WWWŁADUJ

Narzędzie testowe WebLOAD używane do testowania obciążenia, testowania wydajności i testów warunków skrajnych aplikacji internetowych.

Narzędzie WebLOAD łączy wydajność, skalowalność i integralność w ramach jednego procesu weryfikacji aplikacji internetowych i mobilnych.

NeoLoad

Neotys opracowuje narzędzie testowe o nazwie NeoLoad. NeoLoad służy do testowania scenariuszy testów wydajności. Za pomocą NeoLoad możemy znaleźć wąskie gardła w sieci i procesie tworzenia aplikacji mobilnych.

Narzędzie testowe NeoLoad jest szybsze w porównaniu do tradycyjnych narzędzi.

Oprócz nich istnieją inne narzędzia Obciążenie elektryczne, narzędzie do obciążania sieci, LoadUI Pro, StresStimulus, LoadView, LoadNinja i RedLine13, co pomaga przetestować wydajność oprogramowania lub aplikacji.