4 Kes on tarkvara testija?

Testimine, eriti tarkvara arenduse kontekstis, võib esmalt kõlada millegi uue või võõrana, kuid tegelikult puutume me vähemal või rohkemal määral kokku testimisega igapäevaselt – juba väga varasest east alates. Selleks, et paremini mõista, mida testimine täpselt endast kujutab, tuleks hetkeks keskenduda selle sõna päritolule. Nimelt pärineb sõna “testimine” inglise keelest – testing – ning otsetõlkes tähendab see katsetamist. Väikeste lastena avastame me maailma ning seda tehes viime alatasa läbi mitmeid katseid, alustades näiteks sellest, kuidas testime erinevate esemete söödavust või vajutame ettejuhtuvatel masinatel või mänguasjadel erinevaid nuppe, et näha, mis juhtub. Lapsi ajendab selliseks tegevuseks uudishimu ja loovus – omadused, mis on omased ka heale testijale tarkvaraarenduse vallas.

Sarnaseks katsetamiseks ja avastamiseks, nagu toimetavad lapsed igapäevaelus, võib pidada ka tarkvara testija rolli tarkvaraarenduse protsessis, kuid antud juhul on tegemist plaanipärase katsetamisega, kus luuakse eelnevalt katsetamisele kindlad tingimused, katsetamise protsess ja eeldatavad tulemused – ehk kokkuvõttes luuakse testlugu – ja katse tulemused pannakse kirja. Näiteks kui soovitakse testida, mis juhtub, kui logida sisse e-Kooli vale parooliga:

  • Tingimus 1: kasutaja ei ole veel sisse logitud
  • Tingimus 2: kasutajal on olemas e-Kooli konto
  • Protsess: kasutaja sisestab õige kasutajanime ja vale parooli ning vajutab sisselogimise nupul.
  • Eeldatav tulemus: sisselogimine ebaõnnestub ja kuvatakse veateade

Ehkki hea programmeerija testib alati ka ise enda koodi, veendumaks enda loodud lahenduste toimimises, on testimiseks sageli arendusprojektides ka eraldi testija, kelle ülesandeks on tagada, et projekti lõpptulemuseks olev tarkvara vastab kliendi ja kasutajate ootustele ning programmeerijate loodud lahendused on loodud analüütiku poolt kirjutatud nõuetele vastavalt. Testija peamiseks eesmärgiks on kvaliteedi tagamine – sageli kasutataksegi tänapäeval testija nimetuse asemel nimetust Quality Assurance specialist ehk kvaliteedi tagamise spetsialist.

 

IT-testija

Nii nagu analüütik, peab ka testija mõistma hästi kliendi äri ning olema võimeline samastuma kasutajatega. Seetõttu leidub ka olukordi, kus analüütik on ühtlasi ka testija rollis. Ehkki peamiseks eesmärgiks on ära hoida kriitilised vead süsteemis ja tagada, et loodud tarkvara vastab kliendi poolt oodatud nõuetele ja kvaliteedile, tuleb ennetada selliste vigade ning probleemide tekkimist, mille vältimise peale teised meeskonnaliikmed ei pruugi mõelda. Selle jaoks on testija puhul oluliseks omaduseks loovus, et ta suudaks leida viise, kuidas arendatud süsteemi katki teha või süsteemis vigu tekitada, kasutades selleks äärmuslikke erandjuhtumeid, millega süsteemi kasutajad võivad kokku puutuda.

Kuigi testija ja analüütiku rolli jaoks on vajalikud mõned ühised omadused, on neil sellest hoolimata erinevad ülesanded. Tuginedes käesolevale ja eelmisele peatükile, lahendage järgmine ülesanne.

 

Tarkvaraarendus ei ole aga ainus valdkond, kus testimine on olulisel kohal. Samamoodi tuleb testida ka valdavalt kõiki tooteid, mida poest võimalik osta, et kindlustada selle nõuete täitmine ning . Keskenduge hetkeks ühele näitele täiesti erinevast valdkonnast ja arutage:

  • Kuidas teie testiksite batuuti ja milliseid omadusi batuudi puhul testiksite?
    • Pidage silmas ka erandjuhtumeid, millega batuudi kasutajad võivad kokku puutuda.

Järgneval pildil on võimalik punastel ringidel vajutades näha näiteid, milliseid nõudeid ja omadusi on võimalik batuudi puhul testida. Kas leidsite täiendavaid omadusi, mida testida?

 

