load testing complete guide
Kompletny przewodnik po testowaniu obciążenia dla początkujących:
W tym samouczku dowiemy się, dlaczego przeprowadzamy testy obciążenia, co dzięki temu osiągnięto, architekturę, jakie podejście należy zastosować, aby pomyślnie wykonać test obciążenia, jak skonfigurować środowisko testu obciążenia, najlepsze praktyki, a także najlepsze dostępne na rynku narzędzia do testowania obciążenia.
Słyszeliśmy o testach funkcjonalnych i niefunkcjonalnych. W testach niefunkcjonalnych mamy różne rodzaje testów, takie jak testy wydajnościowe, testy bezpieczeństwa, testy interfejsu użytkownika itp.
W związku z tym testowanie obciążenia jest typem testów niefunkcjonalnych, które stanowią podzbiór testów wydajnościowych.
Zatem, kiedy mówimy, że testujemy aplikację pod kątem wydajności, co tutaj wszystko testujemy? Testujemy aplikację pod kątem obciążenia, objętości, pojemności, obciążenia itp.
Czego się nauczysz:
- Co to jest testowanie obciążenia?
- Architektura testów obciążenia
- Dlaczego testy obciążeniowe?
- Środowisko
- Podejście
- Najlepsze praktyki
- Wniosek
- rekomendowane lektury
Co to jest testowanie obciążenia?
Testy obciążenia to podzbiór testów wydajnościowych, w ramach których testujemy odpowiedź systemu w różnych warunkach obciążenia, symulując jednoczesny dostęp do aplikacji wielu użytkowników. Testowanie to zwykle mierzy szybkość i pojemność aplikacji.
Dlatego za każdym razem, gdy modyfikujemy obciążenie, monitorujemy zachowanie systemu w różnych warunkach.
Przykład :Załóżmy, że wymagania naszego klienta dotyczące strony logowania to 2–5 sekund, a te 2–5 sekund powinny być spójne przez cały czas do obciążenia 5000 użytkowników. Więc co powinniśmy obserwować słyszeć? Czy jest to tylko zdolność systemu do obsługi ładunków, czy tylko wymagany czas reakcji?
Odpowiedź brzmi: jedno i drugie. Chcemy systemu, który może obsłużyć 5000 użytkowników z czasem odpowiedzi 2-5 sekund dla wszystkich jednoczesnych użytkowników.
Co zatem oznacza równoczesny użytkownik i użytkownik wirtualny?
Współbieżni użytkownicy to ci, którzy logują się do aplikacji i jednocześnie wykonują zestaw czynności i jednocześnie wylogowują się z aplikacji. Z drugiej strony wirtualni użytkownicy po prostu wskakują i wyskakują z systemu niezależnie od innych działań użytkowników.
Architektura testów obciążenia
Na poniższym diagramie możemy zobaczyć, jak różni użytkownicy uzyskują dostęp do aplikacji. Tutaj każdy użytkownik wysyła żądanie przez Internet, które następnie przechodzi przez zaporę ogniową.
Po firewallu mamy Load balancer, który rozdziela obciążenie na dowolny z serwerów WWW, a następnie przekazuje na serwer aplikacji i później na serwer bazy danych, gdzie pobiera niezbędne informacje na podstawie żądania użytkownika.
Testowanie obciążenia można wykonać ręcznie lub za pomocą narzędzia. Jednak ręczne testowanie obciążenia nie jest zalecane, ponieważ nie testujemy aplikacji pod kątem mniejszego obciążenia.
Przykład: Załóżmy, że chcemy przetestować aplikację zakupów online, aby zobaczyć czas odpowiedzi aplikacji dla każdego kliknięcia przez użytkownika, tj. Krok 1 - URL Uruchom, czas odpowiedzi, Zaloguj się do aplikacji i zanotuj czas odpowiedzi itd. produkt, dodanie do koszyka, dokonanie płatności i wylogowanie. Wszystko to trzeba zrobić dla 10 użytkowników.
Tak więc teraz, gdy musimy przetestować obciążenie aplikacji dla 10 użytkowników, możemy to osiągnąć, ręcznie obciążając 10 użytkowników fizycznych z różnych maszyn, zamiast używać narzędzia. W tym scenariuszu lepiej jest przejść do ręcznego testu obciążenia, zamiast inwestować w narzędzie i konfigurować środowisko dla narzędzia.
Natomiast wyobraź sobie, że jeśli potrzebujemy załadować test dla 1500 użytkowników, to musimy zautomatyzować test obciążenia za pomocą dowolnego z dostępnych narzędzi opartych na technologiach, w których zbudowana jest aplikacja, a także w oparciu o budżet, jaki mamy na projekt.
Jeśli mamy budżet, możemy skorzystać z narzędzi komercyjnych, takich jak Load runner, ale jeśli nie mamy dużego budżetu, możemy skorzystać z narzędzi open source, takich jak JMeter itp.
pytania do wywiadu soapui i odpowiedzi dla doświadczonych
Niezależnie od tego, czy jest to narzędzie komercyjne, czy open source, szczegóły muszą zostać udostępnione klientowi przed sfinalizowaniem narzędzia. Zwykle przygotowywany jest proof of concept, w którym za pomocą narzędzia generujemy przykładowy skrypt i przedstawiamy klientowi przykładowe raporty do akceptacji narzędzia przed jego sfinalizowaniem.
W automatycznym testowaniu obciążenia zastępujemy użytkowników za pomocą narzędzia do automatyzacji, które naśladuje działania użytkownika w czasie rzeczywistym. Automatyzując ładowanie, oszczędzamy zarówno zasoby, jak i czas.
Poniżej znajduje się diagram, który przedstawia sposób wymiany użytkowników za pomocą narzędzia.
Dlaczego testy obciążeniowe?
Załóżmy, że istnieje witryna zakupów online, która działa całkiem nieźle w normalne dni robocze, tj. Użytkownicy mogą zalogować się do aplikacji, przeglądać różne kategorie produktów, wybierać produkty, dodawać produkty do koszyka, płacić i wylogowywać się akceptowalny zakres i nie ma błędów stron ani długich czasów odpowiedzi.
W międzyczasie nadchodzi dzień szczytu, czyli powiedzmy Dzień Dziękczynienia i są tysiące użytkowników, którzy są zalogowani do systemu, system nagle się zawiesił, a użytkownicy odczuwają bardzo powolną reakcję, niektórzy nie mogli nawet zalogować się do serwisu, kilku nie udało się dodać do koszyka, a niektórych nie.
Dlatego w tym wielkim dniu firma musiała zmierzyć się z ogromną stratą, ponieważ straciła wielu klientów i wiele interesów. Wszystko to wydarzyło się tylko dlatego, że nie przewidzieli obciążenia użytkownika w dni szczytowe, nawet gdyby przewidywali, że na firmowej stronie internetowej nie przeprowadzono żadnego testu obciążenia, stąd nie wiedzą, ile obciążenia aplikacja będzie w stanie obsłużyć w dni szczytowe.
Dlatego, aby poradzić sobie w takich sytuacjach i aby przezwyciężyć ogromne przychody, zaleca się przeprowadzenie testu obciążenia dla tego typu zastosowań.
- Testowanie obciążenia pomaga budować mocne i niezawodne systemy.
- Wąskie gardło w systemie jest identyfikowane z dużym wyprzedzeniem, zanim aplikacja zostanie uruchomiona.
- Pomaga w określeniu pojemności aplikacji.
Co osiągnięto podczas testu obciążenia?
Przy odpowiednim teście obciążenia możemy dokładnie zrozumieć następujące kwestie:
- Liczba użytkowników, z którymi system jest w stanie obsłużyć lub do których można się skalować.
- Czas odpowiedzi dla każdej transakcji.
- Jak każdy komponent całego systemu zachowuje się pod obciążeniem, tj. Komponenty serwera aplikacji, komponenty serwera WWW, komponenty bazy danych itp.
- Jaka konfiguracja serwera jest najlepsza do obsługi obciążenia?
- Czy istniejący sprzęt jest wystarczający, czy też istnieje potrzeba dodatkowego sprzętu.
- Identyfikowane są wąskie gardła, takie jak wykorzystanie procesora, użycie pamięci, opóźnienia sieci itp.
Środowisko
Do przeprowadzania naszych testów potrzebujemy dedykowanego środowiska do testowania obciążenia. Ponieważ przez większość czasu środowisko testowe obciążenia będzie takie samo jak środowisko produkcyjne, a także dane dostępne w środowisku testowym obciążenia będą takie same, jak środowisko produkcyjne, chociaż nie są to te same dane.
Będzie wiele środowisk testowych, takich jak środowisko SIT, środowisko QA itp. Środowiska te nie są tą samą produkcją, ponieważ w przeciwieństwie do testów obciążeniowych nie potrzebują tak wielu serwerów ani tak dużej ilości danych testowych do przeprowadzenia testów funkcjonalnych lub testów integracyjnych.
Przykład:
W środowisku produkcyjnym mamy 3 serwery aplikacji, 2 serwery WWW i 2 serwery baz danych. W QA mamy tylko 1 serwer aplikacji, 1 serwer WWW i 1 serwer bazy danych. W związku z tym, jeśli przeprowadzimy test obciążenia w środowisku kontroli jakości, które nie jest równe produkcji, wówczas nasze testy są nieprawidłowe i również są niepoprawne, a tym samym nie możemy przejść do tych wyników.
Dlatego zawsze staraj się mieć dedykowane środowisko do testowania obciążenia, które jest podobne do środowiska produkcyjnego.
Czasami mamy też aplikacje innych firm, które będzie wywoływał nasz system, dlatego w takich przypadkach możemy używać kodów pośredniczących, ponieważ nie zawsze możemy współpracować z dostawcami zewnętrznymi w celu odświeżenia danych lub innych problemów lub wsparcia.
Spróbuj wykonać migawkę środowiska, gdy będzie ono gotowe, tak aby zawsze, gdy będziesz chciał odbudować środowisko, możesz użyć tej migawki, co pomoże w zarządzaniu czasem. Na rynku dostępnych jest kilka narzędzi do konfigurowania środowiska, takich jak Puppet, Docker itp.
Podejście
Przed rozpoczęciem testu obciążenia musimy zrozumieć, czy jakikolwiek test obciążenia został już wykonany w systemie, czy nie. Jeśli wcześniej przeprowadzono testy obciążenia, musimy wiedzieć, jaki był czas odpowiedzi, zebrane dane dotyczące klienta i serwera, ile wynosiło obciążenie użytkownika itp.
Potrzebujemy również informacji o aktualnych możliwościach obsługi aplikacji. Jeśli jest to nowa aplikacja, musimy zrozumieć wymagania, jakie jest docelowe obciążenie, jaki jest oczekiwany czas odpowiedzi i czy jest to naprawdę osiągalne, czy nie.
Jeśli jest to istniejąca aplikacja, wymagania dotyczące obciążenia i wzorce dostępu użytkowników można uzyskać z dzienników serwera. Ale jeśli jest to nowa aplikacja, musisz skontaktować się z zespołem biznesowym, aby uzyskać wszystkie informacje.
Gdy mamy już wymagania, musimy określić, w jaki sposób zamierzamy wykonać test obciążenia. Robi się to ręcznie czy za pomocą narzędzi? Ręczne wykonanie testu obciążenia wymaga wielu zasobów i jest również bardzo kosztowne. Również wielokrotne powtarzanie testu będzie trudne.
Dlatego, aby temu zaradzić, możemy użyć narzędzi Open Source lub narzędzi komercyjnych. Narzędzia open source są dostępne za darmo, narzędzia te mogą nie mieć wszystkich funkcji, takich jak inne narzędzia komercyjne, ale jeśli projekt ma ograniczenia budżetowe, możemy wybrać narzędzia open source.
Podczas gdy narzędzia komercyjne mają wiele funkcji, obsługują wiele protokołów i są bardzo przyjazne dla użytkownika.
Nasze podejście do testu obciążenia będzie następujące:
# 1) Zidentyfikuj kryteria akceptacji testu obciążenia
Na przykład:
- Czas odpowiedzi strony logowania nie powinien być dłuższy niż 5 sekund, nawet w warunkach maksymalnego obciążenia.
- Wykorzystanie procesora nie powinno przekraczać 80%.
- Przepustowość systemu powinna wynosić 100 transakcji na sekundę.
# 2) Zidentyfikuj scenariusze biznesowe, które należy przetestować.
Nie testuj wszystkich przepływów, spróbuj zrozumieć główne przepływy biznesowe, które mają wystąpić na produkcji. Jeśli jest to istniejąca aplikacja, możemy uzyskać jego informacje z logów serwera środowiska produkcyjnego.
Jeśli jest to nowo zbudowana aplikacja, musimy współpracować z zespołami biznesowymi, aby zrozumieć wzorce przepływu, wykorzystanie aplikacji itp. Czasami zespół projektowy prowadzi warsztaty, aby przedstawić przegląd lub szczegółowe informacje o każdym komponencie aplikacji.
Musimy wziąć udział w warsztatach aplikacyjnych i zanotować wszystkie wymagane informacje, aby przeprowadzić nasz test obciążenia.
# 3) Modelowanie obciążenia pracą
Gdy już mamy szczegółowe informacje o przepływach biznesowych, wzorcach dostępu użytkowników i liczbie użytkowników, musimy zaprojektować obciążenie w taki sposób, aby naśladowało rzeczywistą nawigację użytkownika w środowisku produkcyjnym lub zgodnie z oczekiwaniami w przyszłości po aplikacji będzie w produkcji.
Najważniejsze punkty, o których należy pamiętać podczas projektowania modelu obciążenia, to sprawdzenie, ile czasu zajmie ukończenie określonego przepływu biznesowego. Tutaj musimy przypisać czas do namysłu w taki sposób, aby użytkownik poruszał się po aplikacji w bardziej realistyczny sposób.
Wzorzec obciążenia roboczego będzie zwykle obejmował narastanie, zwalnianie i stan ustalony. Powinniśmy powoli ładować system, a więc używane są zwiększanie i zmniejszanie. Stan ustalony jest zwykle jednogodzinnym testem obciążenia z 15 minutowym zwiększaniem i 15 minutowym zmniejszaniem ciśnienia.
Weźmy przykład modelu obciążenia:
Omówienie aplikacji - załóżmy zakupy online, podczas których użytkownicy logują się do aplikacji i mają do wyboru różne sukienki, a także mogą nawigować po każdym produkcie.
Aby wyświetlić szczegółowe informacje o każdym produkcie, muszą kliknąć produkt. Jeśli podoba im się cena i marka produktu, mogą dodać do koszyka i kupić produkt, sprawdzając i dokonując płatności.
Poniżej podano listę scenariuszy:
- Przeglądaj - Tutaj użytkownik uruchamia aplikację, loguje się do aplikacji, przegląda różne kategorie i wylogowuje się z aplikacji.
- Przeglądaj, Widok produktu, Dodaj do koszyka - Tutaj użytkownik loguje się do aplikacji, przegląda różne kategorie, przegląda szczegóły produktu, dodaje produkt do koszyka i wylogowuje.
- Przeglądaj, zobacz produkt, dodaj do koszyka i sprawdź - W tym scenariuszu użytkownik loguje się do aplikacji, przegląda różne kategorie, przegląda szczegóły produktu, dodaje produkt do koszyka, dokonuje płatności i wylogowuje.
- Przeglądaj, Widok produktu, Dodaj do koszyka Sprawdź i Dokonaj płatności - Tutaj użytkownik loguje się do aplikacji, przegląda różne kategorie, przegląda szczegóły produktu, dodaje produkt do koszyka, dokonuje płatności, dokonuje płatności i wylogowuje.
S.No | Przepływ biznesowy | Liczba transakcji | Wirtualne obciążenie użytkownika | Czas odpowiedzi (s) | Dozwolony procent awaryjności | Transakcje na godzinę |
---|---|---|---|---|---|---|
1 | Przeglądaj | 17 | 1600 | 3 | Mniej niż 2% | 96000 |
dwa | Przeglądaj, Widok produktu, Dodaj do koszyka | 17 | 200 | 3 | Mniej niż 2% | 12000 |
3 | Przeglądaj, zobacz produkt, dodaj do koszyka i sprawdź | 18 | 120 | 3 | Mniej niż 2% | 7200 |
4 | Przeglądaj, Widok produktu, Dodaj do koszyka Sprawdź i Dokonaj płatności | 20 | 80 | 3 | Mniej niż 2% | 4800 |
Powyższe wartości zostały wyprowadzone na podstawie następujących obliczeń:
- Transakcje na godzinę = Liczba użytkowników * Transakcje wykonane przez jednego użytkownika w ciągu jednej godziny.
- Liczba użytkowników = 1600.
- Całkowita liczba transakcji w scenariuszu przeglądania = 17.
- Czas odpowiedzi dla każdej transakcji = 3.
- Całkowity czas realizacji 17 transakcji przez jednego użytkownika = 17 * 3 = 51 w zaokrągleniu do 60 sekund (1 min).
- Transakcje na godzinę = 1600 * 60 = 96000 transakcji.
# 4) Zaprojektuj testy obciążenia- Test obciążenia powinien być zaprojektowany na podstawie danych, które zgromadziliśmy do tej pory, tj. Przepływy biznesowe, liczba użytkowników, wzorce użytkowników, metryki do zebrania i analizy. Ponadto testy powinny być zaprojektowane w sposób bardzo realistyczny.
# 5) Wykonaj test obciążenia - Zanim wykonamy test obciążenia, upewnij się, że aplikacja jest uruchomiona. Środowisko testowe obciążenia jest gotowe. Aplikacja jest testowana funkcjonalnie i stabilna.
Sprawdź ustawienia konfiguracyjne środowiska testowego obciążenia. Powinien być taki sam jak środowisko produkcyjne. Upewnij się, że wszystkie dane testowe są dostępne. Pamiętaj, aby dodać niezbędne liczniki do monitorowania wydajności systemu podczas wykonywania testów.
Zawsze zaczynaj od niskiego obciążenia i stopniowo zwiększaj obciążenie. Nigdy nie zaczynaj z pełnym obciążeniem i nie przerywaj systemu.
# 6) Przeanalizuj wyniki testu obciążenia - Miej test bazowy, aby zawsze porównać go z innymi przebiegami testowymi. Zbierz metryki i dzienniki serwera po uruchomieniu testu, aby znaleźć wąskie gardła.
Niektóre projekty używają narzędzi do monitorowania wydajności aplikacji do monitorowania systemu podczas uruchomienia testowego, te narzędzia APM pomagają w łatwiejszej identyfikacji głównej przyczyny i oszczędzają dużo czasu. Narzędzia te są bardzo łatwe do znalezienia pierwotnej przyczyny wąskiego gardła, ponieważ mają szeroki widok, aby wskazać, gdzie jest problem.
Niektóre z narzędzi APM na rynku obejmują DynaTrace, Wily Introscope, App Dynamics itp.
# 7) Raportowanie - Po zakończeniu przebiegu testowego zbierz wszystkie metryki i wyślij raport podsumowujący test do odpowiedniego zespołu wraz z obserwacjami i zaleceniami.
Najlepsze praktyki
Poniżej wymieniono niektóre z najlepszych praktyk testowania obciążenia:
# 1) Przed rozpoczęciem testu obciążenia należy zawsze sprawdzić stabilność aplikacji. Aplikacja powinna być podpisana jako stabilna funkcjonalnie przez zespół testerów funkcjonalnych, a wszystkie główne usterki powinny zostać naprawione i przetestowane przed skopiowaniem kompilacji do środowiska testu obciążenia.
#dwa) Upewnij się, że środowisko testowe obciążenia jest repliką lub znajduje się blisko środowiska produkcyjnego, w tym liczbę serwerów, moduły równoważenia obciążenia, konfiguracje serwerów i zapory.
# 3) Sprawdź, czy dane testowe są unikalne i czy mamy wszystkie dane testowe skopiowane do środowiska ładowania przed przeprowadzeniem testu obciążenia.
# 4) Zaprojektuj scenariusze testowe w taki sposób, aby naśladowały działania użytkownika w czasie rzeczywistym zachodzące na produkcji.
# 5) Zaprojektuj obciążenie w oparciu o obciążenia użytkowników produkcyjnych i przepływy biznesowe, aw przypadku starej aplikacji sprawdź, czy jest to nowa rozmowa z zespołem biznesowym na temat przepływów biznesowych i obciążenia użytkowników.
# 6) Zbierz wszystkie ważne wskaźniki, takie jak czas odpowiedzi, liczba trafień na sekundę, przepustowość, procesor, pamięć, sieć i działające Vusery.
Zalecana lektura => Lista narzędzi do testowania wydajności dostępnych na rynku do przeprowadzania ekskluzywnych testów obciążeniowych.
Wniosek
W tym samouczku dowiedzieliśmy się, jak testowanie obciążenia odgrywa ważną rolę w testowaniu wydajności aplikacji, jak pomaga zrozumieć wydajność i możliwości aplikacji itp.
Dowiedzieliśmy się również, jak pomaga przewidzieć, czy aplikacja wymaga dodatkowego sprzętu, oprogramowania lub dostrojenia.
Miłego czytania !!
rekomendowane lektury
- Testowanie obciążenia za pomocą samouczków HP LoadRunner
- Testy alfa i testy beta (kompletny przewodnik)
- Podręcznik testowania zabezpieczeń aplikacji internetowych
- Przewodnik po testach wysiłkowych dla początkujących
- Przewodnik dla początkujących po testach penetracyjnych aplikacji internetowych
- Kompletny przewodnik po testach niefunkcjonalnych dla początkujących
- Kompletny przewodnik dotyczący testów weryfikacyjnych kompilacji (testy BVT)
- Testy wydajnościowe a testy obciążeniowe a testy obciążeniowe (różnica)