teisipäev, 4. jaanuar 2011

Tarkvara testimisest ja testijatest Eestis

Eestit tuntakse paljus kui „e-riiki“ ning innovatiivsete tehnoloogiliste, sh IT lahenduste väljatöötajat ning juurutajat. Sealjuures on kindlasti oluline pöörata tähelepanu ka kvaliteedile ning võib öelda, et ka selles vallas on astutud olulisi edusamme. Tõsi, ka veel täna jõuab meediasse uudiseid vigasest tarkvarast ning ilmselt on üheks põhjuseks vähene testimine – nii funktsionaalsete kui ka näiteks jõudlusega seotud omaduste osas. Seega arenemisruumi veel jätkub, kuid mõned aastad tagasi ei olnud väga paljudes arendusfirmades oma testijaid, testimismeeskonnast rääkimata. Testija rolli täitsid muude tegevuste kõrvalt nii analüütikud, projektijuhid kui arendajad ise. Selge, et seetõttu testimisega piisava põhjalikkusega tegeleda ei suudetud.

Teerajajad
Siiski on igal alal olemas oma teerajajad ning sama kehtib ka tarkvara testimise kohta. Juba 2006. aastal veeretasid teemast huvitatud professionaalid mõtet luua organisatsioon, mis seisaks testimisalase teabe jagamise ning oma ala asjatundjate kokkutoomise eest. Mõttest reaalsete tegudegi jõuti alles 2008. aasta, mil sündis Eesti Testijate Liit (ETL) . ETL on eraisikutest koosnev professionaalide ühing, millesse võivad kuuluda kõik, kellel vähegi huvi testimise vastu on. Hetkel on meie ridades 42 liiget, nende hulgas nii ettevõtete tipp- ja keskastmejuhte kui ka spetsialiste. See fakt räägib kõnekalt, et testimine ja laiemalt võetuna tarkvara kvaliteet puudutab lähedalt kõiki, kes tarkvaraarendusega kokku puutuvad.

ETLi missiooniks on teadvustada testimise kui distsipliini olemust ning aidata kaasa erialase oskusteabe levitamisele ja kompetentside arendamisele. Kuidas ja kelle jaoks me seda teeme? Tahame olla kasulikud nii oma liikmetele kui ka (majandus)keskkonnale üldisemalt. Liikmetele tahame pakkuda võimalust vahetada ametiõdede-vendadega infot ning seega parandada erialase oskusteabe kättesaadavust. Korraldame perioodilisi seminare, kus ajakohastel teemadel võtavad sõna nii meie endi liikmed kui ka külalisesinejad, samuti aitame „maale tuua“ koolitusi.

Kaudselt mõjub ETLi tegevus kasulikult ka tööandjatele, sest tänu testimisalaste kompetentside parematele arendamise võimalustele on turul ka paremate oskustega töötajad. Tegevuses kompetentside arendamisel oleme jõudnud selleni, et ülikoolid on oma õppekavasid täiendanud: Eesti Infotehnoloogia Kolledžis on 2009. aastast on võimalik valikainena läbida tarkvara testimise aluseid tutvustavat õppeainet, Tallinna Tehnikaülikooli Informaatika magistriõppe kavas on testimise-alane aine aga kohustuslik. Juba traditsiooniks on saanud ka iga-aastane testimise intensiivkursus Tartu Ülikoolis.

Kuidas testijaid testitakse?
Üks väga tähtis osa kompetentside arendamisel on ka sertifitseerimine – see tähendab, et sõltumatu osapool kinnitab kellegi vastavust mingitele nõuetele, näiteks ülikoolitunnistus märgib, et inimene on läbinud mingi kindla õppekava. Testijate sertifitseerimine toimub samadel alustel. Eesti Testijate Liit on lisaks muudele tegevustele alates 2008. aastast ka International Software Testing Qualifications Board’i (ISTQB) esindaja Eestis. ISTQB on rahvusvaheliselt kõige tuntum testijate kompetentside arendamise eest seisev organisatsioon. ETL pakub võimalust testijatel end sertifitseerida ISTQB õppekavade järgi, käesoleval hetkel on võimalik sooritada ainult ISTQB Certified Tester Foundation Level eksamit, ehk kõige madalamat taset. ISTQB sertifitseerimisskeemi kuuluvad veel kesktase, mis jaguneb testijuhi, testianalüütiku ning tehnilise testianalüütiku spetsialiseerumiseks, ning ekspert-tase, millel on plaanis testiprotsesside parendamise, testijuhtimise, testide automatiseerimise ning turvatestimise suunad. Ekspert-taseme õppekavad on käesoleva hetke seisuga veel beeta-seisundis või väljatöötamisel.

ISTQB Certified Tester Foundation Level sertifikaat on muutunud Eesti testimismaastikul de facto standardiks, kuna annab üsna hea ülevaate kõigist testimisega seotud aspektidest ning ühtlasi võimaldab ühtlustada ka kasutatavat sõnavara. Kui testija organisatsioonist A räägib näiteks testiplaanist, siis testija organisatsioonist B saab aru, mida selle all mõeldakse ning väheneb võimalus möödarääkimisteks. Testijate algtaseme sertifikaat on osutunud seetõttu küllalt populaarseks ka inimeste seas, kes testijana ei tööta, küll aga puutuvad testijate tööga kokku – analüütikud, projektijuhid, arendajad. See on ka igati õigustatud, kuna ka testijate ja teiste osapoolte vahelisel suhtlusel on väga vajalik ühtne sõnavara, mida standardi järgimine kindlasti luua aitab.

Testija portree
Kui Sul tekkis nüüd küsimus, kes on testijad ja kust nad tulevad, siis võiks sellele vastata mitmeti. Veel mõned aastad tagasi oli valdav programmeerimiskeskne arusaam, et testijaks (või analüütikuks või projektijuhiks) hakkavad need, kes programmeerijaks ei kõlba. Õnneks on praeguseks need arusaamad veidi muutunud ning liiguvad selles suunas, et mida kogenum on testijaks pürgija tarkvaraarenduses teistel positsioonidel (näiteks analüütik või arendaja, veelgi parem arhitekt), seda parem testija temast saab. See on nii selle pärast, et oma eelnevate kogemuste põhjal tarkvarasüsteeme üles ehitades on need inimesed kõik vead juba omal nahal läbi proovinud, seega teavad nad edaspidi ka teisi hoiatada samu vigu tegemast. Nii ongi tõsiasi, et parimad turvalisuse testijad on endised või tegevarhitektid ning koodiauditit oskab efektiivselt teha ainult tegevarendaja. Efektiivsete koormustestide läbiviimiseks peab tihti aga omama sama põhjalikke teadmisi kui süsteemiadministraator. Muidugi on alati võimalik ka kohe ülikoolipingist testijakarjääri alustada, kuid sel viisil tuleb palju töö käigus juurde õppida selle kohta, kuidas tarkvaraarendus tegelikult käib.

Testimist on ajalooliselt peetud ka rutiinseks ning igavaks tegevuseks. See võib tõesti nii olla, kuid ainult juhul, kui testimine on valesti korraldatud. Isegi käsitsitestimine ei tohiks muutuda igavaks, kui kasutatakse uuriva testimise tehnikaid, ning siililegi on selge, et tüütud ja korduvad tegevused tuleb automatiseerida. Rääkimata siis näiteks turvalisuse testimisest, mida võib võrrelda justkui põneva aardejahiga, kus vihjetest lähtuvalt liigutakse edasi üha sügavamale ja sügavamale meid huvitava info suunas. Tänapäeval on olemas ka kõiki neid tegevusi toetavad vahendid, nii et testimist igavaks nimetada võivad tänapäeval küll vaid võhikud.

