SlideShare a Scribd company logo
Wprowadzenie
do testów
wydajnościowych
w k6
2
O MNIE
Marcin Basiakowski
Head of Quality Assurance @ TSH
AGENDA
1 Kilka słów o testach
wydajnościowych
2 Nasz wybór k6
3 Przykładowe case studies
4 Podsumowanie
3
4
KILKA SŁÓW
O TESTACH
WYDAJNOŚCIOWYCH
PODSTAWOWE INFORMACJE
Testy wydajnościowe należą
do grupy testów niefunkcjonalnych.
Oznacza to, że obiektem ich badań
nie są funkcje aplikacji.
5
PODSTAWOWE INFORMACJE
Badają zachowanie aplikacji
i serwisów w różnych warunkach
obciążenia, wykorzystując dostępne
funkcjonalności do symulacji
działań użytkownika.
6
TYPY TESTÓW WYDAJNOŚCIOWYCH
Testy wydajnościowe dzielimy
na kilka typów. Każdy z nich ma
na celu dostarczenie różnych
informacji o systemie.
7
TYPY TESTÓW WYDAJNOŚCIOWYCH
8
LOAD TESTS
SMOKE TESTS
SMOKE TESTS
Ich zadaniem jest sprawdzenie,
czy Twój system bez problemu radzi
sobie z minimalnym obciążeniem.
9
TYPY TESTÓW WYDAJNOŚCIOWYCH
10
LOAD TESTS
SMOKE TESTS
LOAD TESTS
(PERFORMANCE)
LOAD TESTS (PERFORMANCE)
Dotyczą przede wszystkim oceny
wydajności systemu pod kątem
liczby jednoczesnych użytkowników
lub żądań na sekundę.
11
TYPY TESTÓW WYDAJNOŚCIOWYCH
12
LOAD TESTS
SMOKE TESTS
LOAD TESTS
(PERFORMANCE)
STRESS TESTS
SPIKE TESTS
STRESS TESTS I SPIKE TESTS
13
Dotyczą oceny ograniczeń systemu
i stabilności w ekstremalnych
warunkach.
TYPY TESTÓW WYDAJNOŚCIOWYCH
14
LOAD TESTS
SMOKE TESTS
LOAD TESTS
(PERFORMANCE)
STRESS TESTS
SPIKE TESTS
SOAK / ENDURANCE
TESTS
SOAK / ENDURANCE TESTS
15
Informują o niezawodności
i wydajności systemu w dłuższym
okresie czasu.
1 Dbamy o zadowolenie swoich
użytkowników
2 Poznajemy szybkość i stabilność
swojej aplikacji
3 Poprawiamy skalowalność
4 Identyfikujemy wąskie gardła
5 Jesteśmy przygotowani
na nieoczekiwany ruch
DLACZEGO WARTO?
16
DLACZEGO WARTO?
17
1 JMeter
2 Gatling
3 Locust
4 k6
5 Artillery
6 i wiele innych...
DOSTĘPNE FRAMEWORKI
18
1 JMeter
2 Gatling
3 Locust
4 k6
5 Artillery
6 i wiele innych...
DOSTĘPNE FRAMEWORKI
19
20
NASZ WYBÓR K6
KILKA SŁÓW O K6
k6 jest nowoczesnym narzędziem
do testowania obciążenia, stworzonym
z myślą o zadowoleniu programistów.
Silnik k6 jest napisany w Go, co czyni
go jednym z najlepszych tego typu
dostępnych narzędzi.
21
1 Niski próg wejścia, łatwy w użyciu
2 Brak XML, brak DSL, po prostu
JavaScript
3 Integrowalny z wieloma narzędziami
4 Wspiera WebSockety i gRPC
5 Spójny z technologiami TSH
6 Darmowy w użyciu
DLACZEGO K6?
22
1 To nie NodeJS, nie wspiera
pakietów npm
2 Część atrakcyjnych funkcjonalności
dostępna jest w płatnej usłudze
k6 Cloud
ZAWSZE JEST JAKIEŚ “ALE”
23
CENIONY PRZEZ INNYCH
24
CENIONY PRZEZ INNYCH
25
"The engineering effort of writing tests for just
one of our microservices was going to be 2+
Engineering weeks in JMeter, versus the ½ day
it took us in k6!"
Alex Hibbitt, Site Reliability Engineer
CENIONY PRZEZ INNYCH
26
"Very good load testing platform. We as a retailer got
tremendous help with the load testing to survive Black
Friday 2019. Biggest plus is that the tests can be run
from command line, and are configured with code."
CTO dużej firmy branży e-commerce
PRZYKŁADOWY KOD
27
PRZYKŁADOWY WYNIK TESTU
28
29
K6 W AKCJI
Live Demo
TYPY TESTÓW WYDAJNOŚCIOWYCH
30
LOAD TESTS
SMOKE TESTS
LOAD TESTS
(PERFORMANCE)
STRESS TESTS
SPIKE TESTS
SOAK / ENDURANCE
TESTS
SMOKE TESTS
31
LOAD TESTS (PERFORMANCE)
32
STRESS TESTS I SPIKE TESTS
33
SOAK / ENDURANCE TESTS
34
K6 A TYPY TESTÓW WYDAJNOŚCIOWYCH
35
"One ring script to rule them all."
Pewien QA, którego
nazwiska nie pamiętam
36
PRZYKŁADOWE
CASE STUDIES
37
PROJEKT
MASHERBRUM
1. Inicjatywa zespołu developerskiego
2. Chęć rozwoju testów przez
Developerów
3. Potrzeba obsługi Websocketów
4. Dedykowane środowisko
do przeprowadzenia testów
5. Brak informacji o spodziewanym
ruchu
WSTĘPNE INFORMACJE
38
WEBSOCKETY
39
PIERWSZE URUCHOMIENIE TESTÓW
40
1. Część aplikacji radzi sobie bez
problemu z dużym ruchem (500 vus)
2. Dla jednego procesu przy niewielkim
ruchu (20 vus) dwie usługi AWS
przestają działać
3. Mechanizm automatycznego restartu
niedostępnych usług zawodzi
PIERWSZE WNIOSKI
41
42
PROJEKT
BALTISTAN PEAK
1. Inicjatywa zespołu developerskiego
podyktowana charakterem aplikacji
2. Dedykowane środowisko
do przeprowadzenia testów
3. Konkretna informacja nt.
oczekiwanej wydajności
(1000 req/s)
WSTĘPNE INFORMACJE
43
REQ/S ZAMIAST VUS
44
PIERWSZE URUCHOMIENIE TESTÓW
45
1. Pierwsze timeouty przy ruchu 60 req/s
2. Kod prototypu aplikacji wymaga
dalszych optymalizacji
3. Wymagana jest również zmiana
konfiguracji środowiska aplikacji
PIERWSZE WNIOSKI
46
47
PROJEKT
BROAD PEAK
1. Inicjatywa zespołu developerskiego
(i ich intuicji)
2. Dedykowane środowisko
do przeprowadzenia testów
3. Konkretna informacja nt.
oczekiwanej wydajności
(w szczycie 60k użytkowników)
WSTĘPNE INFORMACJE
48
PIERWSZE URUCHOMIENIE TESTÓW
49
1. Konieczność większej optymalizacji UI
(z uwagi na SSR)
2. Wydajność API powyżej oczekiwań
3. Konieczna rekonfiguracja usług AWS
4. Wymagane zwiększenie zasobów
aplikacji (CPU oraz RAM)
PIERWSZE WNIOSKI
50
1. Zaangażowanie Developerów
oraz DevOpsów w pierwsze testy
2. Utrzymanie i rozwój testów przez
Developerów i/lub DevOpsów
3. Kontynuowanie i cykliczne
wykonywanie testów (Smoke,
Performance, Endurance)
4. Uzyskanie oczekiwanej wydajności
PODSUMOWANIE CASE STUDIES
51
PODSUMOWANIE
52
MANIFEST K6
53
Simple testing is better than no testing
Load testing should be goal oriented
Load testing by developers
Developer experience is super important
Load test in a pre-production environment
DZIĘKI ZA UWAGĘ
54
╸ https://k6.io/
╸ strony z gifami :)
ŹRÓDŁA
55

