Co to jest testowanie wytrzymałościowe w testowaniu oprogramowania? (z przykładem)
⚡ Inteligentne podsumowanie
Test wytrzymałościowy polega na uruchomieniu aplikacji pod normalnym, oczekiwanym obciążeniem przez dłuższy czas, aby sprawdzić, czy wydajność spada z czasem. To test, który wykrywa defekty, których nie można osiągnąć podczas godzinnego testu obciążenia.
Czym jest test wytrzymałościowy?
Testy wytrzymałościowe to niefunkcjonalny rodzaj testowania oprogramowania, podczas którego oprogramowanie jest testowane pod dużym obciążeniem przez dłuższy czas, aby ocenić zachowanie aplikacji przy długotrwałym użytkowaniu. Głównym celem testów wytrzymałościowych jest upewnienie się, że aplikacja jest w stanie wytrzymać duże obciążenia bez pogorszenia czasu reakcji.
Ten typ testów przeprowadza się na ostatnim etapie cyklu wydajnościowego. Badanie wytrzymałościowe jest procesem długotrwałym i czasami trwa nawet do roku. Może to obejmować zastosowanie obciążeń zewnętrznych, takich jak ruch internetowy lub działania użytkownika. To sprawia, że testy wytrzymałościowe różnią się od Testowanie obciążenia, co zazwyczaj kończy się po kilku godzinach.
Wytrzymałość oznacza zdolność, innymi słowy, badanie wytrzymałości można nazwać badaniem wydolności.
Cele testów wytrzymałościowych
- Głównym celem testów wytrzymałościowych jest sprawdzenie wycieków pamięci.
- Aby dowiedzieć się, jak system działa przy ciągłym użytkowaniu.
- Aby mieć pewność, że po długim czasie czas reakcji systemu pozostanie taki sam lub lepszy niż na początku testu.
- Aby określić liczbę użytkowników i/lub transakcji, które dany system będzie obsługiwał i spełniał cele wydajnościowe.
- Aby zarządzać przyszłymi obciążeniami, musimy zrozumieć, ile dodatkowych zasobów (takich jak pojemność procesora, pojemność dysku, wykorzystanie pamięci lub przepustowość sieci) jest niezbędnych do obsługi wykorzystania w przyszłości.
- Testowanie wytrzymałości zazwyczaj przeprowadza się poprzez przeciążenie systemu lub zmniejszenie niektórych zasobów systemowych i ocenę konsekwencji.
- Ma to na celu zapewnienie, że po stosunkowo „normalnym” okresie użytkowania nie wystąpią defekty lub wycieki pamięci.
Co monitorować podczas testów wytrzymałościowych
Podczas testów wytrzymałościowych sprawdzane są następujące rzeczy.
- Sprawdź wyciek pamięci– Przeprowadzane są kontrole w celu sprawdzenia, czy w aplikacji nie występuje wyciek pamięci, który może spowodować awarię systemu lub systemu operacyjnego
- Przetestować zamknięcie połączenia pomiędzy warstwami układu – Jeśli połączenie pomiędzy warstwami systemu nie zostanie pomyślnie zamknięte, może to spowodować zablokowanie niektórych lub wszystkich modułów systemu.
- Przetestuj połączenie z bazą danych, które zostało pomyślnie zamknięte– Jeśli połączenie z bazą danych nie zostanie pomyślnie zamknięte, może to spowodować awarię systemu
- Czas reakcji testu – System jest testowany pod kątem czasu reakcji systemu, gdy aplikacja staje się mniej wydajna w wyniku długotrwałego użytkowania systemu.
Jak przeprowadzać testy wytrzymałościowe
Poniżej znajduje się podstawowe podejście do testu wytrzymałościowego
- Środowisko testowe – Określ sprzęt, oprogramowanie, system operacyjny wymagany do testowania wytrzymałości, przydziel role i obowiązki w zespole itd. Środowisko powinno być gotowe przed wykonaniem testu. Musisz również oszacować wspólny rozmiar produkcji bazy danych i roczny wzrost. Jest to wymagane, ponieważ musisz przetestować, jak Twoja aplikacja zareaguje po roku, dwóch lub pięciu latach.
- Tworzenie planu testów, scenariuszy – W zależności od charakteru testowania – ręcznego, automatycznego lub kombinacji obu, Przypadek testowy należy zaplanować projekt, przeglądy i wykonanie. Testowanie obciążające system, testowanie punktu krytycznego itp. również powinno być częścią planu testów. Testowanie obciążenia systemu określa punkt przerwania w aplikacji.
- Oszacowanie testu – Podaj szacunkowy czas potrzebny na ukończenie fazy testowania. Należy to przeanalizować na podstawie liczby zaangażowanych testerów i liczby wymaganych cykli testowych.
- Ocena ryzyka - Analiza ryzyka i podjęcie odpowiednich działań zapobiegawczych. Ustalenie priorytetów przypadków testowych zgodnie z czynnikiem ryzyka i zidentyfikowanie poniższych zagrożeń i problemów, które tester może wykonać podczas testu wytrzymałościowego.
- Czy wydajność pozostanie niezmienna w miarę upływu czasu?
- Czy są jeszcze inne drobne problemy, które nie zostały jeszcze wykryte?
- Czy występują zakłócenia zewnętrzne, które nie zostały wyeliminowane?
- Harmonogram testów – Określ budżet, rezultaty w ramach czasowych. Jak Testy wytrzymałościowe stosuje ogromny, ale naturalny układ obciążenia transakcji w systemie/aplikacji przez ciągły okres czasu.
Przykład testu wytrzymałościowego
Kompletujemy wszystkie dokumenty (wymagana jest kopia paszportu i XNUMX zdjęcia) potrzebne do Test naprężeń doprowadza testowany system do granic możliwości, Testy wytrzymałościowe przenosi aplikację do granic możliwości z biegiem czasu.
Na przykład, najbardziej złożone problemy – wycieki pamięci, obciążenie serwera bazy danych i brak reakcji systemu – występują, gdy oprogramowanie działa przez dłuższy czas. Jeśli pominiesz testy wytrzymałościowe, szanse na wykrycie takich defektów przed wdrożeniem są dość niskie.
Narzędzia do testowania wytrzymałości
- Wczytaj do sieci
- Ładowanie zakończoneComp
- Apache JMeter
- LoadRunner
- Wygląd
- Załaduj interfejs użytkownika
- OtwórzSTA
- Rational Performance Tester
Zalety testów wytrzymałościowych
- Pomaga w określeniu obciążenia, jakie może obsłużyć system pod obciążeniem.
- Zapewnia dokładne dane, których klient może użyć do sprawdzenia lub ulepszenia swoich potrzeb w zakresie infrastruktury.
- Identyfikuje problemy z wydajnością, które mogą wystąpić, gdy system działa na wysokim poziomie przez dłuższy czas
- Typowe problemy są identyfikowane w mniejszych, ukierunkowanych testach wydajności, co oznacza, że aplikacja pozostaje dostępna nawet przy dużym obciążeniu w bardzo krótkim czasie.
- Test wytrzymałościowy służy również do sprawdzenia, czy po długim okresie wykonywania nastąpi pogorszenie wydajności
Wady testów wytrzymałościowych
- Często trudno jest określić, ile stresu warto zastosować.
- Testowanie wytrzymałości może spowodować awarie aplikacji i/lub sieci, które mogą skutkować poważnymi zakłóceniami, jeśli Środowisko testowe nie są izolowane.
- W wyniku nadmiernego obciążenia systemu może dojść do trwałej utraty lub uszkodzenia danych.
- Po usunięciu stresu wykorzystanie zasobów pozostaje bardzo wysokie.
- Niektóre komponenty aplikacji nie odpowiadają.
- Nieobsługiwane wyjątki są obserwowane przez użytkownika końcowego.
Jak ten test pasuje do rodziny testów wydajnościowych
Testowanie wydajności to termin ogólny. Poniższe warianty różnią się jedynie kształtem przyłożonego obciążenia i czasem jego utrzymywania, dlatego tak często są ze sobą mylone.
| Rodzaj testu | Wzór obciążenia | Pytanie, na które odpowiada |
|---|---|---|
| Testowanie obciążenia | Oczekiwane obciążenie szczytowe, krótki czas trwania | Czy system spełnia swoje cele przy normalnym, szczytowym natężeniu ruchu? |
| Test naprężeń | Zwiększony ponad pojemność aż do awarii | Gdzie następuje przerwa i czy awaria przebiega gładko? |
| Testowanie Spike'a | Nagły, ekstremalny wzrost, a następnie wycofanie | Czy przeżywa i dochodzi do siebie po szoku komunikacyjnym? |
| Testy wytrzymałościowe | Normalne obciążenie utrzymywane przez wiele godzin | Czy wydajność pogarsza się z czasem? |
| Testowanie zanurzeniowe | Długotrwałe obciążenie przez dłuższy okres | Czy występują wycieki pamięci lub wyczerpanie zasobów? |
| Testy stabilności | Zmienne obciążenie w różnych warunkach | Czy system pozostaje niezawodny w zmieniających się warunkach? |
| Testowanie głośności | Zwykli użytkownicy, bardzo duża ilość danych | Czy system radzi sobie ze wzrostem bazy danych? |
Test wytrzymałościowy i test zanurzeniowy są często traktowane jako synonimy. W powszechnym użyciu są to: oba utrzymują stałe obciążenie przez długi czas. Tam, gdzie zespoły je rozróżniają, testy wytrzymałościowe koncentrują się na tym, czy czasy reakcji rosną, podczas gdy testy nasączenia koncentrują się na zużyciu zasobów, takich jak pamięć, uchwyty plików i pule połączeń. Uruchomienie takiego testu zazwyczaj dostarcza dowodów na oba te zjawiska.
Kluczowe wskaźniki do uchwycenia podczas testu
Wydajność testu jest tak dobra, jak to, co rejestrujesz podczas jego wykonywania. Zarejestruj te sześć parametrów po stronie serwera i klienta, a następnie porównaj je z danymi bazowymi, a nie z przeczuciem.
| metryczny | Co ci to mówi | Znak ostrzegawczy |
|---|---|---|
| Średni czas odpowiedzi | Typowe doświadczenie użytkownika | Jakiekolwiek przesunięcie w górę w poprzek biegu |
| 95. percentyl czasu reakcji | Doświadczenia najwolniejszych użytkowników | Znacznie powyżej średniej, co oznacza niespójność |
| Wydajność | Liczba żądań obsłużonych na sekundę | Spadek przy stałym obciążeniu |
| Poziom błędu | Udział nieudanych lub przekroczonych limitów czasu żądań | Każde przekroczenie ustalonego progu |
| Wykorzystanie procesora i pamięci | Zapas zasobów serwera | Pamięć, która pnie się w górę i nigdy nie powraca |
| Połączenia i wątki bazy danych | Wyczerpanie basenu | Liczba, która stale rośnie bez wydawania |
Odczytaj średnią i percentyl jednocześnie. Średnia 800 ms przy 95. percentylu 900 ms opisuje spójny system. Ta sama średnia przy 95. percentylu 9 sekund oznacza, że jeden na dwudziestu użytkowników ma problemy, a średnia to ukrywa.
Zwróć uwagę na kształt, nie tylko na wartość. W przypadku każdego długotrwałego testu płaska linia zasobów oznacza zaliczenie testu, a rosnąca – przeciek, nawet jeśli w chwili zakończenia testu liczba bezwzględna nadal mieści się w limicie.
Testy wytrzymałościowe: najważniejsze wnioski
- In Inżynieria oprogramowania, Testowanie wytrzymałościowe jest podzbiorem testów obciążeniowych.
- Testowanie wytrzymałości jest procesem długotrwałym i czasami trwa nawet do roku
- Kontrole mają na celu weryfikację
- Sprawdź wyciek pamięci
- Czas reakcji testu
- Przetestuj połączenie z bazą danych itp.


