Samouczek dotyczący testowania wydajności: co to jest, typy, wskaźniki i Przykład

Spisie treści:

Anonim

Test wydajności

Testowanie wydajności to proces testowania oprogramowania służący do testowania szybkości, czasu odpowiedzi, stabilności, niezawodności, skalowalności i wykorzystania zasobów aplikacji pod określonym obciążeniem. Głównym celem testów wydajnościowych jest identyfikacja i eliminacja wąskich gardeł wydajnościowych w aplikacji. Jest to podzbiór inżynierii wydajności, znany również jako „testowanie wydajności”.

Celem testów wydajnościowych jest sprawdzenie oprogramowania

  • Szybkość - określa, czy aplikacja reaguje szybko
  • Skalowalność - określa maksymalne obciążenie użytkownika, jakie aplikacja może obsłużyć.
  • Stabilność - określa, czy aplikacja jest stabilna przy zmiennych obciążeniach

W tym samouczku nauczysz się:

  • Co to jest testowanie wydajności?
  • Dlaczego testy wydajnościowe?
  • Rodzaje testów wydajności
  • Typowe problemy z wydajnością
  • Proces testowania wydajności
  • Metryki testowania wydajności: monitorowane parametry
  • Przykładowe przypadki testów wydajności
  • Narzędzia do testów wydajności
  • FAQ

Dlaczego testy wydajnościowe?

Cechy i funkcjonalność obsługiwane przez system oprogramowania to nie wszystko. Wydajność aplikacji, taka jak jej czas odpowiedzi, niezawodność, wykorzystanie zasobów i skalowalność, mają znaczenie. Celem testów wydajności nie jest znajdowanie błędów, ale eliminacja wąskich gardeł wydajności.

Testowanie wydajności ma na celu dostarczenie zainteresowanym stronom informacji o ich aplikacji w zakresie szybkości, stabilności i skalowalności. Co ważniejsze, testy wydajności ujawniają, co należy poprawić, zanim produkt trafi na rynek. Bez testów wydajności oprogramowanie może mieć problemy, takie jak: działa wolno, gdy kilku użytkowników używa go jednocześnie, niespójności w różnych systemach operacyjnych i słaba użyteczność.

Testy wydajności określą, czy ich oprogramowanie spełnia wymagania dotyczące szybkości, skalowalności i stabilności przy spodziewanych obciążeniach. Aplikacje wysyłane na rynek ze słabymi wskaźnikami wydajności z powodu nieistniejących lub słabych testów wydajności prawdopodobnie zyskają złą reputację i nie osiągną oczekiwanych celów sprzedażowych.

Ponadto aplikacje o znaczeniu krytycznym, takie jak programy kosmiczne lub ratujący życie sprzęt medyczny, powinny zostać przetestowane pod kątem wydajności, aby zapewnić, że będą działać przez długi czas bez odchyleń.

Według Dunn & Bradstreet, 59% firm z listy Fortune 500 doświadcza około 1,6 godziny przestoju tygodniowo. Biorąc pod uwagę, że przeciętna firma z listy Fortune 500, zatrudniająca co najmniej 10 000 pracowników, płaci 56 USD za godzinę, część kosztów przestoju w takiej organizacji wyniosłaby 896 000 USD tygodniowo, co przekłada się na ponad 46 mln USD rocznie.

Szacuje się, że zaledwie 5 minut przestoju Google.com (19 sierpnia 13) kosztuje giganta wyszukiwania aż 545 000 USD.

Szacuje się, że firmy straciły sprzedaż o wartości 1100 USD na sekundę z powodu niedawnej awarii usługi Amazon Web Service.

Dlatego ważne są testy wydajności.

Rodzaje testów wydajności

  • Testowanie obciążenia - sprawdza zdolność aplikacji do działania przy przewidywanym obciążeniu użytkownika. Celem jest zidentyfikowanie wąskich gardeł wydajności przed uruchomieniem aplikacji.
  • Testowanie warunków skrajnych - polega na testowaniu aplikacji pod ekstremalnym obciążeniem, aby zobaczyć, jak radzi sobie z dużym ruchem lub przetwarzaniem danych. Celem jest określenie punktu krytycznego aplikacji.
  • Testy wytrzymałościowe - mają na celu upewnienie się, że oprogramowanie może obsłużyć oczekiwane obciążenie przez długi czas.
  • Testowanie skoków - testuje reakcję oprogramowania na nagłe, duże skoki obciążenia generowane przez użytkowników.
  • Testowanie objętości - Testowanie pod wolumenem duży nr. z. Dane są umieszczane w bazie danych, a ogólne zachowanie systemu oprogramowania jest monitorowane. Celem jest sprawdzenie wydajności aplikacji w różnych objętościach bazy danych.
  • Testowanie skalowalności - Celem testowania skalowalności jest określenie skuteczności aplikacji w „skalowaniu w górę” w celu obsługi wzrostu obciążenia użytkowników. Pomaga w planowaniu dodawania pojemności do systemu oprogramowania.