More Related Content

What's hot

Security in PHP - 那些在滲透測試的小技巧
Security in PHP - 那些在滲透測試的小技巧Security in PHP - 那些在滲透測試的小技巧
Security in PHP - 那些在滲透測試的小技巧
Orange Tsai
 
Docker on Google App Engine
Docker on Google App EngineDocker on Google App Engine
Docker on Google App Engine
Docker, Inc.
 

What's hot (20)

Security in PHP - 那些在滲透測試的小技巧
Security in PHP - 那些在滲透測試的小技巧Security in PHP - 那些在滲透測試的小技巧
Security in PHP - 那些在滲透測試的小技巧
 
Deep dive into ssrf
Deep dive into ssrfDeep dive into ssrf
Deep dive into ssrf
 
DEF CON 27 - BEN SADEGHIPOUR - owning the clout through ssrf and pdf generators
DEF CON 27 - BEN SADEGHIPOUR  - owning the clout through ssrf and pdf generatorsDEF CON 27 - BEN SADEGHIPOUR  - owning the clout through ssrf and pdf generators
DEF CON 27 - BEN SADEGHIPOUR - owning the clout through ssrf and pdf generators
 
Introduction to Linux Privilege Escalation Methods
Introduction to Linux Privilege Escalation MethodsIntroduction to Linux Privilege Escalation Methods
Introduction to Linux Privilege Escalation Methods
 
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area
 
