Planera användargränssnittstesterna
I det här avsnittet följer du med Amita och Andy när de pratar om hur du införlivar Selenium UI-tester i versionspipelinen. De börjar med att gå igenom de tester som Amita normalt gör manuellt. Sedan mappar de Amitas manuella steg till automatiserade testfall.
Köra användargränssnittstester manuellt
Amita väntar på att Andy ska dyka upp. Andy kommer att hjälpa Amita att skriva ett användargränssnittstest som läggs till i testfasen i pipelinen. När han anländer ser Andy Amita klottra i sin anteckningsbok, korsa ut något, muttra och sedan riva ut sidan.
Andy: Hej. Du ser inte glad ut.
Amita: Jag är inte glad. Jag försöker ta reda på hur man skriver ett automatiserat test, men jag vet inte var jag ska börja. Jag kodar inte. Det känns som om jag är föråldrad.
Jag tror inte att det är så illa. För det första behöver vi alltid någon som har användarens perspektiv i åtanke. Det finns inget sätt att automatisera det. För en annan börjar ingen veta hur man automatiserar tester. Vi var alla nybörjare någon gång. Förhoppningsvis kan jag göra inlärningsprocessen lite enklare.
Jag tror att det bästa sättet att börja är att automatisera något du regelbundet gör manuellt. Välj ett användargränssnittstest. Sedan går vi igenom det och skriver ned stegen. Nu ska vi ta reda på hur du automatiserar dessa steg. Vilket test ska vi välja?
Amita tar ett djupt andetag.
Amita: Nu ska vi automatisera testerna för modala fönster. När jag klickar på vissa saker, till exempel knappen Ladda ned spel , vill jag kontrollera att rätt modal fönster visas. När jag sedan klickar bort från det modala fönstret vill jag kontrollera att det modala fönstret försvinner och att huvudfönstret är aktivt igen.
Andy: Det låter som ett bra ställe att börja på. Du kör testet. Jag skriver ner proceduren.
Amita öppnar en bärbar Windows-dator och lanserar Google Chrome. Hon går till webbappen och verifierar att startsidan öppnas.
Dricks
Om du vill följa med i Amitas manuella tester kan du köra en lokal kopia av Space Game-webbplatsen. I Visual Studio Code-terminalen kör du följande kommandon och klickar sedan på länken som ser ut som Now listening on: http://localhost:5000
.
git fetch upstream selenium
git checkout -B selenium upstream/selenium
dotnet build --configuration Release
dotnet run --configuration Release --no-build --project Tailspin.SpaceGame.Web
Andy: OK. Vad ska du kontrollera härnäst?
Amita: Jag kontrollerar att när jag klickar på knappen Ladda ned spel visas rätt modal fönster.
Amita klickar på knappen Ladda ned spel . Det modala fönstret visas.
Andy: Bra. Vilka modala fönster kontrollerar du härnäst?
Amita: Nästa jag kontrollera de fyra spel skärmar. Efter det klickar jag på den bästa spelaren på rankningslistan. Jag kontrollerar att spelarens profil visas.
Amita klickar på var och en av de fyra miniatyrbilderna för att visa exempelspelskärmarna.
Nästa Amita klickar på den bästa spelaren på rankningslistan. Spelarens profil visas.
Amita: Det omfattar modala fönstertester. Jag kör dessa tester på Windows eftersom det är vad de flesta spelare använder för att besöka vår webbplats. Jag kör testerna på Chrome, och när jag har tid kör jag dem också på Firefox och Microsoft Edge.
Om jag hade tid skulle jag köra alla tester igen på macOS och Linux, bara för att säkerställa att vi är kompatibla med alla operativsystem som spelarna använder för att besöka webbplatsen. Men jag måste köra många andra tester.
Vad är positionerare i Selenium?
I ett Selenium-test väljer en positionerare ett HTML-element från DOM (Dokumentobjektmodell) att agera på. Tänk på DOM som en träd- eller grafrepresentation av ett HTML-dokument. Varje nod i DOM representerar en del av dokumentet.
I ett Selenium-test kan du hitta ett HTML-element efter dess:
id
attribut.name
attribut.- XPath-uttryck.
- Länka text eller partiell länktext.
- Taggnamn, till exempel
body
ellerh1
. - CSS-klassnamn.
- CSS-väljare.
Vilken positionerare du använder beror på hur HTML-koden skrivs och vilka typer av frågor du vill utföra.
I ett HTML-dokument id
anger attributet en unik identifierare för ett HTML-element. Här använder id
du attributet för att fråga efter element på sidan eftersom varje identifierare måste vara unik. Detta gör id
attributet till ett av de enklaste sätten att fråga efter element i ett Selenium-test.
Hämta ID:t för varje HTML-element
Här följer du med Amita och Andy när de samlar in ID:t för varje knapp som Amita klickar på och för varje resulterande modalfönster.
Andy: Jag kan se varför dessa tester tar så lång tid och kan vara så frustrerande. Du kommer att älska att automatisera dem. Jag lovar.
Här är vad vi ska göra. Vi hämtar id
attributet för varje knapp du klickar på och för det modala fönstret som visas. De automatiserade tester som vi skriver kan använda dessa uttryck för att veta vilka knappar som ska klickas och vilka modala fönster som ska förväntas.
Vi börjar med att hämta id
attributet för knappen Ladda ned spel .
Kommentar
Du kan följa de här stegen om du vill eller bara läsa med. Nästa avsnitt innehåller alla id
attribut som du behöver när du kör de automatiserade testerna.
Gå till startsidan för Space Game i Google Chrome.
Högerklicka på knappen Ladda ned spel och välj sedan Inspektera.
Fönstret Utvecklarverktyg öppnas. HTML-koden för knappen Ladda ned spel är markerad.
Granska den markerade koden och notera attributet
id
. Kopiera förid
senare.Välj knappen Ladda ned spel. Upprepa sedan steg 2 och 3 för att hämta
id
attributet för det modala fönstret som visas.Upprepa processen för de fyra spelskärmarna och den bästa spelaren på rankningslistan.
Amita öppnar Microsoft Word och lägger till en tabell. Tabellen innehåller id
attributet för varje länk och id
attributet för motsvarande modalfönster. Amita-poster för att hålla tabellen grundläggande:
- Knappen Ladda ned spel .
- Bara en av spelskärmarna.
- Den bästa spelaren på rankningslistan.
Så här ser Amitas tabell ut:
Funktion | Länk id |
Modala id |
---|---|---|
Ladda ned spelknapp | download-btn |
pretend-modal |
Första spelskärmen | screen-01 |
screen-modal |
Topplistespelare | profile-1 |
profile-modal-1 |
Planera de automatiserade testerna
Amita: OK. Vi har attributet id
för varje knapp jag klickar på. Vi har också det resulterande modalfönstret. Vad händer härnäst?
Andy: Jag tror att vi är redo att skriva våra tester. Så här gör vi:
- Skapa ett NUnit-projekt som innehåller Selenium. Projektet lagras i katalogen tillsammans med appens källkod.
- Skriv ett testfall som använder automatisering för att klicka på den angivna länken. Testfallet verifierar att det förväntade modala fönstret visas.
- Använd attributet
id
som vi sparade för att ange parametrarna till testfallsmetoden. Den här uppgiften skapar en sekvens eller serie med tester. - Konfigurera testerna så att de körs på Chrome, Firefox och Microsoft Edge. Den här uppgiften skapar en matris med tester.
- Kör testerna och titta på när varje webbläsare kommer upp automatiskt.
- Se hur Selenium automatiskt går igenom serien med tester för varje webbläsare.
- Kontrollera att alla tester har godkänts i konsolfönstret.
Amita: Det ska bli spännande att se hur snabbt testerna körs. Kan vi prova testerna nu?
Andy: Absolut. Låt oss gå över till min bärbara dator. Jag har appkoden klar.