57
Greitaveikos testavimas Artūras Mačiulis MIF, Vilnius, 2013

Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

Embed Size (px)

Citation preview

Page 1: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

Greitaveikos testavimas

Artūras Mačiulis

MIF, Vilnius, 2013

Page 2: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

Ar tikrai vykdomas greitaveikos testavimas IT projektuose?

● SODRA● LAMA BPO● Vilniaus transporto elektroninio bilieto sistema● VMI● t.t.

Page 3: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

Bet padėtis gerėja

● Jau atsiranda pranešimai– “Dėl per didelio užklausų kiekio, sistema negali

apdoroti Jūsų užklausos”

– “Jūsų užklausą apdorosime vėliau”

– “Bandykite dar kartą”

Page 4: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

O dabar rimčiau

● Kada vykdome greitaveikos testavimą?– Dažniausiai tik prieš projekto paleidimą, kai kažkas

turi pamatyti greitaveikos rezultatus ir leisti diegtis po testavimo rezultatų

● arba pagerinus sistemos veikimo rezultatus● arba pakeitus reikalavimus..

Page 5: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

O kada būtų gerai daryti greitaveikos testavimą

● Sistemos gyvavimo metu – kad naujas funkcionalumas ar klaidos pataisymas ypač nesulėtino sistemos

● Migruojant į naujas architektūrinių komponentų versijas (DB, App serverius)

Page 6: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

O ar darome?

Page 7: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

Bet va gavom užduotį

● Ištestuoti išleidžiamą mūsų suprogramuotą sistemą

Page 8: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

8

Matome, kad yra šios greitaveikos testavimo kategorijos

● Greitaveikos testas (angl. “Performance test”)● Apkrovos testas (angl. “Load test”)● Stresinės situacijos testas (angl. “Stress

test”)

Page 9: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

9

Greitaveikos testavimas (angl. “Performance test”)

● Nustatomas arba tikrinamas PĮ greitis, plečiamumas ir stabilumas tikrinant kaip jie veikia

● Tikrinam pasiekimą iki reikalavimų

Page 10: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

10

Apkrovos testas(angl. “Load test”)

● patikrinamas veikimas normaliomis sąlygomis bei didžiausio apkrovimo sąlygomis– “Empty task”

● Randami buferio perpildymai, šiukšlės darbinėje atmintyje (“memory leaks”) ar blogas atminties valdymas

Page 11: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

11

Stresinės situacijos testas (angl. “Stress test”)

● nustatoma arba tikrinama PĮ elgsena, kai apkrova siekia maximumą arba virš jo– ir kaip po to sistema atsistato

Page 12: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

12

Kurį / kuriuos darysime?

Page 13: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

13

Va tokia padėtis

● Architektai “paskaičiavo”, kad 2 serverių po 16 CPU, 64 GB RAM ir greitų diskų turėtų pakakti reikalavimams įgyvendinti (bet jų dar nėra – ech tas PM ir tie vėluojantys užsakymai...)

● Testavimo aplinka turi “serveriuką” su 4 CPU, 4 GB RAM

Page 14: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

14

O kas belieka

● Mėginam reikalavimus pasiekti arba bent jau artėti prie jų testavimo aplinkoje

● Nepamirštant Amdahl'o dėsnio– Gijų varžymasis ir sinchronizavimas, IO

Page 15: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

15

Pirmiausia pamėginam ištestuoti komponentų greitaveiką

● Randam TPS (transactions per second)● Tinklo parametrai (vidinis ir išorinis tinklas) –

latency, throughput, response time

Page 16: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

16

Wait!

● Reikia tam pasiruošti!– Konfigūracijos

● OS● Sistemos parametrai

– Pritaikyti sistemą● Loginimas● Profaileriai

– Saugykla, kur saugosim konfigūracijų pasikeitimus pagal laiką bei testavimo rezultatus

Page 17: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

17

O gal nedarom?

Page 18: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

18

OK, darom. Mėginam JMeter

● Nemokamas● “Pure” Java● JMeter negali veikti kaip naršyklė● Turi tiek grafinę, tiek komandinės eilutės

