Co to jest test stresowy w testowaniu oprogramowania?
⚡ Inteligentne podsumowanie
Podczas testów obciążeniowych aplikacja jest poddawana testom wykraczającym poza jej normalne granice działania, aby znaleźć punkt krytyczny, potwierdzić, że awarie są obsługiwane prawidłowo, oraz udowodnić, że system bez problemu odzyskuje sprawność po usunięciu ekstremalnego obciążenia.
Co to jest test warunków skrajnych?
Testy warunków skrajnych to rodzaj testowania oprogramowania, który weryfikuje stabilność i niezawodność aplikacji. Celem testów obciążeniowych jest ocena odporności oprogramowania i możliwości obsługi błędów w warunkach ekstremalnie dużego obciążenia oraz zapewnienie, że oprogramowanie nie ulegnie awarii w sytuacjach kryzysowych. Testy te są celowo przeprowadzane poza normalnymi punktami operacyjnymi i oceniane jest zachowanie oprogramowania w ekstremalnych warunkach.
W ramach testów obciążeniowych testowana aplikacja (AUT) jest poddawana krótkiemu obciążeniu w celu sprawdzenia jej wytrzymałości. Najbardziej powszechnym zastosowaniem testów obciążeniowych jest określenie granicy, powyżej której system, oprogramowanie lub sprzęt ulegają awarii. Testy te sprawdzają również, czy system wykazuje skuteczne zarządzanie błędami po przekroczeniu tej granicy.
In Inżynieria oprogramowaniaTestowanie warunków skrajnych jest często wymieniane obok Testy wytrzymałościowe, ale różnią się one od siebie: w testach wytrzymałościowych stosuje się nienormalnie wysokie obciążenie w krótkim czasie, aby znaleźć punkt krytyczny, podczas gdy w testach wytrzymałościowych (wytrzymałościowych) utrzymuje się umiarkowane obciążenie przez wiele godzin, aby wykryć stopniową degradację.
Zrzut ekranu poniżej przedstawia duży blok danych kopiowany ze strony internetowej.
Testowana aplikacja jest obciążana, gdy 5 GB danych zostaje skopiowane ze strony internetowej i wklejone do Notatnika. Notatnik jest teraz obciążony i zwraca komunikat o błędzie „Brak odpowiedzi”, dokładnie tak, jak pokazano na kolejnym zrzucie ekranu.
Tę samą zasadę można zastosować bezpośrednio w systemach po stronie serwera.
Potrzeba testów obciążeniowych
Rozważ poniższe przykłady z czasu rzeczywistego, w których zastosowanie testów wytrzymałościowych staje się oczywiste:
- W czasie trwania festiwalu sklep internetowyping witryna może odnotować wzrost ruchu lub ogłoszenie wyprzedaży.
- Kiedy w wiodącej gazecie pojawia się wzmianka o blogu, następuje nagły wzrost ruchu.
Przeprowadzenie testów obciążeniowych jest konieczne, aby sprostać takim nagłym wzrostom ruchu. Niezastosowanie się do tego nagłego wzrostu ruchu może skutkować utratą przychodów i reputacji.
Testy wytrzymałościowe są również niezwykle cenne z następujących powodów:
- Sprawdza, czy system działa w warunkach odbiegających od normy.
- Potwierdza, że w przypadku obciążenia systemu wyświetlany jest odpowiedni komunikat o błędzie.
- Awaria systemu w ekstremalnych warunkach może skutkować ogromnymi stratami dochodów.
- Lepiej przygotować się na ekstremalne warunki, wykonując zawczasu testy wytrzymałościowe.
W następnej sekcji opisano, co musi udowodnić udany test wytrzymałościowy.
Cele testów warunków skrajnych
Celem testów obciążeniowych jest analiza zachowania systemu po awarii. Aby testy obciążeniowe zakończyły się sukcesem, system powinien wyświetlić odpowiedni komunikat o błędzie w ekstremalnych warunkach.
Do przeprowadzania testów obciążeniowych wykorzystuje się czasami ogromne zbiory danych, które mogą zostać utracone w przypadku awarii systemu. Testerzy powinni upewnić się, że dane związane z bezpieczeństwem nie zostaną utracone podczas testów obciążeniowych.
Głównym celem testów obciążeniowych jest upewnienie się, że system odzyska sprawność po awarii. Cecha ta nazywana jest odzyskiwalnością. Testowanie odzyskiwania następnie szczegółowo weryfikuje procedurę przywracania.
Testowanie obciążeniowe a testowanie wytrzymałościowe
Obie techniki należą do Test wydajności rodziny, więc łatwo je pomylić. Poniższy diagram przedstawia porównanie obu profili obciążenia.
| Testowanie obciążenia | Testy warunków skrajnych |
|---|---|
| Testowanie obciążenia testuje zachowanie systemu w normalnych warunkach obciążenia pracą; symuluje rzeczywiste, oczekiwane obciążenie pracą. | Testowanie wytrzymałościowe polega na sprawdzeniu zachowania systemu w ekstremalnych warunkach i jest przeprowadzane aż do momentu awarii systemu. |
| Testowanie obciążeniowe nie powoduje uszkodzenia systemu. | Testowanie obciążeniowe ma na celu celowe uszkodzenie systemu poprzez przeciążenie go danymi lub ograniczenie zasobów. |
Powiązane profile obejmują Testowanie Spike'a (nagły krótki wybuch), Testowanie głośności (duże dane, a nie wielu użytkowników) i Testowanie skalowalności (przestrzeń wzrostu).
Rodzaje testów warunków skrajnych
Poniżej przedstawiono rodzaje testów wytrzymałościowych, omówione po kolei.
Rozproszone testy obciążeniowe
W rozproszonych systemach klient-serwer testy przeprowadza się na wszystkich klientach z serwera. Rolą serwera testującego jest dystrybucja zestawu testów testujących do wszystkich klientów testujących i track status każdego klienta. Po nawiązaniu kontaktu z serwerem, serwer dodaje jego nazwę i rozpoczyna wysyłanie danych do testów. Poniższy rysunek pokazuje, jak serwer testowy dociera do niektórych klientów, ale nie do innych.
W międzyczasie komputery klienckie wysyłają sygnał, czyli sygnał „heartbeat”, potwierdzający, że nadal są połączone z serwerem. Jeśli serwer nie odbierze żadnego sygnału z komputera klienckiego, należy go dokładniej przeanalizować w celu debugowania. Na rysunku serwer może połączyć się z dwoma klientami (Klientem 1 i Klientem 2), ale nie może wysłać ani odebrać sygnału od Klienta 3 i Klienta 4.
W przypadku takich scenariuszy testowania obciążeniowego najlepszym rozwiązaniem jest przeprowadzenie testów nocnych. Duże farmy serwerów potrzebują bardziej wydajnej metody określania, które komputery uległy awariom obciążeniowym i wymagają zbadania.
Testowanie obciążeniowe aplikacji
Testowanie to koncentruje się na wyszukiwaniu błędów związanych z blokowaniem danych, problemami sieciowymi i wąskimi gardłami wydajnościowymi w pojedynczej aplikacji.
Testowanie warunków skrajnych transakcji
Przeprowadza testy obciążeniowe jednej lub większej liczby transakcji między dwiema lub większą liczbą aplikacji. Służy do precyzyjnego dostrajania i optymalizacji systemu.
Testowanie warunków skrajnych
To zintegrowane testy obciążeniowe, które można przeprowadzić na wielu systemach współdzielących ten sam serwer. Służy do wykrywania defektów, w których jedna aplikacja blokuje dane innej aplikacji.
Eksploracyjne testy obciążeniowe
Ten rodzaj testów obciążeniowych służy do testowania systemu przy nietypowych parametrach lub warunkach, które są mało prawdopodobne w rzeczywistych warunkach. Służy do wykrywania defektów w nieoczekiwanych sytuacjach, takich jak:
- Jednocześnie zalogowała się duża liczba użytkowników.
- Skaner antywirusowy uruchamiany jest na wszystkich komputerach jednocześnie.
- Baza danych przechodząca w tryb offline podczas próby uzyskania do niej dostępu ze strony internetowej.
- Jednoczesne wprowadzanie dużej ilości danych do bazy danych.
Bez względu na zastosowaną wersję kolejność wykonywania pozostaje taka sama.
Jak przeprowadzić testy warunków skrajnych?
Proces testowania wytrzymałościowego można przeprowadzić w 5 głównych krokach:
- Krok 1) Planowanie testu warunków skrajnych: Tutaj zbierasz dane systemowe, analizujesz system i definiujesz cele testów wytrzymałościowych.
- Krok 2) Utwórz skrypty automatyzacji: W tej fazie tworzysz skrypty automatyzacji testów obciążeniowych i generujesz dane testowe dla scenariuszy obciążeniowych.
- Krok 3) Wykonanie skryptu: Na tym etapie uruchamiasz skrypty automatyzacji testów obciążeniowych i zapisujesz wyniki testów obciążeniowych.
- Krok 4) Analiza wyników: Na tym etapie analizujesz wyniki testu wytrzymałościowego i identyfikujesz wąskie gardła.
- Krok 5) Dostosowywanie i optymalizacja: Na tym etapie dostrajasz system, zmieniasz konfiguracje i optymalizujesz kod, aby osiągnąć oczekiwane wyniki.
Na koniec ponownie uruchamiasz cały cykl, aby sprawdzić, czy wprowadzone zmiany przyniosły oczekiwane rezultaty. Na przykład, nierzadko potrzeba 3 do 4 cykli testów obciążeniowych, zanim cele wydajnościowe zostaną osiągnięte, dlatego skrypty są zazwyczaj aktualizowane równolegle z… regresja na.
Narzędzia zalecane do testów obciążeniowych
Cztery poniższe narzędzia zaspokajają większość potrzeb, od pakietów korporacyjnych po bezpłatne opcje typu open source.
LoadRunner
LoadRunner jest powszechnie używanym narzędziem do testowania obciążenia, obecnie sprzedawanym przez OpenText w edycjach Professional, Enterprise i Cloud po przejściu z HP do Micro Focus OpenTextWyniki testów obciążeniowych wygenerowane przez LoadRunner są traktowane jako benchmark.
JMeter
Apache JMeter jest narzędziem testowym o otwartym kodzie źródłowym. Jest to czyste Java Aplikacja do testów obciążeniowych i wydajnościowych, przeznaczona do testowania takich typów testów, jak obciążenie, funkcjonalność i obciążenie. Aktualne wersje 5.6.x Apache JMeter wymagać Java 8 lub nowszy, z Java Zalecane 17.
Tester stresu
To narzędzie zapewnia kompleksową analizę wydajności aplikacji internetowych, prezentuje wyniki w formie graficznej i jest proste w obsłudze. Nie wymaga pisania skryptów wysokiego poziomu, co pozwala utrzymać zwrot z inwestycji na niskim poziomie.tracidealne dla mniejszych zespołów.
NeoZaładować
NeoZaładować, obecnie część Tricentis portfolio, jest popularnym narzędziem do testowania stron internetowych i aplikacje mobilne. Umożliwia symulację tysięcy użytkowników w celu oceny wydajności aplikacji pod obciążeniem i analizy czasu reakcji. Obsługuje również zintegrowane z chmurą testy wydajności, obciążenia i obciążenia oraz jest dobrze skalowalny.
Więcej opcji znajdziesz w przewodniku narzędzia do testowania wydajności; bez względu na to, którą opcję wybierzesz, jej wynik będzie miał znaczenie tylko w kontekście poniższych wskaźników.
Metryki do testów warunków skrajnych
Metryki pomagają w ocenie wydajności systemu i są zazwyczaj analizowane pod koniec testu obciążeniowego. Powszechnie używane metryki dzielą się na trzy rodziny.
Pomiar skalowalności i wydajności
- Stron na sekundę: Mierzy liczbę żądanych stron na sekundę.
- Wydajność: Podstawowa metryka — rozmiar danych odpowiedzi na sekundę.
- Rundy: Liczba zaplanowanych scenariuszy testowych w stosunku do liczby ich wykonania przez klienta.
Odpowiedź aplikacji
- Czas trafienia: Średni czas pobierania obrazu lub strony.
- Czas do pierwszego bajtu: Czas potrzebny na zwrócenie pierwszego bajtu danych lub informacji.
- Czas wyświetlania strony: Czas potrzebny na pobranie wszystkich informacji ze strony.
Awarie
- Nieudane połączenia: Liczba nieudanych połączeń odrzuconych przez klienta (słaby sygnał).
- Nieudane rundy: Liczba rund, które się nie powiodły.
- Nieudane trafienia: Liczba nieudanych prób wykonania przez system (uszkodzone łącza lub nieoglądane obrazy).
W części końcowej wymieniono sytuacje, które najczęściej uzasadniają przeprowadzenie testu warunków skrajnych.
Przykłady testów wytrzymałościowych
Testowanie warunków skrajnych jest bardzo przydatne, gdy spodziewamy się, że jakieś wydarzenie wygeneruje ruch znacznie przekraczający dzienną normę:
- Strona internetowa e-commerce ogłaszająca wyprzedaż festiwalową.
- Serwis informacyjny publikujący informacje o ważnym wydarzeniu.
- Rada edukacyjna publikująca wyniki egzaminów.
- Serwisy społecznościowe, blogi i aplikacje mobilne w momencie viralu.
W każdym przypadku test monitoruje zasoby, takie jak pamięć, procesor i sieć, sprawdza, czy w warunkach dużego obciążenia pojawiają się odpowiednie komunikaty o błędach, i potwierdza, że system powróci do normy. Pasuje do cykl życia testowania oprogramowania jako niefunkcjonalna kontrola obok Testowanie systemu i szerszy zestaw typy testowania oprogramowania.

.png)
.png)

