Testautomation för WebApplikationer – Selenium

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

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 3:  Bygga och slutligen använda enskilda tester med hjälp av Selenium.


INTRODUKTION
Detta kapitel handlar om Selenium IDE, hur man skapar och kör enstaka testfall i detta. I det följande kommer tillverkning av skript och skriptkörning, med hjälp av Selenium IDE att förklaras steg-för steg. Då Selenium IDE är baserat på Java, krävs det att du har Java installerat på din dator.  Installation enligt föregående kapitel skall ha genomförts innan du går vidare. De testfall som skapas och beskrives i detta kapitel baseras på Seleniums kommandospråk Selenese. Detta kommer att beskrivas i detalj i kommande kapitel längre fram.


SELENIUM-IDE EGENSKAPER

-  Meny List (Menu Bar)
Selenium-IDE(2)* I Arkiv menyn (File menu) skapar, öppnar, sparar och exporterar du Test Case (TC) och Test Suite (TS) filer.

* I Redigera menyn (Edit menu) kopierar, klistrar in, raderar och ångrar du, dvs. här väljer du operationer för att editera i ditt testfall.

* I Options menyn (Option menu) ändrar du inställningar för Selenium IDE. Du kan sätta timeout värde för definierade kommando, addera användar definierade eller användar extensions till bas uppsättningen av Selenium kommandona. Här bestämmer du även vilken default output- samt det clipboard format du vill ha samt specificera formatet (språket) som används då du sparar ditt testfall.

* Hjälp menyn (Help menu) är FireFox standard Hjälp meny; bara ett objekt på denna meny hänför sig till Selenium; UI-Element Documentation.


-  Verktygs List (Tool Bar)
Verktygslisten innehåller knappar som kontrollerar exekvering av dina testfall, inklusive en steg för steg feature för debugging av testfall.  Den röda knappen längst till höger är uppspelningsknappen.  Denna startar  som default automatiskt inspelningen när Selenium startar.


Speed ControlHastighets Kontrollen (Speed Control):
reglerar hur fort ditt testfall körs.


Run AllKör Alla (Run All):
När en testsvit med multipla testfall är laddad, körs hela testsviten.


RunKör (Run):
Kör valt testfall. När endast ett test är laddat har denna knapp och ”Kör Alla” samma effekt.


Pause-ResumePaus/Återuppta (Pause/Resume)
Stoppar och startar testfallet.


StepSteg (Step)
Gör att man kan klicka sig igenom ett testfall, steg för steg, genom att köra ett kommando åt gången. Denna funktion används primärt vid de-bugging av ett testfall.


TestRunner ModeTestRunner (TestRunner Mode)
Gör att testfallet körs i en webbläsare som är laddad med Selenium-Core TestRunner. TestRunner används sällan numera och kommer sannolikt att fasas ut inom en snar framtid. Denna knapp är mest till för att utvärdera testfalls bakåtkompabilitet med TestRunner. De flesta användare kommer sannolikt inte att använda sig av denna funktionalitet.


Apply Rollup RulesTillämpa Rollup Regler (Apply Rollup Rules)
Denna avancerade funktionen grupperar repetitiva sekvenser av Selenium kommandon i en och samma handlingssekvens. Detaljerad dokumentation om ”Rollup Rules” hittas i ”UI-Element Documentation” under Hjälp menyn.


RecordInspelning (Record)
Spelar in vad användaren gör i webbläsaren


-  Testfall Fältet (Test Case Pane)

Skripten som skapats visas i Testfall Fältet. Detta har två flikar, Käll fliken (Source Tab), Sourcesom visar testfallet i ursprungsformat som filen kommer att sparas i. Som default är detta format HTML. Detta kan dock ändras till valfritt programmerings språk, som C#, Java, Python etc. Titta i Options menyn för en mer detaljerad beskrivning av detta. I käll-fliken kan du även editera ditt testfall i dess råa form (kopiera, klipp & klistra mm.)


Den andra, Tabell fliken (Table Tab) visar skriptets kommandon och dess parametrar.i ett läsbart ”tabell” format. TableCommand, Target, och Value indatafälten visar nuvarande valt kommando med dess parametrar.  I dessa indatafält kan du kan modifiera valt kommando. Den första parametern specificerad för ett kommando i Reference tab längst ned i bottenlisten, fylls alltid in i Target fältet. Om en andra parameter specificeras av Reference tab, fylls det alltid in i nästa fält dvs Value fältet. Om du startar med att modifiera i Command fältet, visas en drop-down list med val alternativ efterhand som du skriver in bokstäver. Du kan sedan välja det kommando som passar dig från listan.


