neljapäev, 29. mai 2014

Automaattestimine - mis see on?

Kõik infotehnoloogiaga tegelevad ettevõtted teavad, et testimine on vajalik, kuid tihti leitakse ka juba töötavas ehk live-süsteemis vigu. Mida siis tehakse valesti? Kas testimiseks kulutatakse liiga vähe aega? Puuduvad oskused testida või ei testita seda, mida vaja? Räägin järgnevalt ühest võimalikust lahendusest, mis võib muuta testimise protsessi oluliselt kiiremaks – nimelt automaattestimisest.

allikas: http://www.wallpele.com/robot-3d-hd-wallpaper/robot-3d-hd-wallpaper/

Mis siis ikkagi on automaattestimine? See on arvuti õpetamine, kuidas mingit infosüsteemi testida. Kirjutatakse valmis koodijupid, mille käivitamisel teeb arvuti läbi tegevused, mida muidu testija peaks käsitsi tegema. Manuaaltestimisest erinebki see selle poolest, et sisaldab endas koodikirjutamist. Testide automatiseerimine on aeganõudev tegevus, kuid tasub ära, kui testimisfaasis on tegevused, mida manuaaltestija peab mitmeid kordi kordama.

Automaattestimise kasutusjuhud

Millistel tingimustel on mõttekas testide automatiseerimist kasutada?

  • Kui tegemist on suure infosüsteemiga, mille käsitsitestimine võtab nii palju aega, et see muutub pudelikaelaks arendusprotsessis.
  • Kui osa süsteemist on juba valmis, kuid arendamine veel käib. Sellisel juhul on regressioonitestide* tegemine väga oluline. Enamasti automatiseeritakse just regressiooniteste.


Millistel tingimustel võiks selle mõtte välistada?

  • Kui testimiseks on väga vähe aega.
  • Kui planeeritud testimisringe on ainult mõni (näiteks üks või kaks).
  • Kui käsil on UAT (vastuvõtutestimise) faas.
  • Kui tegu on väikese süsteemiga, millele ei tule lisaarendusi.

Muidugi on olemas erandeid ja puudub 100% õige variant, kuidas süsteem saaks piisavalt testitud. Piisava testimise all ei mõtle ma täielikku testimist (exhaustive testing). Pidagem silmas, et täielik testimine pole otstarbekas ja on üsna võimatu. See on ajamahukam, kui infosüsteemi arendamine, ja võib isegi öelda, et nn kilplaslik tegevus. Piisava testimise all mõtlen ma seda, et kõik ärinõuded on kontrollitud, täidetud ning ärinõuete järgi arendatu töötab. Automaattestimine on üks võimalus, kuidas süsteemi testimise protsessi kiirendada. Seega aitab see ka etteantud ajapiirangu sees suuremat osa süsteemis olevat funktsionaalsust kontrollida võrreldes ainult käsitsitestimise kasutamisega.

Automatiseeritud testikomplektide haldamine 

Automaattestimist võib võrrelda programmeerimisega, sest selles protsessis kirjutatakse koodi ning kasutatakse erinevaid programme ja platvorme. Samuti on oluline versioonihaldus ehk kirjutatud koodijupid peavad olema korralikult organiseeritud ning loetavad. Harjumuspärane tegevus on ka testikomplektide hooldus, sest valmiskirjutatud skriptid võivad kergelt katki minna. Nagu näha – testide automatiseerimine sisaldab endas palju tööd.

Veel märkuseid

  • Kõiki teste pole mõttekas automatiseerida – alati tuleb mõned osad süsteemist käsitsi läbi testida, kuna masinat ei saa täielikult usaldada.
  • Testide automatiseerimine on kallis.
  • Automatiseerimiseks on väga palju erinevaid vahendeid ning enne automaattestide kirjutamist tuleks enda jaoks selgeks teha, milline neist on parim.
  • Automaattestimise eelduseks on korralik testianalüüs ehk peab olema välja selgitatud, mida automatiseerida. Kindlasti ei saa teha nii, et hakatakse eelneva planeerimiseta lihtsalt mingist süsteemiosast testilugudele automaatteste kirjutama, sest pärast on raske saada ülevaadet, millised osad on kaetud ja mis mitte.
  • OHT: ebarealistlikud ootused – levinuim viga, mille tõttu võib automatiseerimine läbi kukkuda. Sellised on näiteks ootused, et testimine muutub palju odavamaks või et leitakse kõik vead. 


Edulugusid

Tegelikkuses tasub automaattestimine end kuhjaga ära – seda tuleb vaid õiges kohas rakendada. Näiteid edukast automatiseerimisest on mitmeid. Näiteks Dorothy Grahami ja Mark Fewsteri raamatus „Experiences of Test Automation“ on mitmeid lugusid. Üks jutuke ses raamatus Randy Rice’i poolt räägib sellest, kuidas suures Wall Street’i ettevõttes kasutas ta seda võimalust. Nimelt - ühe õnnetu daami tööülesandeks oli iga päev 8 tundi järjest läbida samu testilugusid. Mees leidis, et peaks ressursse targemini ära kasutama ning võttis ühendust testide automatiseerimist pakkuva firmaga, kes automatiseeris kolme päevaga selle 8 tunni töö. Testilugude läbimiseks kulus nüüd daamil igal hommikul vaid 15 minutit ja ta sai kasutada oma aega uute funktsionaalsuste testimiseks.

Pilt: Shutterstock


Eduka automatiseerimise tulemuseks on ajaline ja ka rahaline võit. Sõna „edukas“ on suure kaaluga, sest nagu eelnevalt kirjutasin, on suur oht automatiseerimisest liiga palju oodata. Seda vales kohas kasutades võib see vaid kuluks osutuda.

Kokkuvõtteks

Loodan, et see postitus andis põgusa ülevaate ja arusaamise, millega tegemist on. Kui tekkis küsimusi või tahate hoopis vastu vaielda, ootan teid postitust kommenteerima.


Kristi Paakspuu
ASA Quality Services

*regressioonitestid – igasugused tarkvara testid, mis otsivad muudatuste käigus ilmnenud vigu eelnevalt korrektselt funktsioneerinud koodis. Selle eesmärgiks on leida ootamatuid vigu.

Kasutatud kirjandus:

  • Dorothy Graham, Mark Fewster „Experiences of Test Automation“, 2012



Kommentaare ei ole:

Postita kommentaar