Testna pokritost

Vprašanje: Kako dobro je koda testirana?

Opis

Pokritost testa opisuje, kolikšen del dane baze kode pokriva vsaj en testni niz. Obstajata dve glavni merili pokritosti testa. Eden je odstotek podprogrami zajeti v testnem paketu, ki se izvaja proti repozitoriju. Drugi glavni izraz pokritosti testa je odstotek Izjave zajeti med izvajanjem testne zbirke. Definicija metrike CHAOSS za "testno pokritost" vključuje obe diskretni meritvi.

Programski jeziki se nanašajo na podprogrami posebej kot "funkcije", "metode", "rutine" ali v nekaterih primerih "podprogrami". Odstotek pokritosti za določeno repozitorij je v tej definiciji omejen na metode, opredeljene v določenem repozitoriju, in ne vključuje pokritosti knjižnic ali druge programske opreme, od katere je repozitorij odvisen.

Cilji

Razumevanje ravni pokritosti testa je znak kakovosti programske opreme. Koda z malo testno pokritostjo nakazuje verjetnost manj stroge prakse programskega inženiringa in temu primerno povečano verjetnost, da bodo napake odkrite pri uvajanju in uporabi.

Izvajanje

Uporaba in razširjanje zdravstvenih meritev lahko povzroči kršitve zasebnosti. Organizacije so lahko izpostavljene tveganjem. Ta tveganja lahko izhajajo iz skladnosti z GDPR v EU, z državno zakonodajo v ZDA ali z drugo zakonodajo. Obstajajo lahko tudi pogodbena tveganja, ki izhajajo iz pogojev storitve za ponudnike podatkov, kot sta GitHub in GitLab. Pri uporabi metrik je treba preveriti tveganje in morebitne težave glede etike podatkov. Prosim poglej Dokument o etiki podatkov CHAOSS za dodatna navodila.

Stavki vključujejo dodelitve spremenljivk, deklaracije zank, klice sistemskih funkcij, stavke "pojdi na" in običajne return stavek ob zaključku funkcije ali metode, ki lahko vključuje ali ne vključuje vrnitev a value or array of values.

Pokritost podprograma

Pokritost podprograma

Pokritost izjave

Pokritost izjave

Filtri

  • Čas: Spremembe v pokritosti testov skozi čas dokazujejo, da je projekt posvečen čim večji splošni pokritosti s testi. Posebni parametri vključujejo start date in end date za časovno obdobje.
  • Code_File: Vsak repozitorij vsebuje številne datoteke, ki vsebujejo kodo. Filtriranje pokritosti glede na določeno datoteko zagotavlja bolj natančen pogled na pokritost testa. Nekatere funkcije ali izjave lahko povzročijo hujše napake programske opreme kot druge. Na primer, nepreizkušena koda v fail safe funkcije varnostno kritičnega sistema so bolj pomembne za testiranje kot font color preskušanje funkcij.
  • Programski_jezik: večina sodobnih repozitorijev odprtokodne programske opreme vsebuje več različnih programskih jezikov. Odstotek pokritosti vsakega Code_File

Orodja za zagotavljanje metrike

Reference

  1. JH Andrews, LC Briand, Y. Labiche in AS Namin. 2006. Uporaba analize mutacij za ocenjevanje in primerjavo meril pokritosti testiranja. IEEE Transactions on Software Engineering 32, 8: 608–624. https://doi.org/10.1109/TSE.2006.83
  2. Phyllis G Frankl in Oleg Iakounenko. 1998. Nadaljnje empirične študije učinkovitosti testa. V zborniku 6. mednarodnega simpozija ACM SIGSOFT o temeljih programskega inženiringa, 153–162.
  3. Phyllis G Frankl in Stewart N Weiss. 1993. Eksperimentalna primerjava učinkovitosti testiranja veje in testiranja pretoka podatkov. EEE Transactions on SoftwareEngineering 19, 8: 774–787.
  4. Laura Inozemtseva in Reid Holmes. 2014. Pokritost ni močno povezana z učinkovitostjo testne zbirke. V zborniku 36. mednarodne konference o programskem inženirstvu - ICSE 2014, 435–445. https://doi.org/10.1145/2568225.2568271
  5. Akbar Siami Namin in James H. Andrews. 2009. Vpliv velikosti in pokritosti na učinkovitost testne zbirke. V zborniku osemnajstega mednarodnega simpozija o testiranju in analizi programske opreme - ISSTA '09, 57. https://doi.org/10.1145/1572272.1572280