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.

  • 🎯 Määritelmä: Testikattavuus raportoi, mitä vaatimuksia, ominaisuuksia ja koodipolkuja olemassa olevat testit jo käyttävät.
  • 🧭 tyypit: Lause, haara, ehto, polku, vaatimukset ja riskin kattaminen vastaavat kukin eri kysymykseen.
  • 🇧🇷 Code vs. testi: Code Kattavuus mittaa suoritettuja lähderivejä, kun taas testikattavuus mittaa koko testaussuunnitelmaa.
  • 🧮 kaava: Jaa toteutettujen rivien määrä kokonaisrivien määrällä ja kerro sitten prosenttiosuus sadalla.
  • 🛠️ Tekniikat: Raja-arvoanalyysi, päätöstaulukot ja tilasiirtymätestaus laajentavat kattavuutta paisuttamatta aineistoa.
  • 📈 optimointi: Luokittele moduulit riskin mukaan, automatisoi regressioanalyysit ja tarkista kattavuustrendi joka sprintissä.
  • 🤖 AI-apu: Tekoälytyökalut luovat puuttuvia yksikkötestejä ja luokittelevat testaamattomat polut tuotantoriskin mukaan.

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.

  1. 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ä.
  2. Yhdistä testit vaatimuksiin. Rakenna tracToteutustaulukko, joka linkittää jokaisen vaatimuksen ainakin yhteen testitapaukseen. Mikä tahansa tyhjä rivi on vahvistettu aukko, ei epäilys.
  3. 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.
  4. 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.
  5. Kerrosta testitasot. Yhdistää yksikkötestaus, integraatiotestausja kokonaisvaltaisia ​​tarkistuksia, koska jokainen taso kattaa sen, mitä muut rakenteellisesti eivät pysty kattamaan.
  6. Automatisoi regressiosarja. Promovakaat tapaukset otetaan huomioon automaatiotestaus ja suorita ne sisällä CI/CD-putki jokaisen commitin jälkeen.
  7. Poista tarpeettomat tapaukset käytöstä. Poista päällekkäiset testit, jotka lisäävät suoritusminuutteja lisäämättä yhtäkään paljastamatonta riviä.
  8. 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.

UKK

Useimmat tiimit pitävät 70–80 prosenttia käytännöllisenä tavoitteena ja 90 prosenttia tai enemmän turvallisuuskriittisten moduulien kohdalla. Sadan prosentin tavoittelu harvoin palkitsee vaivaa. Priorisoi syvällisiä testejä riskialttiissa logiikassa sen sijaan, että jakaisit testit tasaisesti koko koodikantaan.

Ei. Täysi kattavuus todistaa jokaisen elementin suorituksen, ei sitä, että jokainen arvo, vaatimus tai käyttäjäpolku validoitiin. Puuttuvat vaatimukset, heikot väitteet ja ei-toiminnalliset viat, kuten hitaat vasteajat, jäävät silti huomaamatta 100-prosenttisesti raportoivasta paketista.

Kattavuusraportissa luetellaan tiedostokohtaisesti katetut ja kattamattomat rivit, haarat ja toiminnot, prosenttiosuudet koottuna moduulin ja projektin mukaan. Työkaluja, kuten JaCoCo merkitse myös osittain peittyneet oksat, jotka yleensä ovat nopeimmin suljettavissa.

Tekoäly analysoi lähdekoodia, suoritushistoriaa ja vikatietoja paikantaakseen testaamattomat korkean riskin polut ja ehdottaa sitten tapauksia, jotka sulkevat ne. Se myös luokittelee ensin suoritettavat testit, lyhentäen palautteenantoaikaa tinkimättä kattavuudesta.

Kyllä. Työkaluja, kuten Diffblue kirjoittaa yksikkötestejä paljastuneelle logiikalle automaattisesti, ja generatiiviset mallit muuttavat selkokieliset vaatimukset suoritettaviksi tapauksiksi. Ihmisen tekemä tarkistus on edelleen välttämätöntä, koska luodut väitteet voivat läpäistä ilman merkityksellisen käyttäytymisen tarkistamista.

Tiivistä tämä viesti seuraavasti: