Min första kurs

Jag har precis lagt upp min första kurs här på Crisp – Testning av webbapplikationer med Selenium WebDriver. I detta blogginlägg tänkte jag förklara lite mer ingående vad kursen är tänkt att lära ut. Mina kolleger har också kommit med värdefull feedback och frågor som säkert kan dyka upp igen.

Lika bra att ta det lite informellt på bloggen:

Q: Varför testa mot webblagret? Ska man inte lägga krut på enhetstester och integrationstester?
A: Man ska i högsta grad använda enhetstester för att driva sin kodutveckling, och integrationstester på API-nivå bör man också ha i de flesta applikationer, men det finns situationer där webbtester är antingen den bästa, eller den enda vägen framåt.

• Ett scenario är legacy-spagetti-systemet, som vi upplever har skrivits med antitestbarhetstekniker som globala tillstånd, beroenden (coupling) inte av denna värden, monstermetoder och jobbiga temporala invarianter. Det kan dröja många månader innan man får sådana system under test, och då kan det vara lättare att gå genom webblagret.
• Ett annat fall är smoke-test eller test av kritiska delar av applikationer. Man sover ganska gott om nätterna om man vet att man alltid automatiskt kan testa inloggning i applikationen – ett test som säger om den kör korrekt, och ett antal kritiska användningsfall eller vägar genom applikationen; ofta och automatiskt.
• Ett system är inte summan av alla ingående komponenter. Tester end-to-end, som test genom webbgränssnittet faktiskt är, visar att allting hänger ihop och fungerar tillsammans.

Mike Cohns testpyramid brukar figurera i liknande diskussioner, och personligen är jag av åsikten att den bäst realiseras om toppen, d v s UI-testerna, består av ett 20- till 200-tal tester som klickar sig igenom happy path för alla viktiga funktioner (om det rör sig om en webbapplikation).

Q: Är inte tester mot ett webbgränssnitt sköra?
A: Ett av kursens absoluta huvudsyften är att lära ut hur man strukturerar och skriver testerna så att de inte blir sköra. Man kan inte trolla. Ändras webbsidan dramatiskt kommer testerna behöva justering, dock förespråkar jag en tre- möjligen fyrlagersmodell för testkoden, vilket gör att själva testerna endast ändras om affärskraven ändras, medan HTML-ändringar endast drabbar ett lager – på ett kontrollerat sätt.

Q: Är inte tester mot ett webbgränssnitt svåra att underhålla?
A: Nej, inte om man skiktar de på det sätt som beskrivs i kursen.

Q: Varför en dag?
A: Denna kurs är en grundkurs. Den syftar främst till att lära ut grunderna och hur man skriver en robust och underhållsbar testsvit. Om intresse finns, har jag redan en plan för en fortsättningskurs. Denna kommer att behandla mer avancerade ämnen som Javascript, Ajax och asynkrona applikationer, prestanda, samt mer komplex testinfrastuktur. Fler förslag är välkomna!

Q: Varför står det ingenting om Cucumber, FitNesse, eller liknande?
A: Huruvida man kör sitt webbtest genom en main-metod, en test-metod, eller ett ramverk för BDD eller ATDD har inte jättestor inverkan på själva testets implementation. Dessa ramverk utgör det översta lagret i en testinfrastruktur och det är oftast lätt att byta mellan dem ur programmerarens perspektiv. Sedan kan ju ett av dem vara det bästa för just din organisation.

Q: Hur genomförs laborationsmomenten?
A: Det kommer att finnas en skräddarsydd webbapplikation, som är skriven på ett sådant sätt att den utmanar inom de områden som kursen täcker.

Det var nog allt jag kunde komma på. Hoppas att vi ses i november!


Summary in English:
I’m giving a one-day course called ”Testing web applications using Selenium WebDriver”. The course is given in Swedish and this post offers some clarifications and comments that couldn’t be squeezed into the course description.

One response on “Min första kurs

Leave a Reply to Mats Henricson Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.