Pokrivenost testovima u testiranju softvera: Kako je izmjeriti
⚡ Pametni sažetak
Pokrivenost testovima u testiranju softvera mjeri koliki dio aplikacije skup testova zapravo vježba. Otkriva netestirane zahtjeve, puteve koda i rizike, tako da timovi mogu dodati ciljane slučajeve i objaviti ih s mjerljivom pouzdanošću.

Što je pokrivenost testom?
Pokrivenost testa definirana je kao metrika u testiranju softvera koja mjeri količinu testiranja koje provodi skup testova. To će uključivati prikupljanje informacija o tome koji se dijelovi programa izvode tijekom izvođenja testnog skupa kako bi se utvrdilo koje su grane uvjetnih iskaza uzete.
Jednostavno rečeno, to je tehnika kojom se osigurava da vaši testovi testiraju vaš kod ili koliko ste koda koristili izvođenjem testa.
Što radi pokrivenost testovima?
Na aktivnom projektu, testna pokrivenost podržava četiri praktične aktivnosti:
- Pronalaženje područja zahtjeva koji nije implementiran skupom testnih slučajeva
- Pomaže u stvaranju dodatnih testnih slučajeva za povećanje pokrivenosti
- Identificiranje kvantitativne mjere pokrivenosti testom, što je neizravna metoda za provjeru kvalitete
- Identificiranje besmislenih testnih slučajeva koji ne povećavaju pokrivenost
Prednosti pokrivenosti testom u softverskom inženjerstvu
Te aktivnosti se prevode u konkretne inženjerske koristi.
- Može osigurati kvalitetu testa
- Može pomoći u prepoznavanju dijelova koda koji su zapravo dodirnuti za izdanje ili popravak
- Može odrediti sve točke odlučivanja i putove u vašoj aplikaciji koji nisu testirani, što vam omogućuje povećanje pokrivenosti testiranjem.
- Spriječiti mana propuštanje
- Vrijeme, opseg i trošak mogu se držati pod kontrolom
- Prevencija kvarova u ranoj fazi životnog ciklusa projekta
- Rupe u zahtjevima, testnim slučajevima i nedostacima na razini jedinice i koda mogu se pronaći na jednostavan način
Vrste pokrivenosti testovima
Pokrivenost nikad nije jedan broj. Timovi track nekoliko tipova odjednom, jer svaki odgovara na različito pitanje o istom apartmanu. Tablica u nastavku grupira tipove koje najčešće susrećete.
| Vrsta pokrivenosti | Što mjeri | Najbolje korišteno za |
|---|---|---|
| Izvod (linija) pokrivenost | Izvršne linije se izvršavaju barem jednom | Jedinični testovi i revizije naslijeđenog koda |
| Pokrivenost podružnice ili odluke | Istinski i lažni ishod svake odluke | Uvjetna i validacijska logika |
| Pokrivenost stanja | Svaki logički podizraz kao istinit i kao neistinit | Složeni I ili ILI izrazi |
| Pokrivenost puta | Jedinstvene rute prođene kroz modul | Sigurnosno kritični i financijski tokovi |
| Pokrivenost funkcija | Funkcije ili metode koje pozivaju testovi | API i slojevi usluga |
| Pokrivenost zahtjeva | Zahtjevi mapirani na barem jedan test | Prihvaćanje i protivljenjetracuvodno odjavljivanje |
| Pokriće rizika | Identificirana područja visokog rizika koja su vježbana | Kratki ciklusi otpuštanja |
Prvih pet vrsta su mjere na razini koda i pripadaju testiranje bijele kutije, dok se zahtjevi i pokrivenost rizika nalaze na razini plana testiranja.
Koje su glavne razlike između Code Pokrivenost i pokrivenost testovima?
Code pokrivenost i test pokrivenost su tehnike mjerenja koje vam omogućuju procjenu kvalitete vašeg aplikacijskog koda.
Ovdje su neke kritične razlike između kabina ovih metoda pokrivanja:
| Parametri | Code Pokrivenost | Obuhvat testom |
|---|---|---|
| Definicija | Code pojam pokrića koji se koristi kada se aplikacijski kod izvršava dok je aplikacija u radu. | Pokrivenost testom znači cjelokupni plan testiranja. |
| Cilj | Code Metrike pokrivenosti mogu pomoći timu u praćenju automatiziranih testova. | Pokrivenost testom daje pojedinosti o razini do koje je testirano pisano kodiranje aplikacije. |
| Podvrste | Code pokrivenost podijeljena s podtipovima kao što su pokrivenost izjava, pokrivenost uvjeta, pokrivenost grana, Togglpokrivenost e, pokrivenost FSM-a. | Nema podvrste metode pokrivenosti testa. |
Testna formula pokrivenosti
Da biste izračunali pokrivenost testom, morate slijediti dolje navedene korake:
Korak 1) Računati Y, ukupan broj linija koda u softveru koji koristite testiranje
Korak 2) Računati X, broj redaka koda koje svi testni slučajevi trenutno izvršavaju
Sada trebate pronaći (X podijeljeno s Y) pomnoženo sa 100. Rezultat ovog izračuna je vaša pokrivenost testom %.
Na primjer:
Ako je broj redaka koda u sistemskoj komponenti 500, a broj redaka izvršenih u svim postojećim testnim slučajevima je 50, tada je vaša pokrivenost testovima:
(50 / 500) * 100 = 10% // executed lines divided by total lines
Primjeri pokrivenosti testom
Sam postotak nikada nije cijela priča, kao što pokazuju primjeri u nastavku.
Primjer 1:
Na primjer, ako je "nož" predmet koji želite testirati, tada se morate usredotočiti na provjeru reže li povrće ili voće točno ili ne. Međutim, postoje i drugi aspekti na koje treba obratiti pozornost, poput toga da korisnik može udobno rukovati njime.
Primjer 2:
Na primjer, ako želite provjeriti aplikaciju Notepad, tada je provjera njezinih bitnih značajki neophodna. Međutim, morate pokriti i druge aspekte kao što su očekivani odziv aplikacije Notepad prilikom korištenja drugih aplikacija, korisnik razumije korištenje aplikacije, a ne ruši se kada korisnik pokuša učiniti nešto neobično itd.
Tehnike pokrivenosti testovima
Oba primjera upućuju na isti zaključak: postizanje cilja pokrivenosti manje ovisi o pisanju više testova, a više o odabiru prave tehnike dizajna testova. Tehnike u nastavku proširuju pokrivenost, a istovremeno održavajuping apartman mali.
- Analiza graničnih vrijednosti: Odabire ulaze na rubovima svakog valjanog raspona, gdje se nedostaci najviše grupiraju. Vidi analiza graničnih vrijednosti za obrađene slučajeve.
- Particioniranje ekvivalencije: Grupira ulaze koje aplikacija tretira identično, tako da jedan slučaj može sigurno predstavljati cijelu klasu vrijednosti.
- Testiranje tablice odluka: Obuhvaća kombinacije uvjeta i njihovih očekivanih ishoda unutar jedne mreže.
- Testiranje prijelaza stanja: Vježba svako valjano i nevaljano kretanje između stanja aplikacije.
- Testiranje osnovnog puta: Izvodi minimalni skup neovisnih putova iz grafa toka upravljanja.
- Testiranje na temelju rizika: Rangira značajke prema utjecaju na poslovanje i prvo pokriva one s najvećim rizikom.
- Eksploratorno ispitivanje: Otkriva praznine koje scenarijski osmišljeni slučajevi i izvješća o pokrivenosti nikada ne otkrivaju.
Kako se može postići pokrivenost testiranjem?
Nakon što su tehnike odabrane, četiri utvrđene rute pružaju pokrivenost.
- Pokrivenost testom može se izvršiti korištenjem tehnika statičnog pregleda kao što su recenzije, inspekcije i prolazak
- Pretvaranjem ad-hoc nedostataka u izvršne testne slučajeve
- Na razini koda ili razini testa jedinice, pokrivenost testom može se postići korištenjem automatiziranog pokrivanja koda ili alata za pokrivanje testa jedinice
- Pokrivenost funkcionalnim testom može se izvršiti uz pomoć odgovarajućih alata za upravljanje testom
Kako poboljšati pokrivenost testovima
Uspostavljanje pokrivenosti je početna točka; povećanje iste je ponovljiva rutina. Proradite kroz ovaj slijed na početku svakog ciklusa objavljivanja.
- Odredite bazu trenutnog broja. Izvješće o pokrivenosti i zapis izjave, grane i pokrivenost zahtjeva pokrenite odvojeno, tako da praznine ostanu vidljive po modulu, a ne skrivene unutar jednog prosjeka za cijeli projekt.
- Mapirajte testove prema zahtjevima. Izgradite a tracMreža jednostavnosti koja povezuje svaki zahtjev s barem jednim testnim slučajem. Svaki prazan redak je potvrđena praznina, a ne sumnja.
- Rangiraj module prema riziku. Logika plaćanja, autentifikacije i migracije podataka zaslužuje puno detaljniju obradu od statičnog zaslona za pomoć, stoga potrošite proračun tamo gdje bi neuspjeh najviše štetio.
- Dodajte negativne i rubne slučajeve. Prazni ulazi, prevelike vrijednosti, mrežna ograničenja i pogreške u dozvolama dosežu grane koje testovi sretnog puta nikada ne dotiču.
- Složite testne razine. Kombinirati ispitivanje jedinice, integracijsko testiranjei provjere od početka do kraja, jer svaka razina pokriva ono što ostale strukturno ne mogu.
- Automatizirajte regresijski paket. Promostabilnih slučajeva u ispitivanje automatizacije i izvršiti ih unutar CI/CD cjevovod nakon svakog commita.
- Ukinite suvišne slučajeve. Izbrišite duplicirane testove koji dodaju minute izvršavanja bez dodavanja ijedne otkrivene linije.
- RevPratite trend u svakom sprintu. Track pokrivenost pored gustoća defektaRastuće curenje uz ravnu pokrivenost rano je upozorenje na slijepu točku.
⚠️ Upozorenje: Nemojte 100 posto tretirati kao cilj. Paket s 85 posto jakih tvrdnji štiti izdanje puno bolje od 95 posto plitkih provjera koje izvršavaju kod bez provjere ikakvog rezultata.
Nedostaci pokrivenosti testovima
Pokrivenost ostaje vrijedna, no nosi ograničenja koja vrijedi navesti prije izvještavanja o bilo kojem postotku.
- Većina zadataka u pokrivenosti testom ručna je jer nema alata za automatizaciju. Stoga je potrebno puno truda za analizu zahtjeva i stvaranje testnih slučajeva.
- Pokrivenost testom omogućuje vam brojanje značajki i zatim mjerenje u odnosu na nekoliko testova. Međutim, uvijek postoji prostor za pogreške u prosudbi.
