Testikattavuus ohjelmistotestauksessa: Kuinka mitata sitä
⚡ Älykäs yhteenveto
Ohjelmistotestauksen testikattavuus mittaa, kuinka paljon sovellusta testijoukko todellisuudessa harjoittelee. Se paljastaa testaamattomat vaatimukset, koodipolut ja riskit, jotta tiimit voivat lisätä kohdennettuja tapauksia ja julkaista ne mitattavalla varmuudella.

Mikä on testin kattavuus?
Testin kattavuus määritellään ohjelmistotestauksen mittariksi, joka mittaa testisarjan suorittaman testauksen määrää. Se sisältää tietojen keräämisen siitä, mitkä ohjelman osat suoritetaan testisarjaa suoritettaessa, jotta voidaan määrittää, mitkä ehdollisten lausekkeiden haarat on otettu.
Yksinkertaisesti sanottuna se on tekniikka, jolla varmistetaan, että testisi testaavat koodiasi tai kuinka suuren osan koodistasi käytit suorittamalla testin.
Mitä testikattavuus tekee?
Toteutetussa projektissa testien kattavuus tukee neljää käytännön aktiviteettia:
- Sellaisen vaatimuksen alueen löytäminen, jota ei ole toteutettu testitapausjoukolla
- Auttaa luomaan lisää testitapauksia kattavuuden lisäämiseksi
- Testin kattavuuden kvantitatiivisen mittarin tunnistaminen, joka on epäsuora menetelmä laadun tarkistamiseen
- Sellaisten merkityksettömien testitapausten tunnistaminen, jotka eivät lisää kattavuutta
Ohjelmistosuunnittelun testin kattavuuden edut
Nämä toiminnot tuottavat konkreettisia hyötyjä.
- Se voi varmistaa testin laadun
- Se voi auttaa tunnistamaan, mitä osia koodista todella kosketettiin julkaisun tai korjauksen yhteydessä
- Se voi määrittää kaikki sovelluksesi testaamattomat päätöksentekopisteet ja -polut, mikä mahdollistaa testikattavuuden lisäämisen.
- Estää vika vuoto
- Aika, laajuus ja kustannukset voidaan pitää hallinnassa
- Vikojen ehkäisy projektin elinkaaren varhaisessa vaiheessa
- Vaatimusten puutteet, testitapaukset ja viat yksikkö- ja kooditasolla löytyvät helposti
Testien kattavuuden tyypit
Kattavuus ei ole koskaan yksi numero. Tiimit track useita tyyppejä kerralla, koska jokainen vastaa eri kysymykseen samasta sarjasta. Alla olevassa taulukossa on ryhmitelty useimmin kohtaamasi tyypit.
| Kattavuustyyppi | Mitä se mittaa | Paras käytetty |
|---|---|---|
| Tilinpäätöksen (rivin) kattavuus | Suoritettavat rivit suoritetaan vähintään kerran | Yksikkötestit ja vanhan koodin auditoinnit |
| Sivukonttorin tai päätöksen kattavuus | Jokaisen päätöksen oikea ja väärä seuraus | Ehdollinen ja validointilogiikka |
| Kuntovakuutus | Jokainen totuusarvoinen alalauseke on tosi ja epätosi | Yhdistelmälausekkeet JA- tai TAI-lausekkeet |
| Polun kattavuus | Moduulin läpi kulkevat yksilölliset reitit | Turvallisuuskriittiset ja rahoitusvirrat |
| Toimintojen kattavuus | Testien kutsumat funktiot tai metodit | API- ja palvelukerrokset |
| Vaatimusten kattavuus | Vaatimukset yhdistetty vähintään yhteen testiin | Hyväksyntä ja petostraclopullinen hyväksyntä |
| Riskien kattavuus | Tunnistettujen riskialueiden harjoitus | Lyhyet vapautusjaksot |
Ensimmäiset viisi tyyppiä ovat kooditason mittoja ja kuuluvat valkoisen laatikon testaus, kun taas vaatimukset ja riskien kattaminen ovat testisuunnitelman tasolla.
Mitkä ovat tärkeimmät erot Code Kattavuus ja testikattavuus?
Code kattavuus ja testin kattavuus ovat mittaustekniikoita, joiden avulla voit arvioida sovelluskoodisi laatua.
Tässä on joitain kriittisiä eroja näiden peittomenetelmien kaappien välillä:
| parametrit | Code Kattavuus | Testaa kattavuus |
|---|---|---|
| Määritelmä | Code kattavuustermi, jota käytetään, kun sovelluskoodia käytetään sovelluksen ollessa käynnissä. | Testin kattavuus tarkoittaa yleistä testisuunnitelmaa. |
| Tavoite | Code Kattavuusmittarit voivat auttaa tiimiä seuraamaan automatisoituja testejään. | Testin kattavuus on kerrottu, millä tasolla sovelluksen kirjallista koodausta on testattu. |
| alatyyppejä | Code kattavuus jaettuna alatyyppeihin, kuten tiliotevakuutus, ehdollinen vakuutus ja konttorivakuutus Toggle-kattavuus, Mikronesian kattavuus. | Ei testikattavuusmenetelmän alatyyppiä. |
Testin kattavuuskaava
Testin kattavuuden laskemiseksi sinun on noudatettava alla annettuja vaiheita:
Vaihe 1) Laskea Y, käyttämäsi ohjelmiston koodirivien kokonaismäärä testaus
Vaihe 2) Laskea X, kaikkien testitapausten parhaillaan suorittamien koodirivien määrä
Nyt sinun on löydettävä (X jaettuna Y:llä) kerrottuna 100:lla. Tämän laskelman tulos on testin peittoprosentti.
Esimerkiksi:
Jos järjestelmäkomponentin koodirivien määrä on 500 ja kaikissa olemassa olevissa testitapauksissa suoritettujen rivien määrä on 50, testikattavuus on:
(50 / 500) * 100 = 10% // executed lines divided by total lines
Esimerkkejä testin kattavuudesta
Pelkkä prosenttiosuus ei ole koskaan koko totuus, kuten alla olevat esimerkit osoittavat.
Esimerkki 1:
Jos esimerkiksi haluat testata esinettä nimeltä ”veitsi”, sinun on keskityttävä tarkistamaan, leikkaako se vihannekset tai hedelmät tarkasti. On kuitenkin myös muita näkökohtia, joita on syytä tarkastella, kuten sitä, että käyttäjän tulisi pystyä käsittelemään sitä mukavasti.
Esimerkki 2:
Esimerkiksi, jos haluat tarkistaa Muistio-sovelluksen, sen olennaisten ominaisuuksien tarkistaminen on välttämätöntä. Sinun on kuitenkin otettava huomioon myös muut näkökohdat, kuten Muistio-sovellus reagoi odotetusti muita sovelluksia käytettäessä, käyttäjä ymmärtää sovelluksen käytön eikä kaadu, kun käyttäjä yrittää tehdä jotain epätavallista jne.
Testikattavuustekniikat
Molemmat esimerkit viittaavat samaan johtopäätökseen: kattavuustavoitteen saavuttaminen riippuu vähemmän testien kirjoittamisesta ja enemmän oikean testisuunnittelutekniikan valinnasta. Alla olevat tekniikat laajentavat kattavuutta samalla kun ne pitävätping sviitti pieni.
- Raja-arvoanalyysi: Valitsee syötteet kunkin kelvollisen alueen reunoilta, joissa virheet kasaantuvat eniten. Katso raja-arvoanalyysi käsitellyille tapauksille.
- Ekvivalenssiositus: Ryhmittelee syötteet, joita sovellus käsittelee samalla tavalla, joten yksi tapaus voi turvallisesti edustaa kokonaista arvoluokkaa.
- Päätöstaulukon testaus: Kattaa ehtojen yhdistelmät ja niiden odotetut tulokset yhden ruudukon sisällä.
- Tilasiirtymätestaus: Harjoittelee kaikkia sallittuja ja virheellisiä siirtoja sovellustilojen välillä.
- Peruspolun testaus: Johtaa ohjausvuokaaviosta pienimmän joukon riippumattomia polkuja.
- Riskiperusteinen testaus: Luokittelee ominaisuudet liiketoimintavaikutusten mukaan ja käsittelee riskialttiimmat ensin.
- Tutkiva testaus: Paljastaa aukkoja, joita käsikirjoitetut tapaukset ja uutisraportit eivät koskaan tuo esiin.
Miten testikattavuus voidaan saavuttaa?
Kun tekniikat on valittu, neljä vakiintunutta reittiä kattavat koko alueen.
- Testin kattavuus voidaan tehdä käyttämällä staattisia arviointitekniikoita, kuten vertaisarviointia, tarkastuksia ja läpikäyntiä
- Muuntamalla ad-hoc-virheet suoritettaviksi testitapauksiksi
- Kooditasolla tai yksikkötestitasolla testikattavuus voidaan saavuttaa käyttämällä automaattisia koodipeitto- tai yksikkötestauksen kattavuustyökaluja
- Toiminnallinen testikattavuus voidaan tehdä asianmukaisten testinhallintatyökalujen avulla
Kuinka parantaa testien kattavuutta
Kattavuuden luominen on lähtökohta; sen nostaminen on toistettava rutiini. Käy tämä sarja läpi jokaisen julkaisusyklin alussa.
- Aseta nykyinen luku lähtökohdaksi. Suorita kattavuusraportti ja kirjaa lausekkeen, haaran ja vaatimusten kattavuus erikseen, jotta aukot pysyvät näkyvissä moduulikohtaisesti eivätkä piilossa yhden projektinlaajuisen keskiarvon sisällä.
- Yhdistä testit vaatimuksiin. Rakenna tracToteutustaulukko, joka linkittää jokaisen vaatimuksen ainakin yhteen testitapaukseen. Mikä tahansa tyhjä rivi on vahvistettu aukko, ei epäilys.
- Luokittele moduulit riskin mukaan. Maksu-, todennus- ja tiedonsiirtologiikka ansaitsee paljon perusteellisemman käsittelyn kuin pelkän staattisen ohjenäytön, joten käytä budjetti sinne, missä epäonnistuminen vahingoittaisi eniten.
- Lisää negatiiviset ja reunatapaukset. Tyhjät syötteet, ylisuuret arvot, verkon aikakatkaisut ja käyttöoikeusvirheet ulottuvat haaroihin, joihin onnellisen polun testit eivät koskaan koske.
- Kerrosta testitasot. Yhdistää yksikkötestaus, integraatiotestausja kokonaisvaltaisia tarkistuksia, koska jokainen taso kattaa sen, mitä muut rakenteellisesti eivät pysty kattamaan.
- Automatisoi regressiosarja. Promovakaat tapaukset otetaan huomioon automaatiotestaus ja suorita ne sisällä CI/CD-putki jokaisen commitin jälkeen.
- Poista tarpeettomat tapaukset käytöstä. Poista päällekkäiset testit, jotka lisäävät suoritusminuutteja lisäämättä yhtäkään paljastamatonta riviä.
- RevKatso trendiä joka sprintissä. Track-kattavuus vieressä vikatiheysKasvava vuoto tasaista peitettä vasten on varhainen varoitus sokeasta kulmasta.
⚠️ Varoitus: Älä pidä 100 prosenttia tavoitteena. 85 prosentin suojaustason omaava sarja vahvoilla väitteillä suojaa julkaisua paljon paremmin kuin 95 prosenttia pinnallisista tarkistuksista, jotka suorittavat koodia varmistamatta mitään tulosta.
Testien kattavuuden haitat
Kattavuus on edelleen arvokas, mutta sillä on rajoituksensa, jotka kannattaa mainita ennen prosenttiosuuksien ilmoittamista.
- Suurin osa testin kattavuudesta on manuaalisia, koska automatisoitavia työkaluja ei ole. Siksi vaatimusten analysoiminen ja testitapausten luominen vaatii paljon vaivaa.
- Testin kattavuuden avulla voit laskea ominaisuuksia ja sitten mitata useita testejä. Arviointivirheille on kuitenkin aina tilaa.
