Modellbaserad Test del 1: Hitta felen tidigt!
Bästa sättet att lära sig saker på är oftast att prova på själv och jag blev nyfiken efter att ha läst om Modell-baserad test i en tidigare artikel av Kristian Karl här på Test Zonen att göra ett försök själv. För enkelhetens skull valde jag Test Zonens Bli medlem sidor då dom flesta läsarna av denna artikel med stor sannolikhet redan “testat” dessa sidor.
1: Hemsidan På denna sida finns Bli medlem länken som tar en till registreringssidan. |
2: Registreringssidan Här matas valt användarnamn, lösenord och ett gitligt captcha in. Du kan även få captchan uppläst och mer captcha info. |
3: Recaptchasidan På denna externa sida finns mer captcha info. |
4: Logga-in sidan Inmatning av giltigt kontoinfo sker på denna sida. Val av auto-login, registrering och hjälp med glömt lösenord kan göras här också. |
5: Glömt lösenord sidan Här matar man in sin e-post adress och får ett nytt lösenord utskickat. Här finns även länk till logga-in och registrerings sidorna. |
6: Adminsidan Efter inloggning kommer man till ‘Panel’ sidan vilken är en adminsida för Test Zonens medlemmar. |
Steg för steg – skapa en modell
1. Börja med att i yED skapa en tillståndsruta(vertex) för varje sida som finns i Bli medlem sidorna.
2. Namnge och dra en handlingspil(edge) för varje handling som får en att gå ifrån ett tillstånd till ett annat för alla sidorna (hiarkisk vy vald i yED).
3. Avsluta med att verifiera att modellen inte innehåller felaktigheter såsom:
– Brutna handlingspilar
– Mellanslag i edge och vertex namnen
– Loopar som gör att det inte går att få 100% testtäckning av modellen.
Verifieringen sker genom att köra igenom modellen med hjälp av Graphwalker i offline-läge, 100% traversering(EDGE_COVERAGE:100), kortaste vägen (A_STAR).
Använd följande kommandorad:
java -jar graphwalker-2.5.10-SNAPSHOT-standalone.jar offline -f TestZonen_Registrering.graphml -g A_STAR -s EDGE_COVERAGE:100
resultatet blir följande lista på 65 teststeg genom modellen:
e_Init
v_TestZonen
e_TZ >Registrera
v_Registrera
e_Registrera >Login
v_LoggaIn
e_LoggaInFel
v_LoggaIn
e_LoggaIn >Registrera
v_Registrera
e_Registrera >GL
v_GlömtLösenord
e_GL >LoggaIn
v_LoggaIn
e_LoggaInOK
v_AdminPanel
e_Admin >LoggaIn
v_LoggaIn
e_LoggaInFel >GL
v_GlömtLösenord
e_GL >Registrera
v_Registrera
e_CaptchaInfo
v_ReCaptchaInfo
e_Captcha >Registrera
v_Registrera
e_RegistreraFel
v_Registrera
e_CaptchaLjud
v_Registrera
e_CaptchaNy
v_Registrera
e_RegistreraOK
v_LoggaIn
e_LoggaIn >GL
v_GlömtLösenord
e_GLFel
v_GlömtLösenord
e_GL >TZ
v_TestZonen
e_TZ >Registrera
v_Registrera
e_Registrera >TZ
v_TestZonen
e_TZ >Registrera
v_Registrera
e_RegistreraLOGO >TZ
v_TestZonen
e_TZ >Registrera
v_Registrera
e_Registrera >GL
v_GlömtLösenord
e_GLLOGO >TZ
v_TestZonen
e_TZ >Registrera
v_Registrera
e_RegistreraOK
v_LoggaIn
e_LoggaInLOGO >TZ
v_TestZonen
e_TZ >Registrera
v_Registrera
e_RegistreraOK
v_LoggaIn
e_LoggaIn >TZ
v_TestZonen
Var är felen?
Titeln på denna artikel “utlovar” att vi skall hitta eventuella fel tidigt men vi har ännu inte automatiserat modellen? När vi skapade modellen använde vi utforskande testning på Bli medlem sidorna för att kunna göra en modell av all funktionalitet och följande tio fel hittades innan vi ens har hunnit köra våra automatiserade tester:
Fel #1
Fel #3-6 (finns tre till ställen som saknar eller har konstig kommentar i infoboxen)
Nu är det din tur
Jag hoppas denna artikel inspirerar och att om du är intresserad av modellbaserad testning men inte börjat ännu gör ett försök själv det är inte svårt och vem vet du kanske hittar felen tidigt!
Klockrent!!! Tack för en väldigt tydlig och rolig artikel!
Denna artikel visar styrkan med tidiga utforskandetester. Tidiga utforskande tester kan man utföra oavsätt om man tänker testa modellbaserat eller inte. Styrkan med MBT tycker jag bland annat är att man även hittar mycket logiska fel tidigt. Ofta redan när man modellerar. Även ett par sådanna bör gå att hitta på TestZonen.
Det var en tydlig och rättfram artikel. Lite funderinger som dyker upp bara.
Artikeln passar bättre som en text om utforskande test, för det är väl egentligen det den handlar om? Du börjar testa med ett klart syfte att utforska funktionen för att skapa dig en bättre modell, bättre som i mer detaljerad och mer komplett, av den. Under tiden du utforskar och bygger på din modell lär du dig mer om den och skapar nya testfall, vilket är klart tydligt i bilderna. Slutprodukten är ett gäng felrapporter, en större förståelse för funktionen och en modell att skapa fler testfall ifrån.
Så du använder alltså verktygsstödd modellbaserad testdesign för att generera fler testfall i din utforskande teststil inför nästa testsession (mer om den i del 2?).
Frågan jag ofta ställer mig när jag läser liknande utläggningar om modellbaserad test är om man egentligen inte är ute efter modellbaserad testdesign. I det här fallet är jag mer tveksam eftersom du börjar testa med en färdig modell som du först efter att ha byggt ut använder för att designa nya testfall. I grunden är all testning modellbaserad, vilket du ju också tydligt klargör i första stycket där en förenklad modell av funktionen presenteras.
Min tolkning av att modellbaserad testdesign kommer hjälpa dig att hitta felen tidigt skiljer sig lite ifrån hur artikeln beskriver det. Det beror såklart lite på hur man definierar tidigt. I det här fallet är det knappast tidigt i funktionens livscykel utan snarare handlar det om tidigt i testerna, så fort du börjar testa. Om man istället tänker sig att man börjar bygga sin modell redan från specifikationer, vilka de än må vara, skulle man kunna tänka sig att man hittar fel i hur systemet / funktionen är utformat(d) genom att felaktiga och tveksamma flöden blir tydliga. Här kan man börja prata om att hitta fel tidigt, redan innan funktionen är byggd.
Tackar för feedbacken jag instämmer i din kommentar vore instressant att skriva något om att hitta felen tidigt tidigt…