Testowanie stabilności w testowaniu oprogramowania

⚡ Inteligentne podsumowanie

Testowanie stabilności sprawdza, czy aplikacja działa niezawodnie w zmieniających się warunkach, a nie tylko przy jednym, stałym obciążeniu. Ujawnia awarie, wyczerpanie zasobów i degradację, których nigdy nie osiągnie się w krótkim okresie funkcjonalnym.

  • 🏗️. Główny cel: Potwierdź niezawodność systemu przy zmieniającym się obciążeniu i dłuższym okresie eksploatacji.
  • ⚠️ Uniknięte ryzyko: Nieprzetestowane systemy zawodzą w warunkach produkcyjnych, których nikt nie przećwiczył.
  • 📊 Pierwotny Signals: Liczba procesorów, pamięci, dysków i wątków tracprzez cały okres trwania.
  • 🔄 Niefunkcjonalne: Mierzy zachowanie pod wpływem stresu, a nie poprawność cech.
  • 🧪 Projekt testu: Przykłady obejmują stałe obciążenie procesora, wykorzystanie pamięci i powtarzające się transakcje.
  • 📈 Raportowanie: Wykresy trendów są ważniejsze niż pojedyncze odczyty, ponieważ dryft jest wadą.

Testowanie stabilności w testowaniu oprogramowania

Czym jest testowanie stabilności?

Testowanie stabilności to rodzaj niefunkcjonalnego testowania oprogramowania przeprowadzanego w celu pomiaru wydajności i zdolności aplikacji do ciągłego działania przez długi okres czasu. Celem testowania stabilności jest sprawdzenie, czy aplikacja nie ulega awarii lub awarii podczas normalnego użytkowania w dowolnym momencie, poprzez wykorzystanie pełnego zakresu użytkowania.

Testowanie stabilności przeprowadza się w celu sprawdzenia wydajności opracowanego produktu poza normalną wydajnością operacyjną, często do punktu przerwania. Większe znaczenie ma obsługa błędów, niezawodność oprogramowania, solidność i skalowalność produktu przy dużym obciążeniu niż sprawdzanie zachowania systemu w normalnych okolicznościach.

Testowanie stabilności ocenia problemy ze stabilnością. Testowanie to ma na celu przede wszystkim maksymalne obciążenie komponentu oprogramowania. Jest to technika niefunkcjonalna.

Testowanie stabilności
Testowanie stabilności

Testowanie stabilności jest również określane jako obciążenie lub testy wytrzymałościowe.

Ryzyko, jeśli testowany system nie przeszedł testu stabilności

W przypadku testowanej aplikacji, do której wprowadzana jest duża liczba użytkowników i aplikacji, które muszą działać miesiącami bez ponownego uruchamiania, prawdopodobnie wystąpi szereg problemów:

Można napotkać możliwy błąd,

  • system zwalnia
  • system napotyka problemy z funkcjonalnością
  • system wykazuje zachowanie przewodowe
  • system całkowicie się zawiesza

W inżynierii oprogramowania Testowanie stabilności zazwyczaj obejmuje testowanie systemu z dużą liczbą użytkowników (wirtualnie) i pomiar parametrów wydajności w celu sprawdzenia, czy system może wytrzymać przewidywane obciążenie.

Dlaczego testowanie stabilności

Tego rodzaju testy pomagają użytkownikom zrozumieć, jak system będzie działał w rzeczywistych sytuacjach.

Dlatego testowanie stabilności pozwala sprawdzić,

  • Zapewnij pewność co do stabilności testowanego systemu.
  • Upewnij się, że Twój system może obsłużyć duże programy.
  • Monitoruj efektywność swojego systemu.
  • Sprawdź stabilność systemu pod obciążeniem.

Odgrywa ważną rolę w rozwoju produktu, ponieważ służy do określenia ograniczeń testowanego oprogramowania przed jego wydaniem lub obszarów wymagających dalszych ulepszeń, zanim produkt zostanie wprowadzony na rynek lub do produkcji.

Bardzo częstym przykładem techniki testowania stabilności jest

Online Schmielping Portals: Testy stabilności sprawdzą, jak strona będzie się zachowywać, gdy –

  • Wysoka Ilość danych wprowadzonych w godzinach szczytu
  • Liczba trafień w określonym czasie
  • Problem z ładowaniem strony w tym samym czasie
  • Zachowanie systemu
  • Responsywność systemu i wiele innych podlegają Testowanie stabilności

Inny przykład

A CPU test jest popularną formą testu stabilności w ramach Test wydajności technika. Ten test sprawdza stabilność procesora, a także monitoruje jego wydajność w miarę wzrostu obciążenia procesora.

Jak przeprowadzić test stabilności

  • Aby określić zakres i cel testów, musimy upewnić się, że serwer(y) aplikacji nie ulegnie awarii podczas wykonywania testu obciążenia.
  • Aby określić problemy biznesowe, sprawdź wydajność i obciążenie systemu z punktu widzenia użytkownika końcowego.
  • Aby przypisać różne obowiązki i role, np. - Tworzenie planu testów, Przypadek testowy projektowanie, przegląd przypadków testowych, wykonanie testów itp.
  • Aby zapewnić dostarczenie wyników testu w określonym czasie
  • Aby zapewnić prawidłowe Testowanie obciążenia narzędzia i zespół doświadczenia jest obecny w tym samym.
  • Pomiar ryzyka i kosztów obejmuje testowanie. To określi koszt każdego wykonania pod względem wykorzystania procesora i pamięci.
  • Określ Wada trackról i raportowanie oraz ich właściwa mapaping z wymaganiami.

