Sikuli – glöm allt du lärt dig om automatiserad GUI testning

sikuli

Bild 1. Guds öga.

 

Lisa Ryrholm har, som examens jobb på Chalmers, arbetat i ett skarpt projekt i ett stort svenskt företag med ett nytt verktyg som jag tror många testare borde titta närmare på. Kontakta gärna henne, ifall du vill veta mer.

Jag blev så inspirerad hennes presentation så jag beslöt skriva denna  artikel i testzonen.

Första gången jag själv kom i kontakt med automatiserad GUI testning, för över tio år sen, fick jag alltid rådet att undvika navigera genom att försöka leta efter bitmaps i t.ex. ikoner bilder och knappar.  All pixel-navigering i  x- och y-koordinat-led var bannlyst där jag då jobbade. Det var nära nog en anledning till uppsägning från företaget om man försökte!

Sikuli, som betyder “Guds öga” , bild 1, på ett mexikanskt indianspråk, lär mig och dig att tänka om.

Sikuli gör just det vi tidigare fick rådet att inte göra, dvs. navigerar visuellt. Sikuli navigerar GUI genom avancerade bild-igenkännings-algoritmer, genom att “läsa av” skärmen grafiskt.

Ett paradigm skifte inom automatiserad GUI testning!

Därmed behöver vare sig testaren eller Sikuli förstå uppbyggnaden och interna mekanismer i ramverket som implementerade GUIT, eller fönsterhanteringssystemet.  Som oftast (alltid?) är fallet med andra GUI  Verktyg som automatiserar GUI, som t.ex. navigerar genom APIer som exponeras av Windows GUI system, HTML-  och Dokument Objekt modell .

Det spelar sålunda ingen roll om GUI är gjort i Gnome, Win32, Perl TK, MFC, HTML eller Java. Sikuli klarar alla.

 

Exempel med kalkylatorn

Enklast att förstå hur man skapar ett testskript är att följa dokumentation och inlärningsvideor på sikuli.org, men jag visar ändå grunderna;

I mitt exempel automatiserar vi kalkylatorn (calc.exe) i Microsoft Windows.

kalkulatorn

Bild 2. SUT – Kalkylatorn

 

I Sikuli IDE klickar man på en av de musrörelser, se bild 3, som ska utföras.

Skärmen blir då utgråad och man får möjligheten att selektera en rektangel på skärmen, den skärmbildssektion som musrörelsen ska arbeta på.

Selektionen utförs ungefär på samma sätt som med Skärm-Klipp-Verktyget ( “Snippit”) i Windows 7.

Ett test skript byggs sålunda upp alt eftersom med olika click() musrörelser.

 

När man sedan “Kör” scriptet visas det i loggen, se bild 3, vilken rad felet uppstod på.

Sikuli IDE

Bild 3. Sikuli IDE med Skript  som “körs”. Det visar “fel” på rad sju då någon bild(region) med svaret med texten”0″,  noll,  inte hittas. Vilket är förväntat  eftersom resultatet inte blir noll när man dividerar ett med noll.

Skriptspråket är Phyton, så vill man utföra andra åtgärder vid felnavigering, är det bara att lägga in ett try/except block och anropa kod(-bibliotek) som utför andra åtgärder.

Testprojektet och scripts kan givetvis sparas och senare exekveras på kommandoraden, för t.ex. driva ett bibliotek av Sikuli GUI tester via annat testramverk, eller i kombination med andra tex. Selenium.

Sikuli har ger möjligheten att leta bilder (bild-igenkänings-algoritmer) och text (OCR-algoritmer).

Man kan också skapa regioner som gör att den endast letar i en viss del av skärmen efter en (radio-)knapp. På så sätt har den inte lika många GUI objekt att välja på.

 

Summering

Fördelar

+ Ingen kunskap behövs om det fönster hanterings ramverk som ska testas

+ gratis

+ opensource – skrivet i Java – utvecklat av MIT Universitetet i USA.

+ mer “kundlik/människolik” navigering av GUI än t.ex. att navigera via Windows/Dokument Objekt Modell.

+ Verktyget är översatt till Svenska, även fel-loggen visas på Svenska (valbart)

+ Phyton script – utbyggnadsbart, anpassningsbart modernt skriptspråk.

 

Nackdelar

– ingen inspelningsläge, s.k. “record”, funktionalitet, dvs. manuell kodning behövs för att få ett körbart skript.

– klarar inte så bra av att navigera till knappar /ikoner /bilder som visuellt “ser” likadana ut:t.ex.:
två knappar med nästan samma nyanser av samma färg.

– Så kallade genomskinliga eller “Se-igenom-menyer” vanliga i nyare operativsystem (typ Windows 7) kan vara svåra att navigera.

– lokaliserad och internationaliserade knapp-text kan bli svårare automatisera

– Många likadana knappar / check-radio-boxar som ser likadana kan vara svåra att automatisera

– opensource – dvs. det finns inget serviceavtal med tidramar när incidenter ska svaras eller lösas inom, även om utvecklarna verkar vara måna om att svara inom rimlig tid.

– ganska nytt verktyg, typ max 2 år, ung användarbas

– Många av de negativa sakerna nämnda ovan plus många fler åtgärdas och behandlas i ett ramverk för att ge stabilare och mer deterministiska testresultat. Detta ramverk har Lisa Ryrholm tagit fram i hennes examensjobb. I hennes ramverket finns många metoder som gör Sikuli mer stabilt både när det gäller att hitta saker men också att felhantera. Är man intresserad, ta gärna kontakt med henne.

 

Referenser:

www.Sikuli.org – Allt om Sikuli – download, exempel, inlärnings-videos m.m.

Lisa Ryrholm, lisa.ryrholm at squeed.com

About Thomas Klevmar

Thomas Klevmar Testexpert hos OpenText/StreamServe Thomas började arbeta med kvalitetsäkring samt test år 2000 och är specialiserad på prestandatestning och testverktyg. Han har arbetat som testare, testledare och testautomatiserare. Thomas har en bakgrund inom systemutveckling och testning hos bl.a. Microsoft i England och USA.