Tarkvara testijate töö ei piirdu aga ainult programmeerijate loodud lahenduste kvaliteedi tagamisega, vaid oluline on ka teiste meeskonnaliikmete – näiteks analüütikute – töö valideerimine paralleelselt programmeeritud lahendusega, sest vead ei pruugi alati seisneda programmeerijate loodud koodis, vaid ka näiteks analüütikute loodud dokumentatsioonis või kasutusjuhendis. Aastal 1999 juhtus õnnetus NASA kosmosesondiga Mars Climate Orbiter, mida olnuks võimalik sel moel vältida. Nimelt kosmosesondi tarkvara luues arvestati selle kasutamisel meetermõõdustikuga, ent NASA lennujuhid sisestasid sondi juhtides inglise mõõtesüsteemi ühikuid (nt jalg, toll) ja sond hävis Marsi atmosfääris.

 

Kosmosesondi trajektooride kujutis
Kosmosesondi Mars Climate Orbiter planeeritud trajektoor (planned trajectory) ja tegelik trajektoor (actual trajectory), mis lõppes hävimisega Marsi atmosfääris.

Tarkvara testijatel on testimiseks hulgaliselt erinevaid viise, ent laias laastus jagunevad need viisid kahe vahel: funktsionaalne testimine ja mittefunktsionaalne testimine. Funktsionaalne testimine keskendub süsteemi funktsionaalsuste (eelmises peatükis kirjeldatud funktsionaalsete nõuete) ehk süsteemi poolt võimaldatavate tegevuste katsetamisele. Selle käigus tuvastatakse näiteks, kas kasutaja saab teha oodatud tegevusi, täita soovitud teksti- ja andmeväljad, vajutada ootuspärastel nuppudel ja kas süsteem toimib peale kasutaja tehtud tegevusi ootuspäraselt. Mittefunktsionaalne testimine seisneb süsteemi omaduste ehk mittefunktsionaalsete nõuete katsetamises. Näiteks on võimalik testida, kas süsteemi kasutatavus on lihtne ja loogiline või kas süsteem toimib piisavalt efektiivselt või ootustele vastavalt, kui seda kasutavad korraga miljon kasutajat või kui süsteemi kasutada erinevates internetibrauserites (nt Google Chrome või Mozilla Firefox).

Sarnasel moel on võimalik jaotada ka teiste toodete testimist. Pöördudes hetkeks tagasi batuudi näite juurde, saame välja tuua ühe näite nii funktsionaalsest kui ka mittefunktsionaalsest testimisest batuudi katsetamise puhul:

  • Batuudi põrgatavus. Kas batuudil hüpates põrkan kõrgemale õhku võrreldes maas hüppamisega?
    • Selle puhul on tegemist funktsionaalse testimisega, sest hüppamine ja kõrgemale põrkamine on batuudi üks esmaseid funktsionaalsuseid ehk üks peamisi kasutaja tegevusi batuudiga.
  • Batuudi vastupidavus, kui sellel on korraga 25 last. Kas batuut peab vastu, kui sellel hüppab korraga 25 last?
    • Siinkohal on tegemist mittefunktsionaalse testimisega, sest testitakse batuudi omadust (ehk vastupidavust), mitte põrkamise funktsionaalsust ennast.

Nüüd aga proovige lahendada sarnane ülesanne tarkvara testimise valdkonnas.

Rühmatöö (funktsionaalne testimine):

  1. Valige rühmaga üks veebileht (näiteks City24 või mõni teine sarnane veebileht, mis sisaldab palju vormivälju)
  2. Pange kirja, milliseid tegevusi kasutaja antud vormil teha saab ehk millised on antud veebilehe funktsionaalsused. Näiteks City24 puhul: sisselogimine, kinnisvara otsimine (sh alam-funktsionaalsused nagu aadressi valik, hinnavahemiku määramine).
  3. Katsetage kirja pandud funktsionaalsuseid ja alam-funktsionaalsuseid ja laske kujutlusvõimel lennata. Näiteks proovige sisestada numbriväljadele tähemärke, tekstiväljadele erimärke (nt € ja #)
  4. Pange enne iga katsetust kirja, millist funktsionaalsust katsetate ja mida andmeväljadele sisestate.
  5. Pange kirja, millised tegevused õnnestusid ja millised mitte.
  6. Arutage – kas vormi funktsionaalsustel leidub vigu?

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Tarkvara analüüs ja testimine on loodud Tallinna Ülikool, HITSA poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut