76
Konrad Kokosa Testy obciążeniowe – co, jak, czym? @konradkokosa blog.kokosa.net

WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Embed Size (px)

Citation preview

Page 1: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Konrad Kokosa

Testy obciążeniowe – co, jak, czym?

@konradkokosablog.kokosa.net

Page 2: WG.NET 90 - Testy obciążeniowe – co, jak, czym?
Page 3: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Spis treści

1. Co?2. Jak?3. Czym?4. Podsumowanie

Page 4: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Kto developuje weba...?

Kto robił load testy?

Page 5: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Co?

Page 6: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Co to jest...?Jedno z podstawowych narzędzi

developera webowego

Page 7: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

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.

Page 8: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

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

Page 9: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Co to jest...?

Page 10: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Co to jest...?

Page 11: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Co to jest...?

Load test

Stress testPerformance test

Volume testEndurance testSoak test

Concurrency test

Reliability test

Page 12: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Co to jest...?Load vs stress tests

Page 13: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Co testuje...?

Page 14: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Co testuje...?

Wszystko, ale szczególnie to, gdzie ma to sens

Page 15: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

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

Page 16: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Po co to je...?

O-o... wolno działa...

Page 17: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak?

Page 18: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?Fizycznie

Page 19: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?Programowo

Page 20: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

Page 21: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

Page 22: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

warunki początkowe - przygotowanie/czyszczenie danych

Page 23: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

Page 24: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

środowisko - powinno być stabilne, powtarzalne, wyizolowane. Ale im

bardziej "demo mode" stworzymy, tym mniej realne będą nasze wyniki...

Page 25: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

Page 26: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

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, ...

Page 27: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

Page 28: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

walidacja wyników - np. czy countery w założonym zakresie

Page 29: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

Rodzaje:• network based• script/browser based (w tym

headless)

Page 30: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

Rodzaje:• network based• script/browser based (w tym

headless)

DEMO

Page 31: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?Podstawowe definicje:

●virtual users/threads●ramping up/ramping down●think time

Page 32: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

Page 33: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

Prawdy ogólne

Page 34: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#1. load testy to broń atomowa

Prawdy ogólne

Page 35: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#1. load testy to broń atomowadlatego powinny być pod kontrolą - to nie jest fire &

forget

Prawdy ogólne

Page 36: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#2. load testy zawsze TYLKO symulują rzeczywistość

Prawdy ogólne

Page 37: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#3. aby porównywać load testy między sobą albo ruchem PRD musimy mieć

jakiś SPRAWDZONY wyznacznik

Prawdy ogólne

Page 38: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#3. aby porównywać load testy między sobą albo ruchem PRD musimy mieć

jakiś SPRAWDZONY wyznacznik

Prawdy ogólne

DEMO

Page 39: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#4. służą głównie do testowania reakcji warstwy serwerowej

Prawdy ogólne

Page 40: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#4. służą głównie do testowania reakcji warstwy serwerowej

...bo jak właściwie zmierzyć warstwę kliencką...?

Prawdy ogólne

Page 41: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#5. nie load testujemy PRD

Prawdy ogólne

Page 42: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#5. nie load testujemy PRD...nawet jak wydaje się to świetnym pomysłem

Prawdy ogólne

Page 43: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

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

Page 44: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

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

Page 45: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

Pułapki

Page 46: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#1. stan load testu się psuje w trakcie

Pułapki

Page 47: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#2. pomiar psuje zjawisko (zasada Heisenberga)

Pułapki

Page 48: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#3. refresh resources

Pułapki

Page 49: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#3. refresh resourcesrebuild DB index, recycle app pool, usuniecię danych,

logów

Pułapki

Page 50: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#4. pułapka CPU

Pułapki

Page 51: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#4. pułapka CPU

Pułapki

DEMO

Page 52: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#5. pułapka ograniczeń środowisk

Pułapki

Page 53: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#5. pułapka ograniczeń środowisk

Pułapki

DEMO

Page 54: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#6. ruch sieciowydostosowywanie do zmian

„download all resources”?

zrównoleglenie?

Pułapki

Page 55: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#6. ruch sieciowydostosowywanie do zmian

„download all resources”?

zrównoleglenie?

Pułapki

DEMO

Page 56: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#7. kontekst środowiskaczy nie dodaje coś od siebie?

inne trwające procesy?

...?

Pułapki

Page 57: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#8. „randomizacja” scenariusza

Pułapki

Page 58: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#9. Cachowanie

Pułapki

Page 59: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

#10. Własna instrumentacja

Pułapki

Page 60: WG.NET 90 - Testy obciążeniowe – co, jak, czym?
Page 61: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Little's Law

Page 62: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

L = λ W

Little’s Law

Page 63: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

L = λ W

Little’s Law

prof. John LittleMIT

Professor of Marketing

Page 64: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

L = λ W

Little’s Law

Średnia liczba„klientów” w

systemieŚrednie tempoprzybywania„klientów”

Średni czas przebywania„klienta” w systemie

Page 65: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

L = λ W

Little’s Law

Request executing Request/secRequest execution time

Page 66: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

L = λ W

Little’s Law

Number of VUsers ThroughputResponse time

Page 67: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Jak...?

L = λ (W + T)

Little’s Law

Number of VUsers ThroughputResponse time

Think time

Page 68: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Czym?

Page 69: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Czym...?

LoadComplete

New Relic

WAPTJMeterSOASTA

runscope

Application Insights

LoadUI

Visual Studio

Page 70: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Czym...?

#1. JMeter

Page 71: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Czym...?

#2. Visual Studio… Ultimate

Page 72: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Czym...?

#3. WAPT

Page 73: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Podsumowanie

Page 74: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Podsumowanie●load-testujcie!●jest trochę pułapek●zaskakująco mało książek/materiałów o load testach●przyszłość:- client side oriented- cloud

Page 75: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

Dziękuję za uwagę! Pytania?!

https://www.surveymonkey.com/r/ZCQNWD2

Page 76: WG.NET 90 - Testy obciążeniowe – co, jak, czym?

DevWarsztaty.pl!