Log/Referens/UI-Element/Rollup Pane
Fältet längst ner används för fyra olika typer av funktioner. Logg, Referens, UI-Element och Roll Up – beroende på vilken tab som är vald.


Log
När du kör ditt testfall, kommer error- och informations meddelanden som visar hur allt fortskrider att visas i detta fält automatiskt, även om denna tab inte är förvald från början. Log
Dessa meddelanden är ofta användbara då testfallen skall debuggas. För att radera loggen använder du ”Clear” knappen. Lägg märke till att ”Info knappen” är en drop-down meny som ger olika alternativ för att visa information.


Referens
Referens tabben väljes som default,närhelst du öppnar upp eller modifierar Selenese kommando och /eller parametrar i Table mode. Referensfältet kommer att visa dokumentation angående aktuellt kommando, när man befinner sig i ”Table”-mode.

Log-Referens-UI-Element-rollup Pane

När man anger eller modifierar kommando, antingen i Table eller Sourcemode, är det synnerligen viktigt att man försäkrar sig om att den parameter som är specifierad i Target eller Value fälten matchar de som är specificerade i parameterlistan som anges i Reference fältet. Parameterantal och typ måste matcha  specifikationen. Referenstabben är ovärderlig som snabbreferens, medan Selenium Referensdokument ger fördjupad information om detta behövs.


UI-Element och Rollup
Detaljerad information om dessa två listobjekt (som täcker avacerade funktioner, och ej behandlas just här) hittas i ”UIElement Documentation” på Hjälpmenyn i Selenium-IDE.


Bygga Test Fall
Det finns tre primära metoder för utveckling av testfall. För att kunna utveckla testfall måste du kontinuerligt använda dig av alla tre teknikerna.
-  Inspelning (Recording)
-  Addera (Adding Verifications and Asserts with the Context Menu)
-  Editera (Editing)


Inspelning (Recording)
När Selenium-IDE öppnas första gången, är inspelningsfunktionen som default startad. Denna kan , om så önskas, sättas i avstängt default mode (med hjälp av en user-extension). Under inspelning, kommer Selenium-IDE automatiskt att tillfoga kommandon till ditt testfall, baserade på vad du gör i webbläsaren. När du följer en länk t.ex. resulterar det i ett click kommando i Seleniums test skript. Ofta behöver man ändra vanliga click kommandon till clickAnd-Wait för att försäkra sig om att testfallet pausar tills den nya sidan är fullständigt nedladdad. Annars riskerar du att ditt testfall fortsätter att köra nästkommande kommando innan sidan har hunnit ladda alla sina UI-komponenter. Detta kommer att orsaka oförutsedda testfall-fel.


Addera (Adding Verifications and Asserts With the Context Menu)
Öppna FireFox, starta Selenium-IDE i inspelnings mode (recording mode) och högerklicka varsomhelst i webbläsarsidan. En kontext meny poppar upp, som visar verify och/eller assert kommando. Kontext menyn bör visa ett verifyTextPresent kommando och den föreslagna parametern är relaterad till det objekt eller fält som du höger-klickade på.  Lägg även märke till menyalternativet “Show All Available Commands menu”. Detta visar ytterligare tillgängliga kommando med föreslagna parametrar, för testning av det valda UI elementet.  Dessa kommandon kommer att förklaras i detalj i kommande kapitel om Selenium kommando (Selenese).

Assert & verification-mini


Editera
-  Lägga till kommando (Insert Command)
-  Lägga till kommentar (Insert Comment)
-  Editera ett kommando eller en kommentar (Edit a Command or Comment)

Detta kan göras i:
Tabell vy (Table View)
Högerklicka i vyn där du vill göra en ändring och välj vilken ändring du vill göra i popup menyn (nytt kommando eller ny kommentar). Skriv sedan in ändringen i Command/Target/Value fälten. Kommentarer blir automatiskt färgade lila.

editing

Källkodsvy (Source View)
Välj ett ställe i ditt testfall där du vill göra en ändring, lägg till önskat kommando, och ange de HTML taggar som behövs för att skapa en 3-kolumners rad innahållande kommando, första parametern (om denna krävs av kommandot), och andra parametern (återigen, om en sådan krävs). Försäkra dig om att du har SPARAT ditt test INNAN du lämnar denna view.

editing-sourceview


Bygg ett eget testfall med Selenium:  Wikipedia sökning.
Nu har du fått tillräcklig baskunskap för att kunna gå vidare och skapa, analysera, spara och slutligen köra ditt första enkla testfall.
Följande punkter kommer att utföras:

I)  Lägg upp en Testplan (vad, varför, var, och hur??)
II)  Skapa Testfallet i Selenium enligt testplanen
III)  Analysera Testskriptet (Selenese / HTML kod)
IV)  Spara Testfallet / Testskriptet
V)  Kontroll kör Testfallet / Testskriptet (Verifiering / Debugging)


I)  Testplan:

  • VAD?;  Skapa ett testfall för en internetsökning med ett specifikt ord.”Programvarutestning”.
  • VARFÖR?; Internesökningen syftar till att erhålla information om ett specifikt ord vars innebörd skall framgå.
  • VAR?;  Sökningen skall utföras i en FireFox webbläsare. Start URL skall vara http://sv.wikipedia.org/wiki/Portal:Huvudsida . Slut URL skall vara sökresultatets URL
  • HUR?;
  1. Öppna FireFox webbläsare
  2. Gå till Wikipedias hemsida (Start URL http://sv.wikipedia.org/wiki/Portal:Huvudsida)
  3. Öppna Selenium IDE (Menylist i FireFox:  Verktyg – Selenium IDE.)
  4. Stoppa inspelningen (den röda knappen längst upp till höger i Selenium IDE)
    om denna startats automatiskt som default.
  5. Nollställ/Reset Selenium (Menylist i Selenium IDE: Arkiv – New Test Case.)
  6. Namnge testfallet: I Selenium IDE gå till Testfall (Test Case) fältet och högerklicka på det nyskapade testfallet (Untitled). I popupmenyn välj “Properties” och namnge testfallet i Title-fältet som “WIKI-SEARCH“.
  7. Öppna rätt Start URL i Selenium IDE (Base URL fältet i Selenium IDE)
  8. Starta inspelningen (den röda knappen längst upp till höger i Selenium IDE)
  9. Skapa testfallet genom att utföra sökningen med ordet ”Programvarutestning
    på Wikipedias hemsida i FireFox webbläsare.
    -  Markera FireFox webbläsare genom att klicka i sökfältet “Hitta artiklar” på Wikipedias hemsida.
    -  Skriv in sökordet. ”Programvarutestning” i sökfältet.
    -  Tryck på knappen ”Sök” för att utföra sökningen.
  10. Av de sökresultat du får, väljer du det som har huvudrubrik “Programvarutestning” och klickar på det.
  11. Slutresultatet blir en sida som beskriver innebörden av ordet “Programvarutestning
  12. Avsluta testfallet med att gå tillbaka till Selenium IDE och trycka på inspelningsknappen.
  • NÄR?;  Omedelbart efter denna menings slut.

II)  Skapa testfallet enligt testplanen:

III)  Analysera testfallet i Selenium IDE – Testfall fältet (Test Case Pane):

  • Selenese kommandona i Tabell fliken (Table Tab)
    .First test-Tableview
  • HTML koden i Käll fliken (Source Tab)
    .First test-Sourceview

IV)  Spara testfallet i din testkatalog C:\selenium\tests
med meny kommandona Arkiv (File) – Save Test Case eller Save Test Case As i Selenium IDE.  Spara testfallet i filformatet HTML-filer (t.ex. WIKI-SEARCH.html).

V)  Kontrollkör och verifiera testfallet:
Kontrollera att testfallet följer testplanen och
gör eventuella tillägg/ändringar om så krävs.
Öppna upp ett nytt FireFox fönster,
Starta Selenium meny – Verktyg – Selenium IDE:

  • Gå till Selenium IDE Meny List
  • Välj Arkiv – Open
  • Navigera till din testkatalog C:\selenium\tests
  • Öppna testfalls filen ”angivet testfilsnamn”
  • Stäng av inspelning genom att trycka på inspelningsknappen: Record.
  • Starta ditt testfall genom att trycka på Kör (Run):Run
  • Verifiera att testfallet kör igenom de steg som planerats (jmf Selenese kommandona i Table tabben med loggen över vad som verkligen hände),
    .runTC

    samt att slutresutatet är det förmodade (titta i webbläsarfönstret).
    .

    wikipedia
    .

Om ändringar skett i föregående steg, – Gå tillbaka till steg III) och gör om verifieringen.


Du har nu gått igenom Selenium IDE och dess funktionalitet i detalj. Du har även gått igenom grundmetodiken för hur man planerar och sätter upp ett enkelt testfall. Vidare så har du skapat (spelat in) testskriptet i Selenium enligt given testplan.
Du har kontrollerat att allt fungerar som planerat genom att verifiera, spara och slutligen köra testskriptet. Efter körning av testskriptet har du gjort en slutverifiering att skriptet följt given testplan samt att önskat slutresultat uppnåtts.
Du är nu klar för att fortsätta med Kapitel 4 : Att sätta upp och få igång en fungerande testmiljö bestående av Selenium, Java och JUnit.


<TIDIGARE>                            <ÖVERST>                                <NÄSTA>