<img height="1" width="1" src="https://www.facebook.com/tr?id=1272750026111903&amp;ev=PageView &amp;noscript=1">

3 steg til smartere tester!

Shomaila Kausar

Shomaila Kausar | 23. mai 2019

Det siste året har vi blitt pepret med at alt er så mye smartere enn før. Nå skal også testing bli utført smartere. Vi må ikke la oss lure av begrepene her. For eksempel se for deg at du kan velge mellom to forskjellige flasker med vann, den ene flasken inneholder "smartere" vann som er tappet i England mens den andre flasken inneholder vann som er tappet fra en kilde ved Imsdalen. Hvis behovet ditt bare er å drikke vann for å slukke tørsten, vel da hadde jeg valgt flasken med lokalt vann! Du gjør altså en vurdering av ditt behov og sjekker hva du egentlig trenger.

smartwater

Hva er smart test?

Før jeg begynner å sette opp hvordan man kan lage en smartere test er det på sin plass å få opp en definisjon. Her er min:

En smart test, tester en funksjon på en ny måte ved hver testkjøring. Den tester beregninger, "gjør en vurdering", og fortsetter testingen avhengig av hva resultatet av vilkårlige input ble.

La oss si at du har en enhetstest som får inn to faste inputverdier og tester en metode med disse. I testen sjekker du opp resultatet av metoden mot en gitt fasit. Er testen smart? Jeg vil ikke si det. Hvis vi flytter oss til nivået over, dvs integrasjonstest. En test som går ut på å teste om integrasjonen mellom system A og system B fungerer, kan heller ikke defineres som en smart test. For at testene skal kunne anses å være smarte, måtte disse to testene vært laget slik at de testet funksjonen på en ny måte hver gang.

Level up…

Kravet til automatiske tester på enhets- og integrasjonsnivå har vært begrenset til å teste funksjonalitet og målt dette ved hjelp av code coverage. Code coverage måler opp hvor mye av koden din som er dekket med tester. Dette vil ikke være tilstrekkelig fremover.

Skal automatiseringen være nyttig på lang sikt og overleve, holder det ikke lenger med at du lager en positiv og en negativ test knyttet til en del av funksjonaliteten. Testen må være vedlikeholdbar, kostnadseffektiv og ikke minst må den være smart.

Ta også en titt på: Bedre, raskere og billigere testing

Med stadig smartere systemer må også testene tas til neste nivå. Under følger tre steg for hvordan du "videreutvikler" en automatisk test til å bli en smart automatisk test.

Steg 1: TDT - Testdrevet testing

Jeg har tidligere skrevet om hvordan vi kan se på systemet under test som en labyrint. De automatiske testene kan illustreres som veier ut av denne labyrinten eller områder i labyrinten som er godt dekket. Dagens automatiske tester mottar som regel et sett med forhåndsbestemte input-verdier. Dette gir oss en forutsigbarhet som har vært nødvendig da spesielt automatisert test på GUI nivå er noe man ikke har hatt mye erfaring med.

Bildet under illustrerer dagens enhetstester og automatiske GUI tester:

System med dagens tester enhetstester og automatiske GUI tester

Hvis vi i våre automatiske tester starter med å bytte ut forhåndsbestemte verdier med et variert sett av input-verdier, kan områdene som er godt dekket i labyrinten utvides ganske raskt. Med et variert sett av input-verdier vil man få forskjellige utfall. Men for at den automatiske testen vår skal komme i mål, blir vi nødt til å utvide testen slik at den kan takle ulike utfall. Denne problemstillingen løses for eksempel ved å legge inn gode gammeldags "if-else", for eller while-løkker i testscriptet, som sørger for at testen "tvinges" i mål.

Les også: Automatiske tester er viktig - gode krav er en nødvendighet

Mange vil si at dette ikke er mulig, eller at det er for tidkrevende å lage. Dette er fullt mulig. Produksjon av slike tester har en kostnad, men kostnaden det tar å lage slike tester, spares raskt inn ved redusert vedlikeholdskostnad og mindre behov for manuell test.

Steg 2: Bruk smartere data

Vi har ofte et behov for å teste med en del sammensatte verdier. Et enkelt eksempel kan være at du i en automatisk test skal legge inn gateadresse og by. Her kan man ikke legge inn tilfeldige verdier for kombinasjonen gateadresse og by. Dette kan løses veldig enkelt ved å gi input-verdier som to sammensatte verdier til testen, dvs. gateadresse og dens tilhørende by. Inputverdiene, også kalt testdataene, har store konsekvenser for hvordan testene blir utført. Sett derfor av noe tid til produksjon av gode og smartere testdata.

Steg 3: Bruk smartere verktøy

Enkelte av verktøyene som brukes for å lage blant annet GUI-tester, markedsføres med at de nå har innebygd AI i verktøyet. Bruk denne funksjonaliteten allerede i dag. For eksempel kan dette benyttes under test av applikasjoner hvor man må håndtere forskjellige bilder eller farger som resultat. Her kan innebygd OCR/AI i enkelte av testautomatiserings verktøyene benyttes. Det anbefales derfor at man setter av noe tid til å velge riktig testautomatiseringsverktøy og vurdere om verktøyet dekker de behovene man har for å få til automatiske tester i nærmeste fremtid.

Tips til mer lesning: 4 tips til hvordan du kan effektivisere testingen

En rekke testverktøy er nå blitt så smarte at man ikke lenger trenger å skrive om eller oppdatere testene manuelt. Stopper testen på grunn av en endring i brukergrensesnittet knyttet til for eksempel en navneendring på et felt, får man opp en knapp som sier at testen kan fikses av verktøyet selv med "Intelligent fix". Fantastisk funksjonalitet!!

På bildet under kan du se et utklipp fra TestComplete med forslag om rettelse:

Utklipp fra testcomplete med forslag om rettelse

 

Til slutt…

Når testverktøyene blir smartere så er vi nødt til å utvide horisonten og tørre mer. Mulighetene er utallige, og mange vil dermed tenke at test av et system blir et lite system i seg selv. Kombiner automatiske tester med maskinlæring, feks lære maskinen å kjenne igjen vise typer knapper eller menyer. Neste generasjons automatiske tester vil ikke ta hensyn til den bakenforliggende koden som verktøyene idag benytter som grunnlag for å lage tester. De vil bli skikkelig smarte..

Målet med en automatisk test bør være å kunne lage den litt smartere enn den forrige…

Våre premium konsulenter har erfaring med bruk av AI og testverktøy i prosjekter hvor dette blant annet kan utnyttes for å teste bildekvalitet i forbindelse med installasjon av nye strømmålere eller andre prosjekter hvor man for eksempel skal teste logiske kontroller i en web applikasjon. Ønsker du å komme i gang med smartere testing kan vi i Systek hjelpe deg og din organisasjon.

Hvis du er interessert i å lese mer om test kan du også lese om "Hvorfor testautomatisering ikke bare er tut og kjør!"

 

Jobber du med testing?  Se våre ledige stillinger

Del på sosiale medier: