Testautomation för WebApplikationer – Selenium

Skrivet av:
Paul Arcombe,
Certified ISTQB Foundation SoftwareTester,
Örestad-Linux, Malmö

INLEDNING.
Detta utkast är starten på ett projekt inom Test Automatisering, där vi undersöker testverktyget Selenium och dess möjligheter inom webapplicerad testautomatisering. Selenium används i denna studie tillsammans med JAVA och JUnit i en Windows XP miljö.


SAMMANFATTNING.
Selenium är ett test verktyg som används för att generera test skript. Detta sker genom att spela in de händelser som utföres av en användare på en internetsida i en valfri browser.

Skriptet som genereras, erhålles i ett speciellt skriptspråk – Selenese, som sedan kan exporteras till i princip vilket programmerings språk som helst. Dessa skript kan köras individuellt, i större sviter eller som inbäddade test i egendefinierade testapplikationer. Selenium är ett utmärkt Open Source verktyg som lämpar sig synnerligen väl för repetitiva RegressionsTestLösningar då tid, repeterbarhet och smidighet är nyckelfaktorer.


SYFTE / MÅL
Projektet går ut på att

  1. Undersöka vad Selenium kan erbjuda inom automatiserad test av webapplikationer.
  2. Installera och sätta upp Selenium.
  3. Bygga och slutligen använda enskilda tester med hjälp av Selenium.
  4. Att sätta upp och få igång en fungerande testmiljö bestående av Selenium, Java och JUnit
  5. BASICS: Hur man använder testsviter/multipla test från Selenium m.h.a. Java och JUnit.
  6. ADVANCED (I): Skriva/modifiera skript m.h.a. skriptspråket Selenese.
  7. ADVANCED (II): Loggar, Test sammanfattningar och Test rapporter

Projektet är avsett att uppdateras en gång per vecka, med start 091116.  Avslutat 091231.

<TIDIGARE>                                                            <NÄSTA>


KAPITEL 1:  Undersöka vad Selenium kan erbjuda inom automatiserad test av webapplikationer.


TESTAUTOMATION FÖR WEBAPPLIKATIONER.
Många, kanske de flesta, programvaruapplikationer är i dag skrivna som webbaserade applikationer att köras i en Internet webbläsare. Effektiviteten vid test av dessa applikationer varierar brett bland företag och organisationer.

I en era av fortlöpande förbättring av programvaruprocesser, som Agile och eXtreme programming (XP), kan det argumenteras att disciplinerad testning och quality assurance practices fortfarande är underutvecklat i många organisationer. Test av programvara utförs ofta manuellt. Emellanåt är detta effektivt; emellertid finns det alternativ till manuell testning som många organisationer är omedvetna om, eller saknar expertis att utföra. Att anpassa sin test verksamhet till sådana alternativ skulle i de flesta fall avsevärt förbättra effektiviteten i deras programvaruutveckling.

Test automation är ofta svaret. Test automations hjälpmedel, verktyg för att köra repeterbara test mot målapplikationen när helst det är nödvändigt.

Det finns många fördelar med test automation. De flesta är relaterade till repeterbarheten av testen, och den hastighet med vilken testen kan exekveras med. Det finns ett antal kommersiella och Open Source verktyg tillgängliga som hjälpmedel inom test automation utveckling. Selenium är troligtvis den mest använda Open Source lösningen. Denna användarguide är avsedd för såväl nya, och mer erfarna Selenium användare, som vill lära sig effektiva tekniker i att bygga testautomation för webapplikationer.

Denna guide introducerar Selenium, pekar på dess bredast använda särdrag, och ger användbar rådgivning i best practices ackumulerat från Selenium Community. Många exempel ges. Teknisk information som beskriver Seleniums interna struktur, och rekommenderat bruk av Selenium ges som bidrag från konsortiet av erfarna Seleniumanvändare.
Denna guide syftar till att vägleda nya användare i användandet av Selenium inom test automation.

För att hålla en röd tråd i denna guide kommer exempel och beskrivningar att begränsas till Selenium med inriktning mot Java och JUnit-test automatisering med Mozilla Firefox och Windows XP SP3 som testmiljö. Samma principer gäller dock för andra inriktningar, webbläsare och operativsystem, även om implementeringen skiljer sig. De som vill fördjupa sig i andra inriktningar hänvisas till specifik dokumentation på

Seleniums hemsida.


INTRODUKTION AV SELENIUM
Selenium är en robust uppsättning av verktyg som stöder Rapid Development av test automation för webbaserade applikationer. Selenium ger en rik uppsättning av testfunktioner, specifikt utformade för att möta behoven vid testning av webapplikationer. Dessa funktioner är flexibla och ger många alternativ för att lokalisera UI-beståndsdelar, och jämföra förväntade test resultat mot faktiskt applikations uppförande.