Bypass file upload restrictions
Bypass file upload restrictionsBypass file upload restrictions
Bypass file upload restrictions
 
Linux privilege escalation
Linux privilege escalationLinux privilege escalation
Linux privilege escalation
 
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
 
BlueHat v17 || Dangerous Contents - Securing .Net Deserialization
BlueHat v17 || Dangerous Contents - Securing .Net Deserialization BlueHat v17 || Dangerous Contents - Securing .Net Deserialization
BlueHat v17 || Dangerous Contents - Securing .Net Deserialization
 
Welcome to the Jungle: Pentesting AWS
Welcome to the Jungle: Pentesting AWSWelcome to the Jungle: Pentesting AWS
Welcome to the Jungle: Pentesting AWS
 
Learn to pen-test with OWASP ZAP
Learn to pen-test with OWASP ZAPLearn to pen-test with OWASP ZAP
Learn to pen-test with OWASP ZAP
 
Integrating LINE Login with Firebase
Integrating LINE Login with Firebase Integrating LINE Login with Firebase
Integrating LINE Login with Firebase
 
Testing Your APIs: Postman, Newman, and Beyond
Testing Your APIs: Postman, Newman, and BeyondTesting Your APIs: Postman, Newman, and Beyond
Testing Your APIs: Postman, Newman, and Beyond
 
CSRF, ClickJacking & Open Redirect
CSRF, ClickJacking & Open RedirectCSRF, ClickJacking & Open Redirect
CSRF, ClickJacking & Open Redirect
 
Cross Origin Resource Sharing
Cross Origin Resource SharingCross Origin Resource Sharing
Cross Origin Resource Sharing
 
Docker on Google App Engine
Docker on Google App EngineDocker on Google App Engine
Docker on Google App Engine
 
In the DOM, no one will hear you scream
In the DOM, no one will hear you screamIn the DOM, no one will hear you scream
In the DOM, no one will hear you scream
 