sąsają● JMeter plėtiniai

– https://code.google.com/p/jmeter-plugins

Page 19: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

19

JMeter vaizdas

Page 20: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

20

JMeter standartiškai turi

● Gijų grupes (thread groups)● Logikos valdiklius (logic controllers)● Užklausų vykdytojus (samplers)● Įvykių apdorotojus (listeners)● Laikmačius (timers)● Sąlygų tikrintojus (assertions)● Konfigūracijas (configurations)

Page 21: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

21

Gijų grupė

Page 22: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

22

JMeter gijų

grupės plėtiniai

Page 23: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

23

JMeter gijų

grupės plėtiniai

Page 24: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

24

Logikos valdikliai

● Loop Controller● Once Only Controller● Random Controller● Random Order Controller● Runtime Controller● If Controller● While Controller● Switch Controller● ForEach Controller● Include Controller● Transaction Controller● Recording Controller

Page 25: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

25

Užklausų vykdytojai

● FTP Request● HTTP Request● JDBC Request● Java Request● SOAP/XML-RPC Request● LDAP Request● Access Log Sampler● TCP Sampler● JMS Publisher / Subscriber/ Point-to-Point● JUnit Request● Mail Reader Sampler● SMTP Sampler● OS Process Sampler

Page 26: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

26

JMeter leidžia testuose apsirašyti kintamuosius ir funkcijas

● ${VARIABLE}● ${__functionName(var1,var2,var3)}

– __threadNum

– __javaScript

– __regexFunction

– __Xpath

– __Random

– __RandomString

Page 27: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

27

Pradžiai to pakaks vykdant greitaveikos testavimą

● Testuosime tik izoliuotas sistemos vietas– Testai turi būti statitiški

– Rasime rezultatus ir jie bus matuojami paleidus tą patį testą tuo pačiu scenarijumi

● Problemos– Bendra aplinka su kitomis sistemomis, dalinami resursai

– Cache'inimas - šiuo momentu jis turėtų būti išjungtas, jeigu įmanoma

– Integracijas geriausia “mockinti”

Page 28: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

28

Apkrovos testavimui reikia pamėginti sugeneruoti kuo realesnę apkrovą

● Galimybės, kaip galima pasiekti duomenis, reikalingus testavimo pradžiai:– CSV failas

– JDBC

– LDAP

– Kita (priklausomai nuo to kaip ir kur saugomi duomenys)

Page 29: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

29

Galim pasiimti duomenis iš CSV failo

Page 30: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

30

JDBC užklausa

Page 31: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

31

Išorinė integracija

● Mūsų sistema integracijai su kitomis sistemos gali teikti paslaugas per skirtingus protokolus:– SOAP

– JMS

– SMTP

– TCP / UDP

● Galim apsimesti klientais

Page 32: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

32

SOAP užklausa

Page 33: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

33

JMS pranešimas

Page 34: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

34

TCP / UDP prisijungimų vykdymas

Page 35: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

35

OS komandų kvietimas

Page 36: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

36

Tada mėginam analizuoti rezultatus

Page 37: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

37

Rezultatų gavimas ir apdorojimas

● Pirmiausia būtų gerai įsitiktinti, kad testai veikia tinkamai ir be klaidų– Rezultatų peržiūra

– Atsakymų kodų tikrinimas

– Sąlygų tikrintojai (REGEXP, Xpath)

● Statistinė duomenų analizė– Reiktų pasiruošti tokią aplinką, kad būtų galima

greitai ir be didelių analizių matyti pokyčius

Page 38: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

38

Rezultatų medžio peržiūra

Page 39: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

39

Standartinis rezultatų grafikas (naudoti retai)

Page 40: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

40

Transakcijos per sekundę

Page 41: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

41

Apjungti rezultatai

Page 42: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

42

Ko turėtume siekti vykdydami šį testavimą

● Rasti “butelio kamštelius” ir juos pašalinti● Pažiūrėti kaip elgiasi sistema, kai nebeatlaiko

apkrovos (ir padaryti pranešimą, kad sistema jau “nebegali”)

● Patikrinti galimybę skaliuoti sistemą

Page 43: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

43

Gauta žinutė iš PM

● Gauti produkciniai serveriai!

Page 44: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

44

Pamėginam išskirstytą testavimą

● Testuojant su vienu klientu testavimą gali riboti tinklo pralaidumas

● Nepavyksta sukelti didelės apkrovos galingam serveriui

● Surenkami realistiškesni rezultatai

Page 45: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

45

Veikimo schema

Page 46: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

46

Vykdymo eiga

● Startuojami visi tarnai● Paleidžiamas šeimininkas

– jmeter.properties nurodomi tarnų IP adresai

● Sukuriamas testas su įvykiu apdorotojais, apjungiančiais testavimo rezultatus

● Galima startuoti po vieną šeimininką arba visus iš karto

Page 47: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

47

Nuotolinio tarno paleidimas

Page 48: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

48

Apribojimai ir patarimai

● Testavimo šeimininkas ir tarnai privalo būti tame pačiame potinklyje● Galima stebėti tinklo parametrus● Jeigu serveris nėra multi-procesorinis arba klasteris tai dažniausiai

pakanka 1 arba 2 klientų● Vienas JMeter klientas (kompiuteryje su 2-3Ghz CPU) gali vykdyti

300-600 gijų priklausomai nuo testo. Tik testams, kurie naudoja XML duomenų struktūras, tai negalioja, nes XML apdorojimas reikalauja daug procesoriaus resursų, todėl tai sulėtėja nuo 4 iki 10 kartų

● Stres testo metu geriausia palikti įjungtus tik svarbiausius įvykių apdorotojus

Page 49: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

49

Serverių klasterio (angl. “cluster”) stebėjimas

● Standartiškai JMeter neturi galimybės stebėti testuojamų serverių statistikos išskyrus Tomcat serverį

● Naudingas sistemos plečiamumo testavimui● Galimybė patikrinti, ar apkrova skirstoma tolygiai● Serverio apkrovos parametrų rodymas: CPU,

RAM ir diskinės atminties, diskinio kaupiklio ir tinklo įeities ir išvesties parametrų stebėjimas

Page 50: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

50

Serverių klasterio stebėjimo schema

Page 51: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

51

Page 52: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

52

Tai ką ryt diegiam į produkciją?

Page 53: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

53

O kaip be alternatyvų...

● Blitz.io (“debesyse”, skirtas WEB)● AgileLoad (“debesyse”)● HP Load Runner● Visual Studio 2010 Ultimate edition● Ir kiti.

Page 54: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

54

Išvados apie JMeter

● JMeter nemokamas, atviras, funkcionalus ir aktyviai palaikomas (daug problemų jau išspręsta, bet kyla ir naujų..)

● JMeter mėgsta galingus kompiuterius● Išskirstyto testavimo palaikymas padeda ištestuoti

galingus serverius● Galima naudoti ne tik greitaveikos testavimui (funkciniai,

integraciniai testai)● Testavimui nėra būtinos programavimo kalbos žinios● Pakankamai sudėtingas didelių testų palaikymas

Page 55: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

55

Išvados apie greitaveikos testavimą

● Rajus laikui ir pastangoms – ekonominiai svertai dėl kainos

● Pasiektas rezultatas gali būti to vertas ir nauda neabejotina

● Be to reikia turėti kantrybės..

Page 56: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

56

Literatūra

● http://www.softwaretestinghelp.com/what-is-performance-testing-load-testing-stress-testing/

● http://msdn.microsoft.com/en-us/library/bb924375.aspx

● http://jmeter.apache.org/● https://code.google.com/p/jmeter-plugins/● Paveikslai: http://google.lt

Page 57: Greitaveikos testavimas - klevas.mif.vu.ltadamonis/tikv/1314r/pr/PerformanceLoadStress... · – SOAP – JMS – SMTP – TCP ... Galima startuoti po vieną šeimininką arba visus

57

Klausimai?

Ar žinote, kad šiandien “Pasaulinė sveikinimosi diena”?