Testi ulatus tarkvara testimisel: kuidas seda mõõta

⚡ Nutikas kokkuvõte

Tarkvara testimise testide katvus mõõdab, kui suurt osa rakendusest testide komplekt tegelikult läbib. See paljastab testimata nõuded, kooditeed ja riskid, et meeskonnad saaksid lisada sihipäraseid juhtumeid ja avaldada need mõõdetava kindlusega.

  • 🎯 Määratlus: Testide katvus annab aru, milliseid nõudeid, funktsioone ja kooditeid olemasolevad testid juba kasutavad.
  • 🧭 tüübid: Lause, haru, tingimus, tee, nõuded ja riskikate vastavad igaüks erinevale küsimusele.
  • 🇧🇷 Code vs test: Code Katvus mõõdab teostatud lähteliine, samas kui testi katvus mõõdab üldist testiplaani.
  • 🧮 Valem: Jaga teostatud read koguarvuga ja korruta seejärel protsendi saamiseks 100-ga.
  • 🛠️ Tehnikad: Piirväärtuste analüüs, otsustustabelid ja olekute üleminekute testimine laiendavad ulatust ilma komplekti paisutamata.
  • 📈 Optimeerimine: Järjesta moodulid riski järgi, automatiseeri regressioonianalüüsi komplekt ja vaata katvuse trend üle igal sprindil.
  • 🤖 AI abi: Tehisintellekti tööriistad genereerivad puuduvad ühiktestid ja järjestavad testimata teed tootmisriski järgi.

Mis on testi katvus?

Testi katvus on tarkvara testimises määratletud kui mõõdik, mis mõõdab testikomplekti poolt sooritatud testimise mahtu. See hõlmab teabe kogumist selle kohta, millised programmi osad testimiskomplekti käitamisel käivitatakse, et teha kindlaks, millised tingimuslausete harud on võetud.

Lihtsamalt öeldes on see tehnika, mis tagab, et teie testid testivad teie koodi või seda, kui suure osa koodist te testi käivitades kasutasite.

Mida testi katvus teeb?

Reaalajas projektis toetab testimine nelja praktilist tegevust:

  • Testjuhtumite komplektiga rakendamata nõude ala leidmine
  • Aitab luua täiendavaid testjuhtumeid katvuse suurendamiseks
  • Katse katvuse kvantitatiivse mõõdiku tuvastamine, mis on kvaliteedikontrolli kaudne meetod
  • Mõttetute testjuhtumite tuvastamine, mis ei suurenda katvust

Tarkvaratehnika testimise katvuse eelised

Need tegevused väljenduvad betooni inseneritöös.

  • See võib tagada testi kvaliteedi
  • See võib aidata tuvastada, milliseid koodiosi vabastamisel või parandamisel tegelikult puudutati
  • See suudab teie rakenduses kindlaks teha kõik otsustuspunktid ja teed, mida ei testitud, mis võimaldab teil suurendada testide ulatust.
  • Takistama defekt leke
  • Aega, ulatust ja kulusid saab kontrolli all hoida
  • Defektide ennetamine projekti elutsükli varases staadiumis
  • Nõuete lüngad, testjuhtumid ja defektid üksuse ja koodi tasemel on hõlpsasti leitavad

Testi katvuse tüübid

Katvus ei ole kunagi üks number. Meeskonnad track mitut tüüpi korraga, sest igaüks neist vastab sama sviidi kohta käivale erinevale küsimusele. Allolev tabel on rühmitanud tüübid, millega te kõige sagedamini kokku puutute.

Katvuse tüüp Mida see mõõdab Kõige paremini kasutatav
Aruande (rea) katvus Täitmisread käivitatakse vähemalt üks kord Ühiktestid ja pärandkoodi auditid
Filiaali või otsuse katvus Iga otsuse õige ja vale tulemus Tingimuslik ja valideerimisloogika
Seisundi katvus Iga tõeväärtuse alamväljend on tõene ja väär Liitsõna JA- või VÕI-avaldised
Raja ulatus Mooduli kaudu läbitud unikaalsed marsruudid Ohutuskriitilised ja finantsvood
Funktsioonide ulatus Testide poolt kutsutavad funktsioonid või meetodid API ja teenusekihid
Nõuete ulatus Nõuded on kaardistatud vähemalt ühe testiga Vastuvõtmine ja tagasilükkaminetraclõplik kinnitus
Riski kate Tuvastatud kõrge riskiga piirkondade testimine Lühikesed vabanemistsüklid

Esimesed viis tüüpi on kooditaseme mõõdud ja kuuluvad valge kasti testimine, samas kui nõuded ja riskide katmine toimuvad testplaani tasandil.