De un monolito a microservicios
De un monolito a microserviciosDe un monolito a microservicios
De un monolito a microservicios
 
CNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
CNIT 129S: Ch 12: Attacking Users: Cross-Site ScriptingCNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
CNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
 
CloudFlare vs Incapsula vs ModSecurity
CloudFlare vs Incapsula vs ModSecurityCloudFlare vs Incapsula vs ModSecurity
CloudFlare vs Incapsula vs ModSecurity
 

Similar to Wprowadzenie do testów wydajnościowych w k6

Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Wydawnictwo Helion
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Lukasz Kaluzny
 

Similar to Wprowadzenie do testów wydajnościowych w k6 (20)

Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
 
Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe Microservices
 
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDNPLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
 
university day 1
university day 1university day 1
university day 1
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
 
PLNOG15: OpenStack + OpenContrail - from inception to implementation - Tomasz...
PLNOG15: OpenStack + OpenContrail - from inception to implementation - Tomasz...PLNOG15: OpenStack + OpenContrail - from inception to implementation - Tomasz...
PLNOG15: OpenStack + OpenContrail - from inception to implementation - Tomasz...
 
Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...
Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...
Advanced automation and provisioning in Red Hat Satellite 6 - Red Hat Archite...
 
Jak spieprzyć wydajność od początku projektu studium przypadków..pdf
Jak spieprzyć wydajność od początku projektu studium przypadków..pdfJak spieprzyć wydajność od początku projektu studium przypadków..pdf
Jak spieprzyć wydajność od początku projektu studium przypadków..pdf
 
Cometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaCometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólna
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
 
PLNOG 9: Krzysztof Konkowski, Władysław Misztal - Skuteczne planowanie i czas...
PLNOG 9: Krzysztof Konkowski, Władysław Misztal - Skuteczne planowanie i czas...PLNOG 9: Krzysztof Konkowski, Władysław Misztal - Skuteczne planowanie i czas...
PLNOG 9: Krzysztof Konkowski, Władysław Misztal - Skuteczne planowanie i czas...
 
Wykorzystanie chmury Microsoft Azure w scenariuszach dev&test
Wykorzystanie chmury Microsoft Azure w scenariuszach dev&testWykorzystanie chmury Microsoft Azure w scenariuszach dev&test
Wykorzystanie chmury Microsoft Azure w scenariuszach dev&test
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 
Wirtualizacja systemów operacyjnych oraz aplikacji w środowisku Microsoft - N...
Wirtualizacja systemów operacyjnych oraz aplikacji w środowisku Microsoft - N...Wirtualizacja systemów operacyjnych oraz aplikacji w środowisku Microsoft - N...
Wirtualizacja systemów operacyjnych oraz aplikacji w środowisku Microsoft - N...
 
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
Jak zbudować aplikacje z wykorzystaniem funkcjonalności windows server 2016...
 
Continuous Integration w konfiguracji urządzeń sieciowych
Continuous Integration w konfiguracji urządzeń sieciowychContinuous Integration w konfiguracji urządzeń sieciowych
Continuous Integration w konfiguracji urządzeń sieciowych
 

More from The Software House

More from The Software House (20)

Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
 
Uszanowanko Podsumowanko
Uszanowanko PodsumowankoUszanowanko Podsumowanko
Uszanowanko Podsumowanko
 
Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?
 
O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?
 
Chat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeChat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon Chime
 
Migracje danych serverless
Migracje danych serverlessMigracje danych serverless
Migracje danych serverless
 
Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?
 
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWSAnaliza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScript
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScript
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danych
 
Testy API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciTesty API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięci
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case study
 
Firestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejFirestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny Krzemowej
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzach
 
Jak poskromić AWS?
Jak poskromić AWS?Jak poskromić AWS?
Jak poskromić AWS?
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.js
 
Amazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeAmazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurze
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki kodu
 

Wprowadzenie do testów wydajnościowych w k6