–  Ett av Seleniums huvudsakliga särdrag är möjligheten att utföra testning på multipla webbläsarplattformar.

–  Ett annat är att erhålla genererade testskript i valfritt programmeringsspråk, för användning såväl embedded som standalone. Detta är synnerligen användbart då man vill köra multipla test eller blandade testsviter i specifikt komponerade sekvenser.

–  Eftersom Selenium är byggt i Java är det även plattformsoberoende


PLATTFORMAR
Selenium fungerar på de flesta platformar. Här följer en lista på vilka:

Platforms supported by Selenium


VAD ÄR SELENIUM?
Selenium är ett testverktyg för webapplikationer, som använder sig av JavaScript och Iframes för att köra tester direkt i en webbläsare (browser). Det finns ett flertal verktyg som är baserade på denna teknologi: Selenium Core, Selenium IDE, Selenium Remote Control, Selenium Grid och Selenium on Rails (Den sistnämnda ingår inte i denna studie och kommer ej att nämnas mer.).


SELENIUM KOMPONENTER.
Selenium består av Selenium Core och tre andra huvudverktyg. Vart och ett med specifika roller inom testautomation för utveckling av webbapplikationer.
Selenium Core är ett annat sätt att köra test på. Man kan köra test skript från en webbläsare genom att använda dess HTML interface TestRunner.html. Detta är originalmetoden för att köra Selenium kommando. Det har dock sina begränsningar. Precis som Selenium-IDE, stöder det inte iteration.


SELENIUM CORE
Selenium-Core kan inte skifta mellan http och https-protokoll. Sedan utvecklingen av Selenium-IDE och Selenium-RC, används dessa verktyg i större utsträckning än Selenium-Core själv. I skrivandets stund (November 2009) finns det fortfarande tillgängligt. Dock bör det uppmärksammas att Selenium-Core är en produkt som på sikt kommer att fasas ut. Selenium Community uppmuntrar till användning av Selenium-IDE och RC. De avråder användandet av Selenium-Core. Support för Selenium-Core blir allt mindre i omfattning och tillgänglighet och kommer sannolikt att fasas ut helt i framtida utgåvor.


SELENIUM IDE
Selenium-IDE är den integrerade utvecklingsmiljön för att bygga Selenium testfall.
Den fungerar som en Firefox-add on och tillhandahåller ett ”easy-to-use” interface för utveckling och körning av individuella testfall eller hela testsviter. Selenium-IDE har en inspelningsfunktion, som registrerar användar händelser efterhand som de utföres och lagrar dem som återanvändbara skript för återuppspelning. Den har även en context meny (högerklicka) integrerad med Firefox webbläsare, som tillåter användaren att välja från en lista av förslag och verifikationer för det valda läget. Selenium-IDE erbjuder även fullständiga editerings möjligheter av testfall för mer detaljerad precision och kontroll. Även om Selenium-IDE är en Firefox add-on, kan skapade testfall även köras mot andra webbläsare genom att använda Selenium-RC viagra for men online. Testfallen kan även köras från kommandoprompten genom att helt enkelt specificera namnet på den testsvit man vill köra.


SELENIUM RC
Selenium-RC ger test automations utvecklaren möjlighet att använda sig av olika programmeringsspråk för maximal flexibilitet och omfattning i utveckling av testlogiken. Till exempel, om applikationen som testas returnerar ett resultatset, och om det automatiserade testprogrammet behöver köra tester för varje element i resultatsetet, kan valt programmeringsspråks iterations support utnyttjas för att iterera genom resultat setet, och använda Seleniums kommando för att köra testen för varje enskillt testobjekt.
Selenium-RC tillhandahåller ett API (Application Programming Interface) och bibliotek för varje programmeringsspråk som det stöder:

HTML,
JAVA,
C#,
Perl,
PHP,
Python,
Ruby,
Drupal,

etc….

Denna möjlighet att använda Selenium-RC med högnivå programmeringsspråk för att utveckla testfall tillåter även den automatiserade testningen att integreras i ett projekts automatiserade byggmiljö.


SELENIUM GRID
Selenium-Grid gör det möjligt för Selenium RC lösningen att anpassas för stora test sviter eller test sviter som måste köras i multipla miljöer. När Selenium-Grids multipla instanser av Selenium-RC körs på olika operativsystem och webbläsarkonfigurationer, kommer var och en av dessa att registreras i ett nav (hub) efterhand som de startar. När testen sänds till navet kommer de att omdirigeras till en tillgänglig Selenium-RC, som kommer att starta sin webbläsare och köra testet. Detta tillåter parallellkörning av tester, där teoretiskt hela testsviten körs samtidigt och är klar på den tid som det tar att köra det längsta individuella testet.

HUR DET FUNGERAR.

how-it-works