Przypadek testowy do testowania stabilności wydajności procesora

  • Aby sprawdzić górną granicę systemu.
  • Sposób awarii lub odzyskiwania systemu.
  • Łączna liczba transakcji zrealizowanych na żądanie.
  • Niezależnie od tego, czy reakcja na transakcję pozostaje stała, czy też wzrasta w czasie.
  • Jak system zachowuje się pod dużym obciążeniem.
  • Jego reakcja i zachowanie pod dużym obciążeniem.

Raporty z testów dotyczących testów stabilności

Podczas wykonywania testów gromadzone i mierzone są różne statystyki, które następnie analizuje się w celu wygenerowania raportu i zidentyfikowania możliwych problemów z wydajnością.

Przykładowe statystyki zebrane w ramach testu to:

  • Czasy reakcji transakcji: Średni czas potrzebny na wykonanie transakcji podczas testu. Statystyka ta oceni, czy wydajność serwera mieści się w akceptowalnych minimalnych i maksymalnych okresach realizacji transakcji zdefiniowanych dla systemu. Informacje te pozwolą oszacować czas potrzebny na przetworzenie żądania przez serwer WWW i przesłanie go do serwera aplikacji, który w w większości przypadków wyśle ​​żądanie do serwera bazy danych.
  • Trafienia na sekundę: Liczba wejść na serwer przez użytkowników. Te statystyki pozwalają określić liczbę obciążeń generowanych przez użytkowników w odniesieniu do liczby trafień.
  • Wydajność: Wielkość przepustowości serwera WWW podczas testu, mierzona w bajtach. Przepustowość oznacza ilość danych, które użytkownicy otrzymali z serwera w dowolnym momencie. Ta statystyka pomaga ocenić wielkość obciążenia generowanego przez użytkowników.
  • Transakcja na sekundę: Są to łączna liczba zakończonych transakcji (zarówno udanych, jak i nieudanych) przeprowadzonych podczas testu. Ta statystyka pomaga sprawdzić rzeczywiste obciążenie transakcyjne w systemie.
  • PROCESOR: Procent wykorzystania procesora podczas testu.
  • Pamięć: Użycie pamięci podczas testu.
  • Dysk: wykorzystanie miejsca na dysku wykorzystanego podczas testu.

Podstawy testowania stabilności

Testowanie stabilności podlega testowaniu wydajności – technice przeprowadzanej w celu sprawdzenia niektórych atrybutów jakości Oprogramowania, takich jak stabilność, niezawodność i dostępność.

Testowanie to służy do określenia szybkości działania systemu lub podsystemu przy określonym obciążeniu.

Testowanie wydajności ma wiele rodzajów, a jednym z nich jest test stabilności.

  • Test naprężeń: Jest to rodzaj testu, który sprawdza wytrzymałość systemu wykraczającą poza jego możliwości.
  • Testowanie Spike'a: Służy do sprawdzania zachowania systemu poprzez natychmiastowe zwiększenie obciążenia systemu. Celem jest sprawdzenie, w którym momencie system będzie miał problemy z wydajnością, w przeciwnym razie problem przejdzie.
  • Testowanie skalowalności: Służy do sprawdzania możliwości systemu. Jak skutecznie system będzie zachowywał się przy rosnących potrzebach, zmianach rozmiaru i zmianach wolumenu.
  • Testowanie objętości: Jest to niefunkcjonalna technika testowania, w której testowane oprogramowanie poddawane jest działaniu ogromnej ilości danych, a zachowanie systemu jest odpowiednio sprawdzane i weryfikowane.
  • Testowanie obciążenia lub stabilności: (już omówione powyżej)

Narzędzia do testowania stabilności

Niektóre narzędzia do testowania wydajności to:

  • Wczytaj do sieci
  • LoadRunner
  • Apache JMeter
  • NeoZaładować
  • Test chmury
  • Burza obciążenia
  • Załaduj interfejs użytkownika
  • WAP
  • ZaładujImpact
  • Ładowarka
  • Httperf , , , , , , , , , , , , , , , , ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,
  • OtwórzSTA

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.

FAQ

Testy obciążeniowe sprawdzają zachowanie w zdefiniowanym punkcie szczytowym przez krótki okres. Testy stabilności są przeprowadzane w zmiennych warunkach przez znacznie dłuższy czas, w celu sprawdzenia degradacji, a nie wyniku pozytywnego lub negatywnego w odniesieniu do celu.

Wystarczająco długo, aby pojawiły się problemy z powolnym budowaniem, zazwyczaj od 8 do 72 godzin. Czas krótszy niż godzina rzadko powoduje wyciek pamięci lub stopniowe rozładowywanie się puli połączeń.

Wycieki zasobów, niezamknięte połączenia z bazą danych, nieograniczona pamięć podręczna i wątki, które są tworzone, ale nigdy nie są zwalniane. Wszystkie cztery wyglądają na sprawne w krótkim okresie i kończą się niepowodzeniem, gdy okres ten jest wystarczająco długi.

Wykrywanie anomalii oparte na sztucznej inteligencji wykrywa moment, w którym krzywa zasobów zmienia nachylenie, co ma miejsce znacznie wcześniej, niż gdyby uruchomił się alarm o stałym progu, i jest znacznie bardziej niezawodne niż odczytywanie wykresów na oko.

Tak. Modele trenowane na podstawie przeszłych incydentów i zmian w kodzie wskazują moduły, które najprawdopodobniej będą miały problemy z utratą zasobów, co pozwala zespołom skupić się na długotrwałych testach, które przyniosą efekty.

Podsumuj ten post następująco: