Prezentacja
Transkrypt
Prezentacja
Jmeter: Pierwsze kroki w testowaniu wydajności Anna Kovalchuk 07.05.2014 Plan 1. Wymagania i cele 2. Modelowanie obciążenia 3. Parametryzacja i korelacja scenariuszy 4. Analiza wyników Help! My boss wants me to load test our web app! Klatka z video: http://youtu.be/BKorP55Aqvg Wydajność Stopień, w jaki system lub moduł, przy zadanych ograniczeniach, spełnia zamierzoną funkcjonalność odnośnie szybkości przetwarzania i przepustowości. [IEEE 610] Patrz także efektywność. Performance: The degree to which a system or component accomplishes its designated functions within given constraints regarding processing time and throughput rate. See also efficiency. http://testerzy.pl/slownik/wydajnosc Efektywność Zdolność oprogramowania do zapewnienia odpowiedniego poziomu wydajności, relatywnie do ilości zużytych zasobów, w określonych warunkach. [ISO 9126] • Zachowanie z czasem (Time behavior) • Wykorzystanie zasobów (Resource behaviour) Efficiency: The capability of the software product to provide appropriate performance, relative to the amount of resources used under stated conditions. [ISO 9126] http://testerzy.pl/slownik/efektywnosc Performance efficiency ISO 25010 : Wydajność w stosunku do ilości zasobów wykorzystywanych pod ustalonymi warunkami Zachowanie z czasem Wykorzystanie zasobów Zgodność The performance relative to the amount of resources used under stated conditions - Time Behaviour - Resource Utilisation - Compliance Niezawodność ISO 25010 : stopień, w jakim system lub jego element wykonuje określone funkcje w określonych warunkach, w określonym okresie czasu. Stabilność Odporność na błędy Zdolność do przewrócenia stanu początkowego Zgodność Reliability - The degree to which a system or component performs specified functions under specified conditions for a specified period of time. - Maturity - Fault Tolerance - Recoverability - Compliance Testowanie wydajności = Testowanie efektywności + Testowanie niezawodności *zależy od celów testowania Przykład wymagań Przy obciążeniu do 100 jednocześnie pracujących klientów z systemem: • średni czas odpowiedzi powinien wynosić nie więcej niż 2,5 sekundy. Przykład wymagań Przy obciążeniu do 100 jednocześnie pracujących klientów z systemem: • średni czas odpowiedzi powinien wynosić nie więcej niż 2,5 sekundy. • liczba błędów nie powinna przekroczyć 1% Przykład wymagań Przy obciążeniu do 100 jednocześnie pracujących klientów z systemem: • średni czas odpowiedzi powinien wynosić nie więcej niż 2,5 sekundy. • liczba błędów nie powinna przekroczyć 1% • rozrzut (dyspersja) nie przekracza 5% Przykład wymagań Przy obciążeniu do 100 transakcji na sekundę typu «ping» i 10 transakcji na sekundę typu «akcja»: • średni czas odpowiedzi powinien wynosić nie więcej niż 2,5 sekundy. • liczba błędów nie powinna przekroczyć 1% • rozrzut (dyspersja) nie przekracza 5% Przykład wymagań Przy obciążeniu do 100 transakcji na sekundę typu «ping» i 10 transakcji na sekundę typu «akcja»: • średni czas odpowiedzi dla transakcji typu «akcja» powinien być nie więcej niż 2,5 sekundy, a na typu «ping» 1 sekunda • liczba błędów nie powinna przekroczyć 1% • rozrzut (dyspersja) nie przekracza 5% Przykład wymagań Przy obciążeniu do 100 transakcji na sekundę typu «ping» i 10 transakcji na sekundę typu «akcja»: • średni czas odpowiedzi dla transakcji typu «akcja» powinien być nie więcej niż 2,5 sekundy, a na typu «ping» 1 sekunda • liczba błędów nie powinna przekroczyć 1% • rozrzut (dyspersja) nie przekracza 5% • Serwer aplikacji powinien zużywać nie więcej niż 75% CPU i nie więcej niż 2,2 GB pamięci RAM Przykład wymagań Przy obciążeniu do 100 transakcji na sekundę typu «ping» i 10 transakcji na sekundę typu «akcja»: • średni czas odpowiedzi dla transakcji typu «akcja» powinien być nie więcej niż 2,5 sekundy, a na typu «ping» 1 sekunda • liczba błędów nie powinna przekroczyć 1% • rozrzut (dyspersja) nie przekracza 5% • Serwer aplikacji powinien zużywać nie więcej niż 75% CPU i nie więcej niż 2,2 GB pamięci RAM • System powinien nawiązywać nie więcej niż trzy połączenia jednocześnie z DBMS Jakie wymagania są lepsze? Szczegółowe? VS Przy obciążeniu do 100 transakcji na sekundę typu «ping» i 10 transakcji na sekundę typu «akcja»: • średni czas odpowiedzi dla transakcji typu «akcja» powinien być nie więcej niż 2,5 sekundy, a na typu «ping» 1 sekunda • liczba błędów nie powinna przekroczyć 1% • rozrzut (dyspersja) nie przekracza 5% • Serwer aplikacji powinien zużywać nie więcej niż 75% CPU i nie więcej niż 2,2 GB pamięci RAM • System powinien nawiązywać nie więcej niż trzy połączenia jednocześnie z DBMS Nieformalne i rozmyte? Przy obciążeniu do 100 jednocześnie pracujących klientów z systemem: • średni czas odpowiedzi powinien wynosić nie więcej niż 2,5 sekundy. Cel testowania • Sprawdzenie zgodności z wymaganiami Przykład wymagań Przy obciążeniu do 100 transakcji na sekundę typu «ping» i 10 transakcji na sekundę typu «akcja»: • średni czas odpowiedzi dla transakcji typu «akcja» powinien być nie więcej niż 2,5 sekundy, a na typu «ping» 1 sekunda • liczba błędów nie powinna przekroczyć 1% • rozrzut (dyspersja) nie przekracza 5% • Serwer aplikacji powinien zużywać nie więcej niż 75% CPU i nie więcej niż 2,2 GB pamięci RAM • System powinien nawiązywać nie więcej niż trzy połączenia jednocześnie z DBMS Cel testowania • Sprawdzenie zgodności z wymaganiami • Uzyskać informacje na temat wydajności i dostarczyć zainteresowanym stronom, aby mogły one wykorzystać je do podejmowania decyzji Cele testowania Wykorzystanie otrzymanej informacji 1. Sprawdzenie zgodności z wymaganiami 2. Porównanie różnych wersji i konfiguracji systemu 3. Identyfikowanie „wąskich miejsc” (bottlenecks) Informacja Statyczna VS • Odsetek blędów przy stałym obciążeniu 100 transakcji na sekundę • Zużycie pamięci RAM w ustalonym obciążeniu 100 transakcji na sekundę Dynamiczna • Zależność Ilości błędów od obciążenia • Zależność Zużycia RAM od obciążenia Jakie wymagania są lepsze? Szczegółowe? VS Nieformalne i rozmyte? Dynamiczna informacja Trzy bazowe komponenty • Generacja obciążenia • Monitorowanie charakterystyk wydajności • Analiza wyników Narzędzia dla generowania obciązenia • JMeter – http://jmeter.apache.org/ • grinder – http://grinder.sourceforge.net/ • multi-mechanize – http://testutils.org/multimechanize/ • Gatling – http://gatling-tool.org/ • Tsung – http://tsung.erlang-projects.org/ • loadUI – http://www.loadui.org/ • curl-loader – http://curl-loader.sourceforge.net/ Z chmur • • • • • BlazeMeter – http://blazemeter.com/ Blitz – https://www.blitz.io/ Load Impact – http://loadimpact.com/ LoadStorm – http://loadstorm.com/ SOASTA – http://www.soasta.com/ Monitoring • Wbudowane narzędzia • Narzędzia systemu operacyjnego (Perfmon, SAR) • Narzędzia serwerowe, DBMS, ... • Narzędzia specjalistyczne (Zabbix, Nagios, Hyperic) Analiza wyników • Wbudowane narzędzia • Arkusze kalkulacyjne • Pakiety dla przetwarzania danych statystycznych Praktyczna demonstracja Zadanie • Zapisać rekorderem scenariusz dodawania grup • Ustawić grupę wątków dla 50 użytkowników i czas trwania testu 180 sec • Monitorować zmiany średniego czasu reakcji (response time) z czasem w Graph Result Plan 1. Wymagania i cele 2. Modelowanie obciążenia 3. Parametryzacja i korelacja scenariuszy 4. Analiza wyników Model obciążenia Ile i jakich akcji(działań) na system ma być na system w jednostkę czasu • Log file • Dane historyczne http://www.symplur.com/blog/dayofdiabetes-shared-in-real-time/ Słownik pojęć • Profil - zbiór scenariuszy, danych testowych, i opis sposobu uruchomienia scenariuszy • Scenariusz – sekwencją zapytań, rozdzielonych czasowymi odstępami • Zapytanie – jednostka interakcji pomiędzy systemem testującym i testowanym systemem Zależność od czasu Zależność od czasu akcji (dla każdego rodzaju zapytań) • stała • zmienna Rodzaj oddziaływań • Osobne zapytania –Testowanie zorientowane na kliknięcia (hit-oriented testing) • Scenariusz (kolejność wniosków) –Testowanie zorientowane na scenariusze (scenario-oriented testing) Przykład zorientowany na hity Osobne akcje – Przeglądanie listy grup (2) – Otwieranie strony z formularzem (1) – Wysłanie wypełnionego formularza (1) Przykład modelu obciążenia • Stałe obciążenie – wirtualnych użytkowników lub transakcji • Cel: uzyskać informacje o zachowaniu systemu Praktyczna demonstracja Praktyczna demonstracja Zmodyfikować przykład 1 a) Ustawić 100 wątków, mają oni być uruchomione po kolei za 1 minutę i obciążenie generowanie przez 10 min b) Ustawić stałe obciążenie 2 zapytania na sekundę w ciągu 10 min Przykład modelu obciążenia • Stale zwiększa obciążenie • Cel: Aby wyszukać punkt nasycenia Praktyczna demonstracja Praktyczna demonstracja Zmodyfikować przykład 1 • Ustawić 600 wątków, mają oni rosnąć z czasem od 0 do 600 i obciążenie generowanie przez 10 min Przykład modelu obciążenia • Stałe obciążenie bliskie do granicznego • Cel: Aby sprawdzić stabilność Praktyczna demonstracja Zmodyfikować przykład 1 • Ustawić obciążenie na 10% mniej od krytycznego i testować przez 10 min Praktyczna demonstracja Przykład modelu obciążenia • Obciążenie z "seriami" • Cel: Aby sprawdzić stabilność – Plugin „ Throughput Shaping Timer” Plan 1. Wymagania i cele 2. Modelowanie obciążenia 3. Parametryzacja i korelacja scenariuszy 4. Analiza wyników Parametryzacja • Opcje konfiguracyjne • Dane testowe –Generowanie danych losowych –Dane z tabeli (pliku zewnętrznego) Praktyczna demonstracja Korelacja • Przekazywanie danych z odpowiedzi na poprzednie zapytanie do jednego z następnych zapytań – wyodrębnienie danych z wyniku zapytania – wykorzystanie wyodrębnionych danych Praktyczna demonstracja Plan 1. Wymagania i cele 2. Modelowanie obciążenia 3. Parametryzacja i korelacja scenariuszy 4. Analiza wyników To jest – testowanie! • Problem może być znaleziono lub nie znaleziono – zebranych danych nie jest wystarczająco – niepoprawna metoda analizy – może być że w ogóle nie tego szukaliśmy • Nie można udowodnić brak defektów – eksperyment pokazuje coś – ale mogą istnieć różne interpretacje Примеры проблем • большое время отклика • большое количество отказов • высокое потребление ресурсов • большой разброс значений • отдельные значительные отклонения Przykłady problemów • Duży czas reakcji • Duża liczba błędów • Wysokie zużycie zasobów • duży zakres wartości • niektóre znaczące odchylenia Źródło problemów • brak zasobów • nieoptymalne algorytmy • • • • • niewłaściwe zbalansowanie niewłaściwe keszowanie niewłaściwa synchronizacja (blokowanie) niewłaściwe zarządzanie kolejką defekty funkcjonalne Analiza jakościowa • • • • • Przegląd ręczny danych surowych Budowanie wykresów Szukanie wzorców Szukanie trendy Szukanie anomalie Analiza ilościowa • Średnie jednakowe • Gdzie „lepsza” wydajność Błędy pierwszego i drugiego rodzaju • Fałszywo-pozytywny wynik – ma objawy defektu, ale w rzeczywistości nie ma defektu, ale objawy są spowodowane przez coś innego • Fałszywo-niegatywny wynik – objawy defektu nie pojawiają się lub nie są zauważone, ale w rzeczywistości jest defekt. Raport • Aktualny • Trafny (Relevant) • Zrozumiały • Samowystarczalny • Opierający się na danych Dane żródłowe • Nie zapomnij, aby wskazać: –kiedy uzyskane dane –jakie testy były uruchomione –w jaką konfiguracją były uruchomione Trzeba pamiętać że • Dane liczbowe dostarczone w dużej ilości są ciężkie do zrozumienia • Ludzie źle znają matematykę • Ludzie nie mają intuicyjnego rozumienia zjawisk statystycznych • Błędna interpretacja danych prowadzi do błędnych wniosków Dobry raport zawiera • • • • • • Porównanie czegoś z czymś Jest oczywiste, co jest lepsze a co gorsze Zawiera ustne wyjaśnienia Skala wykresów dobrana odpowiednio Łączy obserwację z celami Zawiera linki do danych źródłowych Narzędzia • • • • Wbuwane pluginy w Jmeter Excel Loadosophia RapidMiner Przykład analizy Literatura 1. 2. 3. 4. Jmeter user manual i wiki Apache Jmeter. Emily H. Halili Web Load testing for dummies Performance Testing Guidance for Web Applications (Microsoft) 5. The Art of Application Performance Testing By Ian Molyneaux 6. Data Mining for the Masses by Dr. Matthew A North (Author) Dropbox link http://goo.gl/loVv18 Pytania? Dziękuję za uwagę