Millised on peamised erinevused Code Katvus ja testi katvus?

Code katmine ja testi katvus on mõõtmistehnikad, mis võimaldavad teil hinnata oma rakenduskoodi kvaliteeti.

Siin on mõned kriitilised erinevused nende katvusmeetodite kabiinide vahel:

parameetrid Code Katmine Testi katvus
Määratlus Code katvustermin, mida kasutatakse rakenduse koodi rakendamisel rakenduse töötamise ajal. Testi katvus tähendab üldist testimisplaani.
Eesmärk Code Katvuse mõõdikud aitavad meeskonnal oma automatiseeritud teste jälgida. Testi katvuse kohta antakse üksikasjad selle kohta, millisel tasemel on rakenduse kirjalikku kodeerimist testitud.
Alamtüübid Code kindlustus, mis on jagatud alatüüpideks nagu väljavõtte kindlustus, tingimuslik kindlustus, filiaali kindlustus Toggle-leviala, Mikroneesia Liidumaa leviala. Testi katvuse meetodi alamtüüp puudub.

Testi katvuse valem

Testi ulatuse arvutamiseks peate järgima alltoodud samme.

Step 1) Loendama Y, teie kasutatava tarkvara koodiridade kogupikkus testimine

Step 2) Loendama X, koodiridade arv, mida kõik testid hetkel täidavad

Nüüd peate leidma (X jagatud Y-ga) korrutatuna 100-ga. Selle arvutuse tulemuseks on teie testi katvuse %.

Näiteks:

Kui süsteemikomponendi koodiridade arv on 500 ja kõigi olemasolevate testide peale kokku käivitatud ridade arv on 50, siis on teie testi ulatus:

(50 / 500) * 100 = 10%   // executed lines divided by total lines

Testi katvuse näited

Nagu allolevad näited näitavad, pole ainuüksi protsent kunagi kogu lugu.

Näide 1:

Näiteks kui ese on „nuga”, mida soovite testida, peate keskenduma sellele, kas see lõikab köögivilju või puuvilju täpselt või mitte. Siiski on ka teisi aspekte, mida tuleks jälgida, näiteks kas kasutaja peaks suutma seda mugavalt käsitseda.

Näide 2:

Näiteks kui soovite kontrollida märkmikurakendust, on selle oluliste funktsioonide kontrollimine hädavajalik. Siiski peate käsitlema ka teisi aspekte, näiteks märkmikurakendus reageerib ootuspäraselt teiste rakenduste kasutamisel, kasutaja saab aru rakenduse kasutamisest ega jookse kokku, kui kasutaja proovib teha midagi ebatavalist jne.

Testi katvuse tehnikad

Mõlemad näited viitavad samale järeldusele: hõlmatuseesmärgi saavutamine sõltub vähem testide arvu kirjutamisest ja rohkem õige testimistehnika valikust. Allpool toodud tehnikad laiendavad hõlmatust, säilitades samal ajalping sviit väike.

  • Piirväärtuste analüüs: Valib sisendid iga kehtiva vahemiku servades, kus defektid kõige tihedamalt esinevad. Vaata piirväärtuste analüüs töötatud juhtumite puhul.
  • Ekvivalentsuse jaotamine: Rühmitab sisendid, mida rakendus käsitleb identselt, nii et üks juhtum saab ohutult esindada tervet väärtuste klassi.
  • Otsustustabeli testimine: Hõlmab tingimuste kombinatsioone ja nende eeldatavaid tulemusi ühes ruudustikus.
  • Oleku ülemineku testimine: Harjutab kõiki kehtivaid ja kehtetuid liigutusi rakenduse olekute vahel.
  • Baasraja testimine: Tuletab juhtimisvoo graafikust minimaalse sõltumatute teede hulga.
  • Riskipõhine testimine: Järjestab funktsioonid ärimõju järgi ja hõlmab esmalt kõige riskikamaid.
  • Uurimuslik testimine: Paljastab lüngad, mida stsenaariumiga juhtumid ja kajastusaruanded ei kajasta.

Kuidas saab testi katvust saavutada?

Kui tehnikad on valitud, pakuvad leviala neli väljakujunenud marsruuti.

  • Testi katvust saab teha staatilise ülevaatuse tehnikate abil, nagu vastastikused eksperdihinnangud, kontrollid ja ülevaade
  • Muundades ad-hoc defektid käivitatavateks testjuhtumiteks
  • Koodi tasemel või üksuse testimise tasemel saab testi katvuse saavutada automaatse koodikatte või üksuse testi katvuse tööriistade abil
  • Funktsionaalset testimist saab teha korralike testihaldustööriistade abil