Tihti arvatakse, et testijad peavad juba iseloomult olema suured tähenärijad ja perfektsionistid. Tegelikkuses tuleb liigne perfektsionism hoopis töötulemustele kahjuks. Testija peab mõistma, et vaatamata tema enese arvamusele on primaarne siiski tellija arvamus. Testija ülesanne on välja tuua vigu, kõrvalekaldumisi spetsifikatsioonist ning puudujääke, kuid testija ülesanne ei ole saadud info põhjal võtta vastu otsuseid tarkvara sobilikkuse kohta. Seda teeb siiski keegi selleks volitatud isik, enamasti keegi tellija esindajatest. Seega on testija üheks olulisimaks omaduseks hoopis empaatiavõime ja sallivus – töötades vigade ning nn negatiivsete uudistega, peab testija jääma faktidele põhinevaks ning aktsepteerima asjaolu, et ka faktid võivad muutuda, kui muutuvad tellija soovid.

Teatavate diplomaadioskusteta testija oma igapäevatöös hakkama ei saa – oskus kommunikeerida negatiivseid uudiseid ilma, et uudiste vastuvõtja tunneks end „labidaga pähesaanuna“, nõuab harjutamist. Vead ei ole hea uudis kellelegi (peale testijate) – arendajatele ega tellijalegi ning nende teatavaks tegemisel tuleb säilitada neutraalsus ja põhjendatus, sest vastasel juhul võivad suhted minna teravaks kõigi kolme nimetatud osapoole vahel: tellija süüdistab arendajat kehva koodi kirjutamise, arendajad testijaid vigade leidmise ning testijad tellijat uduste nõuete ning arendajat kehva koodi pärast. Selge, et liigsetest emotsioonidest kellelegi kasu ei tõuse. Seetõttu on vigade raporteerimisel ning eskaleerimisel vajalik eristada olulist mitteolulisest ning testijana taandada end otsuste vastuvõtmisest, mis puudutab seda, kas tarkvara „sobib“ või „ei sobi“.

Seega sobib testijaks peaaegu iga inimene, kes tõeliselt soovib selle valdkonnaga tegeleda ning sellega kaasnevat vastutust võtta. Mida rohkem on kogemusi, seda edukam on start, kuid samas kehtib ka põhimõte „kes tasa sõuab, see kaugele jõuab“. Oluline on testimise erinevatest tahkudest valida just see, mis on antud hetkel võimetele ja soovidele vastav.

Kordan veel: tänapäeval ei ole testija kaugeltki enam läbipõlenud programmeerija või mõni eriti aeglase taipamisega tudeng. Pigem on lood hoopis vastupidi – testijate käes on päris suur vastutus õigeaegse ning korrektse info andmise osas, mille põhjal tehakse päris olulisi elulisi otsuseid. Kujuta näiteks ette, et testid uut lennujuhtimistarkvara, mille abil hakatakse Tallinna lennuväljal õhus ja maal lennukeid üksteisest ohutus kauguses hoidma. Testimistulemuste alusel tundub kõik olevat korras ning tarkvaraga antakse kasutusse. Järgmisel päeval või nädalal aga juhtub lennuväljal midagi, millel on katastroofilised tagajärjed. Uurimise käigus selgitatakse tõenäoliselt välja, et tegemist on mitte piloodi ega lennujuhi, vaid tarkvara veaga. Koheselt tekib küsimus, kes on „süüdi“, kas programmeerija, kes vea koodi tekitas, või siis testija, kes seda õigel ajal üles ei leidnud ja ei raporteerinud?

Kokkuvõtteks
Tegelikult ei olegi oluline, kes süüdi mõistetakse, oluline on see, tõenäoliselt on uni ja maine pärast sellist läbielamist tükiks ajaks rikutud, välistatud pole aga ka kokkupuuted kohtusüsteemiga. Tarkvaral lasub tänapäeval hiigelsuur vastutus, sealhulgas vastutus inimelude hoidmise eest, ning testija on just see väga oluline inimene, kes peaks andma asjakohast infot tarkvara korrektsuse kohta. Testijateta ei oleks meil tagasisidet ja kuna tagasiside on tõenäoliselt ainus tõeline sisend paremaks saamiseks, siis ei oleks võimalik testijateta ka võimalik paremaks muutuda.

Maili Markvardt
Eesti Testijate Liit
Juhatuse liige