Singletoni blogi

Tarkvara testimise aabits: kuidas testida, mida testida ja mis tuleb kindlasti ära testida?

Tarkvaraarenduses on oluline sõna testijatel – nemad selgitavad välja, mis jäi arendajatel või tellijatel kahe silma vahele. Selleks, et selles maailmas põhimõistetest aru saada, pani tarkvaraarendusfirma Singleton kokku väikese ülevaatliku aabitsa.

Ajakriitiline test – kontrollitakse stsenaariumide põhiselt funktsionaalsust sõltuvalt täpsest kellaajast või kuupäevast.

Bottlenecking või ka “pudelikaelatest” leiab süsteemi kitsaskohad. See on tarkvaras spetsiifiliste probleemide ja kohtade otsimine, mis aeglustavad programmi tööd. Vaata ka jõudlustest.

Dünaamiline testimine – kui staatilisel testimisel tarkvara ei käivitata, vaid analüüsitakse tarkvara lähtekoodi, siis dünaamiline testimine tähendab koodi käivitamist ja selle toimimise jälgimist.

Funktsionaalne test (Functional test) kontrollib tarkvara funktsionaalsuse vastamist esitatud nõuetele ehk kas kõik funktsioonid ikka teevad seda, mida peaks tegema ja väljastab tulemuse, mis vastab ootustele? Selles testis kasutatakse realistlikke andmeid tegelikust elust ja proovitakse ära ka piirtingimused, samuti simuleeritakse tavalisi kasutajaid reaalses maailmas. Testitakse iga funktsionaalsust eraldi. Vaata ka mittefunktsionaalne test.

Halli kasti meetod (Grey-box) on tarkvara testimise viis, kus osaliselt on programmi sisemine ehitus teada, kuid mitte täielikult. Musta kasti meetodil näiteks ei teada programmi sisu kohta midagi, hinnata saab ainult sisendile vastavalt väljastatud väljundeid. Halli kasti testimisel võivad olla aga näiteks teada andmestruktuurid ja mõned algoritmid, mis aitavad planeerida testi käiku.

Integratsioonitest (Integration test) aitab veenduda, et kõik komponendid töötavad sünkroonis ehk komponent A töötab koos komponendiga B ja kui on lisatingimusi, siis näiteks väljastab A vastavalt komponent C olekule mõne vajaliku väljundi. Nii näiteks proovib see test, kas koduleht suudab ühendust saada e-poe andmebaasiga, et kuvada kõik laos olevad tooted.

Jõudlustest (Performance test) on laiem süsteemi jõudluse proovilepanek, mis keskendub süsteemi toimimisele teatud suurenenud koormuse all. See ei puuduta tarkvaravigade või defektide leidmist. Erinevad jõudlustestimise tüübid mõõdavad vastavalt etalonidele ja standarditele süsteemi toimivust. Test annab arendajatele diagnostilist infot, mida vaja kitsaskohtade kõrvaldamiseks. Näiteks võib proovida erinevatest asukohtadest korraga erinevate päringutega, kas veebiserveri tarkvara suudab ära teenindada suurema hulga kasutajaid. Erinevate testidega on võimalik kindlaks teha, kas pudelikaelaks on veebiserver, mõni tarkvarapakett või andmebaasipäring, mida saaks paremaks muuta. Vaata ka kestvustest, stressitest, tippkoormuse test, bottlenecking.

Kestvustest (Soak test) – see tehakse üsna suure koormusega pikema aja jooksul – näiteks 12 või 24 tundi järjest, et hinnata, kas rakendus saab hakkama pidevalt suure koormusega töötamisel, kas lahendus on vaba mäluleketest ja kas kasutatav riistvara peab vastu.

Ligipääsu- ja autentimistest (security test, authentication / authorization / confidentiality test) proovib sisselogimist erinevate kehtivate ja kehtetute kasutajakontodega, väheste ja liigsete õigustega kasutajatena ning hindab siis, kas nendel profiilidel on kõik õigused tagatud või ega pole midagi üleliigset lubatud. Iga kasutaja peab saama õigusi just nii palju, kui vaja ning turvalisuse huvides mitte rohkem. Seda ligipääsutestid kontrollivadki.

Mittefunktsionaalne test – kui funktsionaalne testimine testib tarkvaratoote funktsionaalsust, siis mittefunktsionaalne test keskendub tarkvaratoote jõudlusele, ligipääsetavusele, otsimootoritele optimeeritusele, kasutatavusele jne ehk kõigele mittefunktsionaalsele. See võib olla näiteks stressitest või jõudlustest. Vaata ka funktsionaalne test, stressitest, tippkoormuse test.

Negatiivne test – kõige ebamugavam osa testimisel, mida nimetatakse tavaliselt ettekavatsetud “vingumiseks”. Hea tulemuse jaoks on sedagi vaja. Negatiivse testiga püütakse sisestada rakendusele kindlalt valesid sisendeid, et teada saada, kuidas see käitub. Kas liiga suuri, liiga väikseid arve, vales formaadis andmeid, häkkivaks käsujadaks maskeeritud sisendkoodi vms. Halbade sisendite proovimine on hädavajalik ka erinevate suurte vigade ja turvaaukude väljaselgitamisel.

Ooteaeg (Wait time) – tuntud ka kui keskmine latentsusaeg, mis annab arendajatele teada, kui kaua kulub pärast päringu saatmist esimese baidi kättesaamisele.

Päringuid sekundis (Requests per second) on hea mõõtühik süsteemi jõudluse hindamiseks: kui palju päringuid suudab lahendus teenindada ühe sekundi jooksul. Süsteemi jõudluse parandamiseks saab seada eesmärgi näiteks päringute arv sekundis uuele tasemele viia.

Regressioonitest – vajalik siis, kui koodi muudetakse. Pärast tarkvarakoodi silumist, programmi värskendamist või mõne muu koodimuutuse tegemist peaks tarkvara selle funktsionaalsuse töötamise kinnituseks uuesti testima. Seda nimetataksegi regressioonitestiks.

Stressitest – seda tehakse seni, kuni süsteem murdub. Põhimõtteliselt koormatakse rakendust päringutega ja tööülesannetega nii palju, et see ei suuda enam toime tulla. Testitulemusena selgub loodud rakenduse tippvõimekus.

Tippkoormuse test – kindlasti on igas süsteemis teatud ajahetked, kui rakendusele langeb väga suur koormus. Et teada saada, kas süsteem ka siis vastu peab, tuleb koormata samamoodi, nagu näiteks on tüüpiline olukord süsteemi töölerakendamise ajal kasvõi kuu lõpus, kui esitatakse finantsaruandeid ja arvutatakse palgalehti või aasta lõpus, kui luuakse majandustulemuste raporteid. Võib-olla on rakendusel ka muid tipphetki – kaubanduse “mustad reeded”, jõuluostude tippajad, rehvivahetus kevadel ja sügisel jne? Testijad peavad need hetked spetsiaalsetes koormustestide keskkondades läbi proovima.

UI test ehk kasutajaliidese test teeb kindlaks, kas kasutaja saab aru tarkvarast ja oskab seda intuitiivselt ja õigesti kasutada. Mõnikord kaasatakse sellisesse testi ka tavalisi lõppkasutajaid, kes pole arenduse juures olnud. Enamasti on testijatel kasutajaliidese testimiseks oma kindlad vahendid. Näiteks võivad need öelda, kui mobiilse seadme kasutajaliidesel on liiga väikesed nupud, need on liiga üksteise lähedal või on raskesti loetava kirja või värvidega.

Veatase (Error rate) – arvutatakse protsendina kõigist päringutest, mis põhjustavad vigu. Vead tulevad välja tavaliselt siis, kui süsteemi koormus ületab selle pakutavat võimsust.

WebLOAD – tuntud praktiline testivahend veebirakenduste testimiseks.

Ühilduvustest – kas tarkvara töötab koos mõne muu programmiga või platvormiga? Kui tarkvara on kirjutatud ühes kindlas operatsioonisüsteemi versioonis, siis laiema kasutajaskonna jaoks tuleb seda testida ka teiste, näiteks vanemate operatsioonisüsteemi versioonidega või veebilehte näiteks erinevate brauserite erinevate versioonidega.

Mis on DigiPRO ja kes seda teevad? Loe siit

Populaarsed lood mujal Geeniuses

Telli Geeniuse kõige hinnalisemad lood oma postkasti

Saadame sulle igal argipäeval ülevaate DigiPRO ja Ärigeeniuse olulisematest lugudest.