Unit test

Fra Wikipedia, den frie encyklopædi
Gå til: navigation, søg

Unit test, også kaldet modultest, er en testmetode i computer programmering, der verificerer, at de individuelle enheder i kildekoden virker efter hensigten. En unit (enhed) er den mindste testbare enhed i en applikation. I procedural programmering kan den mindste enhed være et individuelt program, en funktion eller en procedure. I objektorienteret programmering er den mindste enhed en metode, der hører til i en super-/base-, abstrakt- eller afledt klasse.

Ideelt er alle unit tests uafhængige af hinanden og kan afvikles selvstændigt. Stubbe, Mock/falske[1] objekter og en test harness kan benyttes til at teste moduler i et isoleret miljø. Unit test benyttes på en af to måder, enten benyttes de til at drive udviklingen af kildekode, eller som validering af udviklet kode. At benytte unit tests som drivkraft i udvikling, er en af hjørnestenene i udviklingsmetoden Extreme Programming (XP). Skal man skrive kode der passer til specifikationerne angivet i form af unit tests eller skrive test der verificerer at koden opfylder specifikationerne.[2]

Fordele[redigér | redigér wikikode]

Formålet med en unit test er, at isolere hver del af et program og vise at de individuelle dele fungerer korrekt. En unit test er en konsekvent, nedskrevet kontrakt, som en kodeenhed skal opfylde. Ved tidsmæssigt at placere unit test tæt på kodeudvikling, opdages fejl tidligt i udviklingsprocessen.[3]

Unit tests tillader, at en programmør kan foretage ændringer til koden på et senere tidspunkt, ved at sikre at modulet stadig virker korrekt. En forudsætning for dette er, at et sæt unit test er fyldestgørende. Et testsæt er fyldestgørende, når alle tilstande i en funktion eller metode bliver aktiveret. Tilstande kan eksempelvis være betingelser i en if eller case erklæring.[4] For at sikre at denne forudsætning er opfyldt, udføres en "Code Coverage" analyse som test af testene.[5]

Referencer[redigér | redigér wikikode]

  1. Fowler, Martin (2. januar 2007). "Mocks aren't Stubs". http://martinfowler.com/articles/mocksArentStubs.html. Hentet 1. april, 2008. 
  2. Beck, Kent (Aug 2006). Extreme programming explained. pp. 101. ISBN 0321278658. "You can write code to fit a mold or a mold to fit code" 
  3. Beck, Kent (Aug 2006). Extreme programming explained. pp. 101. ISBN 0321278658. "Defect Cost Increase(DCI) tells us to put testing near code" 
  4. Martin, Robert C. (Jul 2008). Clean Code. pp. 313. ISBN 0-13-235088-2. "The tests are insufficient so long as there are conditions that have not been explored by the test or calcuations that have not been validated" 
  5. Bergmann, Sebastian (25. november, 2008). "Code Coverage Analysis gives you an insight into what parts of the production code are executed when the tests are run". http://www.phpunit.de/manual/3.3/en/code-coverage-analysis.html. Hentet 25. November, 2008.