Typowe problemy z wydajnością

Większość problemów z wydajnością dotyczy szybkości, czasu odpowiedzi, czasu ładowania i słabej skalowalności. Szybkość jest często jednym z najważniejszych atrybutów aplikacji. Wolno działająca aplikacja straci potencjalnych użytkowników. Testy wydajności są wykonywane, aby upewnić się, że aplikacja działa wystarczająco szybko, aby utrzymać uwagę i zainteresowanie użytkownika. Zapoznaj się z poniższą listą typowych problemów z wydajnością i zwróć uwagę, że prędkość jest częstym czynnikiem w wielu z nich:

  • Długi czas ładowania - czas ładowania to zwykle początkowy czas potrzebny do uruchomienia aplikacji. Zasadniczo należy to ograniczyć do minimum. Podczas gdy niektórych aplikacji nie można załadować w mniej niż minutę, czas ładowania powinien być krótszy niż kilka sekund, jeśli to możliwe.
  • Słaby czas odpowiedzi - czas odpowiedzi to czas, jaki upływa od momentu, gdy użytkownik wprowadzi dane do aplikacji, do momentu, gdy aplikacja wyprowadzi odpowiedź na te dane wejściowe. Generalnie powinno to być bardzo szybkie. Ponownie, jeśli użytkownik musi czekać zbyt długo, traci zainteresowanie.
  • Słaba skalowalność - oprogramowanie ma słabą skalowalność, gdy nie jest w stanie obsłużyć oczekiwanej liczby użytkowników lub nie obsługuje wystarczająco szerokiego grona użytkowników. Należy przeprowadzić testy obciążenia, aby upewnić się, że aplikacja może obsłużyć przewidywaną liczbę użytkowników.
  • Wąskie gardła - Wąskie gardła to przeszkody w systemie, które pogarszają ogólną wydajność systemu. Wąskie gardło występuje wtedy, gdy błędy w kodowaniu lub problemy ze sprzętem powodują spadek przepustowości przy określonych obciążeniach. Wąskie gardło jest często spowodowane jedną wadliwą sekcją kodu. Kluczem do rozwiązania problemu z wąskim gardłem jest znalezienie sekcji kodu powodującej spowolnienie i próba jej naprawienia. Wąskie gardła są zwykle usuwane poprzez naprawienie źle działających procesów lub dodanie dodatkowego sprzętu. Niektóre typowe wąskie gardła wydajności to
    • Zużycie procesora
    • Wykorzystanie pamięci
    • Wykorzystanie sieci
    • Ograniczenia systemu operacyjnego
    • Użycie dysku

Proces testowania wydajności

Metodologia przyjęta do testów wydajnościowych może się znacznie różnić, ale cel testów wydajnościowych pozostaje ten sam. Może pomóc wykazać, że Twój system oprogramowania spełnia określone z góry kryteria wydajności. Lub może pomóc porównać wydajność dwóch systemów oprogramowania. Może również pomóc zidentyfikować części systemu oprogramowania, które pogarszają jego wydajność.

Poniżej znajduje się ogólny proces przeprowadzania testów wydajności

  1. Zidentyfikuj swoje środowisko testowe - poznaj swoje fizyczne środowisko testowe, środowisko produkcyjne i dostępne narzędzia testowe. Zapoznaj się ze szczegółami konfiguracji sprzętu, oprogramowania i sieci używanych podczas testowania, zanim rozpoczniesz proces testowania. Pomoże testerom w tworzeniu bardziej wydajnych testów. Pomoże również zidentyfikować możliwe wyzwania, na które testerzy mogą napotkać podczas procedur testowania wydajności.
  2. Zidentyfikuj kryteria akceptacji wydajności - obejmuje to cele i ograniczenia dotyczące przepustowości, czasu odpowiedzi i alokacji zasobów. Konieczne jest również określenie kryteriów sukcesu projektu poza tymi celami i ograniczeniami. Testerzy powinni być uprawnieni do ustalania kryteriów wydajności i celów, ponieważ często specyfikacje projektu nie zawierają wystarczająco szerokiego zakresu wzorców wydajności. Czasami może w ogóle ich nie być. Jeśli to możliwe, znalezienie podobnej aplikacji do porównania to dobry sposób na wyznaczenie celów wydajności.
  3. Planuj i projektuj testy wydajności - określ, jak prawdopodobne będzie zróżnicowanie użycia wśród użytkowników końcowych i zidentyfikuj kluczowe scenariusze do przetestowania dla wszystkich możliwych przypadków użycia. Konieczne jest symulowanie różnych użytkowników końcowych, planowanie danych z testów wydajności i określanie, jakie metryki będą gromadzone.
  4. Konfigurowanie środowiska testowego - Przygotuj środowisko testowe przed wykonaniem. Rozmieść także narzędzia i inne zasoby.
  5. Wdrożenie projektu testów - utwórz testy wydajności zgodnie z projektem testu.
  6. Uruchom testy - wykonaj i monitoruj testy.
  7. Analizuj, dostrajaj i ponownie testuj - konsoliduj, analizuj i udostępniaj wyniki testów. Następnie dostrój i przetestuj ponownie, aby sprawdzić, czy nastąpiła poprawa lub spadek wydajności. Ponieważ ulepszenia generalnie maleją po każdym ponownym teście, zatrzymaj się, gdy zator jest spowodowany przez procesor. Wtedy możesz rozważyć opcję zwiększenia mocy procesora.