Kuidas parandada testide ulatust

Katvuse loomine on alguspunkt; selle suurendamine on korduv rutiin. Töötage selle järjestusega läbi iga väljalasketsükli alguses.

  1. Praeguse numbri baasväärtuseks. Käivita katvusaruanne ja registreeri eraldi aruande, haru ja nõuete katvus, et lüngad jääksid mooduliti nähtavaks, mitte ei oleks peidetud ühe projektiülese keskmise sisse.
  2. Testide vastavus nõuetele. Ehitage a tracTäpsuse tabel, mis seob iga nõude vähemalt ühe testijuhtumiga. Iga tühi rida on kinnitatud lünk, mitte kahtlus.
  3. Järjesta moodulid riski järgi. Makse-, autentimis- ja andmemigratsiooniloogika väärib palju põhjalikumat käsitlemist kui staatiline abiekraan, seega kuluta eelarve sinna, kus ebaõnnestumine kõige rohkem kahjustaks.
  4. Lisage negatiivsed ja servajuhud. Tühjad sisendid, ülemõõdulised väärtused, võrgu ajalõpud ja lubade vead jõuavad harudeni, mida õnneliku tee testid kunagi ei puuduta.
  5. Kihistage testi tasemed. Ühendama üksuse testimine, integratsiooni testimineja otsast lõpuni kontrollid, sest iga tase katab seda, mida teised struktuurilt ei kata.
  6. Automatiseerige regressioonikomplekt. Promostabiilsed juhtumid automaatika testimine ja täitke need sees CI/CD torujuhe pärast iga commit'i.
  7. Eemalda üleliigsed juhtumid. Kustuta dubleeritud testid, mis lisavad täitmisminuteid ilma ühtegi katmata rida lisamata.
  8. RevVaata trendi igas sprindis. Track leviala kõrval defektide tihedusLameda katte korral kasvav leke on varajane hoiatus pimeala kohta.

⚠️ Hoiatus: Ära käsitle 100 protsenti eesmärgina. 85-protsendilise kaitsega komplekt tugevate väidetega kaitseb väljalaset palju paremini kui 95 protsenti pealiskaudsetest kontrollidest, mis käivitavad koodi ilma tulemust kontrollimata.

Testi katvuse puudused

Katvus on endiselt väärtuslik, kuid sellel on piirid, mida tasub enne protsendimäärade esitamist mainida.

  • Enamik testi katvuse ülesandeid on käsitsi, kuna automatiseerimiseks pole tööriistu. Seetõttu nõuab nõuete analüüsimine ja testjuhtumite loomine palju vaeva.
  • Testi katvus võimaldab teil loendada funktsioone ja seejärel mõõta mitme testiga. Siiski on alati ruumi otsustusvigadele.

KKK

Enamik meeskondi käsitleb praktilise eesmärgina 70–80 protsenti ja ohutuskriitiliste moodulite puhul 90 protsenti või rohkemat. 100 protsendi poole püüdlemine tasub end harva ära. Eelista testide sügavust kõrge riskiga loogikale, selle asemel et teste ühtlaselt kogu koodibaasis laiali jaotada.

Ei. Täielik katvus tõestab iga elemendi käivitamist, mitte seda, et iga väärtus, nõue või kasutajateekond valideeriti. Puuduvad nõuded, nõrgad väited ja mittefunktsionaalsed vead, näiteks aeglane reageerimisaeg, jäävad ikkagi 100 protsenti kajastavast paketist välja.

Katvusaruanne loetleb failide kaupa kaetud ja katmata read, harud ja funktsioonid, kusjuures protsendid on koondatud moodulite ja projektide kaupa. Tööriistad, näiteks JaCoCo märgista ka osaliselt kaetud oksad, mis on tavaliselt kõige kiiremini sulguvad tühimikud.

Tehisintellekt analüüsib lähtekoodi, teostusajalugu ja defektide andmeid, et tuvastada testimata kõrge riskiga teid, seejärel pakub välja juhtumeid, mis need sulgevad. Samuti järjestab see, milliseid teste esimesena käivitada, lühendades tagasisidet torujuhtmes, ohverdamata katvust.

Jah. Tööriistad, näiteks Diffblue Kirjutage automaatselt katmata loogikaga ühiktestid ja generatiivsed mudelid muudavad lihtkeelsed nõuded täidetavateks juhtumiteks. Inimesepoolne ülevaatus on endiselt oluline, sest genereeritud väited võivad läbi minna ilma olulist käitumist kontrollimata.

Võta see postitus kokku järgmiselt: