JMeter i molnet

Jag fick för lite sedan frågan om jag kunde prestandatesta en ny e-handelsbutik och några bakomliggande webservices. Jag hade lätt kunnat tacka nej då mitt egentliga uppdrag är av helt annan art och inom ett helt annat område. Det viktigaste skället till varför jag kanske borde ha tackat nej är att jag inte kört mer än några enstaka prestandatester sedan 2005 och definitivt inte är någon expert på området.  Min nyfikenhet tog dock i vanlig ordning över och jag började ställa en rad följdfrågor.

– Fanns det något prestandaverktyg i huset som jag kunde använda. Ja det fanns, ett av de svindyra fullfjädrade verktygen fanns i huset, men med endast 200 samtidiga användare. Då vi av olika skäl ville ha många samtidiga inloggade sessioner så räcke inte den siffran på långt när.  Inget alternativ alltså, om jag inte skulle börja med att övertyga kunden att köpa/hyra verktyg i miljon klassen.

– Jag undersökte också om utvecklarna eller system testarna hade kört några prestanda tester över huvudtaget. Ja det hade de, till min stora lycka. De hade använt JMeter för att prestandatesta olika webservices och några basala flöden i e-handelsbutiken. Allt var naturligtvis kört mot stubbar och emulatorer, men ändå testat.

De fanns alltså JMeter kompetens och erfarenhet i huset, vilket gjorde att jag började överväga att använda mig av JMeter som verktyg. Detta bifalles och ja fick låna rätt kompetens för detta. Problemet var bara att de som besatt kompetensen var på väg bort ifrån projektet och hela organisationen, vi hade alltså i vanlig ordning ont om kalender tid.

Nästa sak som jag undersökte var tillgången till en prestandatestmiljö, samt servrar att generera lasten ifrån. Vi kunde turligt nog testa i den kommande produktionsmiljön, vilket förstås passade oss utmärkt.

Dessvärre så skulle det ta ungefär tre veckor att få tillgång till servrar att generera lasten ifrån. Den tiden hade vi inte om vi skulle utnyttja JMeter kompetensen som fanns i huset. Administrationen och övertalnings kampanj för att få tillräckligt många servrar kändes också oöverstiglig för ögonblicket.

Jag råkade då snubbla in på den utmärkta sajten http://www.jk-itberatung.de och började där läsa om hur Jörg Kalsbach körde JMeter på Amzons EC2 servrar. Det finns på sajten även en steg för steg anvisning om hur man går till väga för att sätta upp en sådan infrastruktur. http://www.jk-itberatung.de/jmeter/JMeterInTheCloud.pdf

Bilden nedan beskriver hur JMeter infrastrukturen ser ut:

jmcc

Eftersom jag redan hade konto och till och från hyrt EC2 servrar så gick det väldigt smidigt att sätta upp en sådan miljö. Jörg Kalsbach är bussig nog att utan kostnad bjuda på sin färdig konfigurerade AMI (se artikeln utnyttja molnet för dina tester för mera info om AMI och Amazon EC2). Jörgs AMI (AMI ID ami-b936d5d0) innehåller JMeter och hjälp programmet StarterKit på en Ubuntu plattform. StarterKit hjälper dig att starta och konfigurera dina lastgeneratorer (Slaves) direkt från kontrollern (Master).

Jag loggade helt enkelt in på mitt Amazon ec2 konto och beställde en server med Jörgs AMI på.

launch

running

Efter 2 minuter så gick det bra att ansluta via SSH.

putty

För att dra nytta av StarerKit och JMeters fulla potential så tycker jag det är smidigare att logga in med en NX client så du kommer åt KDE fönstret direkt. När du loggar in så finns det redan en ikon på skrivbordet för StarterKit.

starterkit

Klicka på ikonen och bestäm hur mången lastgenerator du behöver. Dessa startar sedan och JMeter startas sedan automatiskt. Det går naturligtvis bra att starta JMeter som vanligt genom att köra jmeter filen i bin biblioteket om man nu hellre vill det.

morerunning

Sedan är det bara att använda JMeter som vanligt, fast med obegräsat med kraft till förfogande. Skälva testerna blev lyckade, dock inte resultatet. Men det dåliga resultatet kan vi inte klandra JMeter eller EC2 för.

jmeter

När vi sedan funderade på hur detta skulle förvaltas så beslöt vi oss för att prova denna sajt, http://www.cloud-intelligence.com Cloud Intelligence har redan gjort all ovanstående konfigurering åt dig, det är i teorin bara att ladda upp dina JMeter tester och börja prestanda testa.

cloudintel

I Praktiken måste du ju förstås konfigurera några småsaker men allt finns utförligt beskrivet i sajtens steg för steg guides. Denna lösning fungerade väldigt väl för oss och medför att vi endast behöver förvalta JMeter skripten, ingenting annat. Det finns säkert gott om alternativ till Cloud Intelligens som man bör undersöka och det är inte den specifika sajten jag vill öppna ögonen för, utan möjligheten som sådan.

Kostnaden är när artikeln skrevs 0,085$ per EC2 server och timme. Alltså kan du köra en Master och 11 Slaves för 1$ i timmen. Med denna uppsättning kan du generera vansiningt mycket last. Det tilkommer sedan 0.10-0.17$ per GB data som skyfflas till och från servern. Cloud Intelligens kostade ungefär tre gånger så mycket, men det blir ändå inga stora summor under våra korta prestanda tester. På Cloud Intelligens så har du möjligheten att ha kontroll på dina kostnader genom att du köper crediter i förväg.

About Jonas

Jonas Hermansson VD, Krav och testnörd på Inceptive Stockholm Grundare av TestZonen.se. Tidigare medlem i Styrelsen SAST. Medlem i Styrelsen DSDM konsortiet. Jonas började arbeta med kvalitetssäkring och test 1994 och är specialiserad på testorganisation, testprocess och testverktyg. Han har bland annat arbetat som testledare, testchef, testautomatiserare, lärare och mentor samt med krav och verktygsupphandling.