Upload
konrad-kokosa
View
708
Download
1
Embed Size (px)
Citation preview
Konrad Kokosa
Testy obciążeniowe – co, jak, czym?
@konradkokosablog.kokosa.net
Spis treści
1. Co?2. Jak?3. Czym?4. Podsumowanie
Kto developuje weba...?
Kto robił load testy?
Co?
Co to jest...?Jedno z podstawowych narzędzi
developera webowego
Co to jest...?Definicja:
Load testing is the process of putting demand on a software system or
computing device and measuring its response. Load testing is performed to determine a system's behavior under
both normal and anticipated peak load conditions.
Co to jest...?
Długowieczna tradycjaŚredniowieczna tradycja nakazywała, by konstruktorzy mostu wchodzili pod niego
w czasie prób obciążeniowych. (...) Budowniczy stawał przed królem czy
księciem i wchodząc pod most, dawał za niego głowę.
http://wroclaw.wyborcza.pl/wroclaw/1,87947,7597537,Most_musi_cieszyc
Co to jest...?
Co to jest...?
Co to jest...?
Load test
Stress testPerformance test
Volume testEndurance testSoak test
Concurrency test
Reliability test
Co to jest...?Load vs stress tests
Co testuje...?
Co testuje...?
Wszystko, ale szczególnie to, gdzie ma to sens
Po co to jest...?●benchmark aplikacji/biblioteki/komponenty●benchmark przy wyborze- liba, aplikacji, sprzętu●wsparcie w badaniu/naprawianiu wydajności, memory leak●odtworzenie błędu (np. wielowątkowego)●szacowanie skalowalności, docelowych zasobów
Po co to je...?
O-o... wolno działa...
Jak?
Jak...?Fizycznie
Jak...?Programowo
Jak...?
Jak...?
Jak...?
warunki początkowe - przygotowanie/czyszczenie danych
Jak...?
Jak...?
środowisko - powinno być stabilne, powtarzalne, wyizolowane. Ale im
bardziej "demo mode" stworzymy, tym mniej realne będą nasze wyniki...
Jak...?
Jak...?
obserwowane w trakcie -• statystyki klienckie – response time,
throughput, network usage, …
• perf countery: % Processor Time, Memory, Pages/sec, % Disk Time, .NET CLR Memory, .NET
Exceptions, Application Queue, Request Executing/Wait Time, ...
Jak...?
Jak...?
walidacja wyników - np. czy countery w założonym zakresie
Jak...?
Rodzaje:• network based• script/browser based (w tym
headless)
Jak...?
Rodzaje:• network based• script/browser based (w tym
headless)
DEMO
Jak...?Podstawowe definicje:
●virtual users/threads●ramping up/ramping down●think time
Jak...?
Jak...?
Prawdy ogólne
Jak...?
#1. load testy to broń atomowa
Prawdy ogólne
Jak...?
#1. load testy to broń atomowadlatego powinny być pod kontrolą - to nie jest fire &
forget
Prawdy ogólne
Jak...?
#2. load testy zawsze TYLKO symulują rzeczywistość
Prawdy ogólne
Jak...?
#3. aby porównywać load testy między sobą albo ruchem PRD musimy mieć
jakiś SPRAWDZONY wyznacznik
Prawdy ogólne
Jak...?
#3. aby porównywać load testy między sobą albo ruchem PRD musimy mieć
jakiś SPRAWDZONY wyznacznik
Prawdy ogólne
DEMO
Jak...?
#4. służą głównie do testowania reakcji warstwy serwerowej
Prawdy ogólne
Jak...?
#4. służą głównie do testowania reakcji warstwy serwerowej
...bo jak właściwie zmierzyć warstwę kliencką...?
Prawdy ogólne
Jak...?
#5. nie load testujemy PRD
Prawdy ogólne
Jak...?
#5. nie load testujemy PRD...nawet jak wydaje się to świetnym pomysłem
Prawdy ogólne
Jak...?
#5. nie load testujemy PRD...nawet jak wydaje się to świetnym pomysłem
...nawet jak myślimy, że mamy pełną kontrolę
Prawdy ogólne
Jak...?
#5. nie load testujemy PRD...nawet jak wydaje się to świetnym pomysłem
...nawet jak myślimy, że mamy pełną kontrolę
...chyba że load testujemy sprytnie
Prawdy ogólne
Jak...?
Pułapki
Jak...?
#1. stan load testu się psuje w trakcie
Pułapki
Jak...?
#2. pomiar psuje zjawisko (zasada Heisenberga)
Pułapki
Jak...?
#3. refresh resources
Pułapki
Jak...?
#3. refresh resourcesrebuild DB index, recycle app pool, usuniecię danych,
logów
Pułapki
Jak...?
#4. pułapka CPU
Pułapki
Jak...?
#4. pułapka CPU
Pułapki
DEMO
Jak...?
#5. pułapka ograniczeń środowisk
Pułapki
Jak...?
#5. pułapka ograniczeń środowisk
Pułapki
DEMO
Jak...?
#6. ruch sieciowydostosowywanie do zmian
„download all resources”?
zrównoleglenie?
Pułapki
Jak...?
#6. ruch sieciowydostosowywanie do zmian
„download all resources”?
zrównoleglenie?
Pułapki
DEMO
Jak...?
#7. kontekst środowiskaczy nie dodaje coś od siebie?
inne trwające procesy?
...?
Pułapki
Jak...?
#8. „randomizacja” scenariusza
Pułapki
Jak...?
#9. Cachowanie
Pułapki
Jak...?
#10. Własna instrumentacja
Pułapki
Little's Law
Jak...?
L = λ W
Little’s Law
Jak...?
L = λ W
Little’s Law
prof. John LittleMIT
Professor of Marketing
Jak...?
L = λ W
Little’s Law
Średnia liczba„klientów” w
systemieŚrednie tempoprzybywania„klientów”
Średni czas przebywania„klienta” w systemie
Jak...?
L = λ W
Little’s Law
Request executing Request/secRequest execution time
Jak...?
L = λ W
Little’s Law
Number of VUsers ThroughputResponse time
Jak...?
L = λ (W + T)
Little’s Law
Number of VUsers ThroughputResponse time
Think time
Czym?
Czym...?
LoadComplete
New Relic
WAPTJMeterSOASTA
runscope
Application Insights
LoadUI
Visual Studio
Czym...?
#1. JMeter
Czym...?
#2. Visual Studio… Ultimate
Czym...?
#3. WAPT
Podsumowanie
Podsumowanie●load-testujcie!●jest trochę pułapek●zaskakująco mało książek/materiałów o load testach●przyszłość:- client side oriented- cloud
Dziękuję za uwagę! Pytania?!
https://www.surveymonkey.com/r/ZCQNWD2
DevWarsztaty.pl!