Metryki testowania wydajności: monitorowane parametry

Podstawowe parametry monitorowane podczas testów wydajnościowych to:

  • Użycie procesora - ilość czasu spędzanego przez procesor na wykonywaniu wątków, które nie są bezczynne.
  • Wykorzystanie pamięci - ilość pamięci fizycznej dostępnej dla procesów na komputerze.
  • Czas dysku - czas, przez jaki dysk jest zajęty wykonywaniem żądania odczytu lub zapisu.
  • Przepustowość - pokazuje bity na sekundę używane przez interfejs sieciowy.
  • Prywatne bajty - liczba bajtów przydzielonych przez proces, których nie można udostępniać innym procesom. Są one używane do pomiaru wycieków pamięci i wykorzystania.
  • Committed memory - ilość używanej pamięci wirtualnej.
  • Strony pamięci / sekundę - liczba stron zapisanych na dysku lub odczytanych z dysku w celu rozwiązania problemów z twardymi stronami. Twarde błędy strony występują, gdy kod spoza bieżącego zestawu roboczego jest wywoływany z innego miejsca i pobierany z dysku.
  • Błędy stronicowania / sekundę - ogólna szybkość, z jaką strony błędów są przetwarzane przez procesor. Dzieje się tak ponownie, gdy proces wymaga kodu spoza zestawu roboczego.
  • Przerwania procesora na sekundę - to średnia. liczba przerwań sprzętowych, które procesor otrzymuje i przetwarza w każdej sekundzie.
  • Długość kolejki na dysku - to średnia. Nie. żądań odczytu i zapisu w kolejce dla wybranego dysku w okresie próbkowania.
  • Długość sieciowej kolejki wyjściowej - długość kolejki wyjściowej w pakietach. Cokolwiek więcej niż dwa oznacza, że ​​opóźnienia i wąskie gardła muszą zostać powstrzymane.
  • Łączna liczba bajtów sieci na sekundę - szybkość wysyłania i odbierania bajtów przez interfejs, w tym znaki ramek.
  • Czas odpowiedzi - czas od wpisania zapytania przez użytkownika do otrzymania pierwszego znaku odpowiedzi.
  • Przepustowość - szybkość, z jaką komputer lub sieć otrzymuje żądania na sekundę.
  • Ilość połączeń w puli - liczba żądań użytkowników, które są spełniane przez połączenia w puli. Im więcej żądań zostanie spełnionych przez połączenia w puli, tym lepsza będzie wydajność.
  • Maksymalna liczba aktywnych sesji - maksymalna liczba sesji, które mogą być jednocześnie aktywne.
  • Wskaźniki trafień - ma to związek z liczbą instrukcji SQL obsługiwanych przez dane w pamięci podręcznej zamiast kosztownych operacji we / wy. To dobry punkt wyjścia do rozwiązywania problemów powodujących wąskie gardła.
  • Trafienia na sekundę - nie. odwiedzin na serwerze WWW w każdej sekundzie testu obciążenia.
  • Segment wycofywania - ilość danych, które można wycofać w dowolnym momencie.
  • Blokady baz danych - blokowanie tabel i baz danych musi być monitorowane i starannie dostrajane.
  • Najwyższe oczekiwania - są monitorowane w celu określenia, jakie czasy oczekiwania można skrócić, gdy mamy do czynienia z szybkością pobierania danych z pamięci
  • Liczba wątków - kondycję aplikacji można mierzyć za pomocą nie. wątków, które są uruchomione i aktualnie aktywne.
  • Wyrzucanie elementów bezużytecznych - wiąże się ze zwróceniem nieużywanej pamięci z powrotem do systemu. Efektywność zbierania śmieci musi być monitorowana.

Przykładowe przypadki testów wydajności

  • Sprawdź, czy czas odpowiedzi nie przekracza 4 sekund, gdy 1000 użytkowników jednocześnie uzyskuje dostęp do witryny.
  • Sprawdź, czy czas odpowiedzi obciążonej aplikacji mieści się w dopuszczalnym zakresie, gdy łączność sieciowa jest wolna
  • Sprawdź maksymalną liczbę użytkowników, których aplikacja może obsłużyć, zanim ulegnie awarii.
  • Sprawdź czas wykonywania bazy danych, gdy 500 rekordów jest odczytywanych / zapisywanych jednocześnie.
  • Sprawdź użycie procesora i pamięci aplikacji i serwera bazy danych w warunkach szczytowego obciążenia
  • Zweryfikuj czas odpowiedzi aplikacji w warunkach niskiego, normalnego, umiarkowanego i dużego obciążenia.

Podczas rzeczywistego wykonywania testu wydajności niejasne terminy, takie jak dopuszczalny zakres, duże obciążenie itp., Są zastępowane konkretnymi liczbami. Inżynierowie ds. Wydajności ustalają te liczby zgodnie z wymaganiami biznesowymi i technicznym krajobrazem aplikacji.

Narzędzia do testów wydajności

Na rynku dostępnych jest wiele różnych narzędzi do testowania wydajności. Wybór narzędzia do testowania będzie zależał od wielu czynników, takich jak typ obsługiwanego protokołu, koszt licencji, wymagania sprzętowe, obsługa platformy itp. Poniżej znajduje się lista najczęściej używanych narzędzi testowych.

  • LoadNinja - rewolucjonizuje sposób ładowania testów. To oparte na chmurze narzędzie do testowania obciążenia umożliwia zespołom rejestrowanie i natychmiastowe odtwarzanie kompleksowych testów obciążenia bez złożonej dynamicznej korelacji i przeprowadzanie tych testów obciążenia w rzeczywistych przeglądarkach na dużą skalę. Zespoły mogą zwiększyć zakres testów. & skrócić czas testowania obciążenia o ponad 60%.
  • NeoLoad - to platforma do testowania wydajności zaprojektowana dla DevOps, która bezproblemowo integruje się z istniejącym potokiem ciągłego dostarczania. Dzięki NeoLoad zespoły testują 10 razy szybciej niż w przypadku tradycyjnych narzędzi, aby spełnić nowy poziom wymagań w całym cyklu życia oprogramowania zwinnego - od komponentów po pełne testy obciążenia całego systemu.
  • HP LoadRunner - to najpopularniejsze narzędzie do testowania wydajności dostępne obecnie na rynku. To narzędzie jest w stanie symulować setki tysięcy użytkowników, poddając aplikacje rzeczywistemu obciążeniu w celu określenia ich zachowania przy oczekiwanym obciążeniu. Loadrunner zawiera wirtualny generator użytkowników, który symuluje działania żywych użytkowników.
  • Jmeter - jedno z wiodących narzędzi służących do testowania obciążenia serwerów WWW i aplikacji.

FAQ

Które aplikacje powinniśmy przetestować wydajności?

Testowanie wydajności jest zawsze wykonywane tylko dla systemów typu klient-serwer. Oznacza to, że żadna aplikacja, która nie jest architekturą opartą na kliencie i serwerze, nie może wymagać testów wydajności.

Na przykład Microsoft Calculator nie jest oparty na serwerze klient-serwer ani nie obsługuje wielu użytkowników; w związku z tym nie jest kandydatem do testów wydajności.

Jaka jest różnica między testowaniem wydajności a inżynierią wydajności

Ważne jest, aby zrozumieć różnicę między testowaniem wydajności a inżynierią wydajności. Porozumienie podzielono się poniżej:

Testowanie wydajności to dyscyplina zajmująca się testowaniem i raportowaniem bieżącej wydajności aplikacji przy różnych parametrach.

Inżynieria wydajności to proces, w ramach którego oprogramowanie jest testowane i dostrajane w celu osiągnięcia wymaganej wydajności. Ten proces ma na celu optymalizację najważniejszej cechy wydajności aplikacji, tj. Doświadczenia użytkownika.

Historycznie rzecz biorąc, testowanie i dostrajanie były wyraźnie oddzielnymi i często konkurującymi dziedzinami. Jednak w ciągu ostatnich kilku lat kilku grup testerów i programistów współpracowało niezależnie, aby stworzyć zespoły tuningowe. Ponieważ zespoły te odniosły znaczący sukces, koncepcja sprzęgania testów wydajnościowych z dostrajaniem wydajności przyjęła się i teraz nazywamy to inżynierią wydajności.

Wniosek

W inżynierii oprogramowania testowanie wydajności jest konieczne przed wprowadzeniem na rynek jakiegokolwiek oprogramowania. Zapewnia satysfakcję klienta i chroni inwestycję inwestora przed awarią produktu. Koszty testów wydajności są zwykle więcej niż rekompensowane zwiększoną satysfakcją klienta, lojalnością i utrzymaniem.