{"id":21406,"date":"2021-08-27T10:54:28","date_gmt":"2021-08-27T08:54:28","guid":{"rendered":"https:\/\/www.software-developer-india.com\/hvad-er-testdrevet-udvikling-eller-tdd\/"},"modified":"2021-08-27T10:54:29","modified_gmt":"2021-08-27T08:54:29","slug":"hvad-er-testdrevet-udvikling-eller-tdd","status":"publish","type":"post","link":"https:\/\/www.software-developer-india.com\/da\/hvad-er-testdrevet-udvikling-eller-tdd\/","title":{"rendered":"Hvad er testdrevet udvikling? Eller TDD?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"> Hvad er testdrevet udvikling? Eller TDD?<\/h2>\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.software-developer-india.com\/wp-content\/uploads\/2021\/08\/software-development.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"575\" height=\"250\" src=\"https:\/\/www.software-developer-india.com\/wp-content\/uploads\/2021\/08\/software-development.jpg\" alt=\"\" class=\"wp-image-21384\" srcset=\"https:\/\/www.software-developer-india.com\/wp-content\/uploads\/2021\/08\/software-development.jpg 575w, https:\/\/www.software-developer-india.com\/wp-content\/uploads\/2021\/08\/software-development-300x130.jpg 300w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/a><\/figure><\/div>\n\n<p>Test Driven Development eller TDD, som det med gl\u00e6de er kendt i udviklerkredse, er et vigtigt aspekt af softwareudviklingsprocessen. Gennem denne tilgang er det lettere at teste, hvad en bestemt kode ville udf\u00f8re. Testcases for hver funktionalitet i softwareapplikationen oprettes, og n\u00e5r en bestemt funktionalitet mislykkes i en test, vil koden blive omarbejdet, og nye koder ville blive oprettet. Den nye kode skulle ogs\u00e5 best\u00e5 testen og v\u00e6re fejlfri. Udvikleren skal kun skrive en ny kode, hvis den automatiske test for koden mislykkedes, s\u00e5 der vil v\u00e6re en testcase for hver funktionalitet, hvor lille den end er. Og TDD handler om at designe og udvikle tests for hver enkelt funktionalitet i applikationen. <\/p>\n\n<p>Navnet Test Driven Development indikerer, at det er processen med at lave test p\u00e5 den rigtige m\u00e5de, der driver softwareudviklingen. Derfor stammer selve processen fra r\u00f8dderne fra Agile metodik og ekstrem programmering. Denne proces sikrer, at udviklere opretter og vedligeholder kode, der er modstandsdygtig og langsigtet. <\/p>\n\n<p>S\u00e5 processen for TDD ville v\u00e6re at skrive enhedstesten f\u00f8rst, og hvis testen mislykkes, implementer derefter kode\u00e6ndringerne. Dette hj\u00e6lper ogs\u00e5 med at undg\u00e5 kopiering af kode. Det hele k\u00f8rer p\u00e5 at skrive og rette fejlede test f\u00f8r selve udviklingen. For at TDD&#8217;en skulle fungere med succes, ville det imidlertid v\u00e6re tilr\u00e5deligt at skrive testcases til simple testcases. For kompleks forretningslogik ville det v\u00e6re virkelig sv\u00e6rt at skrive en kombination af testcases og opn\u00e5 fuld succes. Der er en chance for, at du m\u00e5ske g\u00e5r glip af at skrive nogle tests, s\u00e5 det er slet ikke en let opgave. <\/p>\n\n<h3 class=\"wp-block-heading\"><strong>Forskel mellem TDD og traditionel testning<\/strong><\/h3>\n\n<p>Traditionel test er mere tidskr\u00e6vende end TDD, og er baseret p\u00e5 gentagelse af en kort udviklingscyklus. F\u00f8rst skrives testen fra begyndelsen, derefter skrives programkoden efterfulgt af systemets \u00f8nskede adf\u00e6rd. N\u00e5r den skriftlige test er best\u00e5et (kontrol af korrektheden af den uskrevne kodes arbejde), udf\u00f8res refaktorering af den skrevne kode. <\/p>\n\n<p>I f\u00f8rste omgang vil TDD ogs\u00e5 v\u00e6re tidskr\u00e6vende, men med tiden vil udvikleren v\u00e6nne sig til det, fordi udviklingsprocessen bliver mere struktureret. N\u00e5r du f.eks. Ans\u00e6tter en udvikler, beslutter de, hvad de skal skrive, og derefter hvordan de skal skrive det. <\/p>\n\n<p>Traditionel test er vellykket, n\u00e5r den korrekt finder en eller flere fejl. Ligesom det samme som TDD. At finde fejl er faktisk et godt tegn, for s\u00e5 ved du, at du skal l\u00f8se, hvad der er galt, og komme videre derfra.TDD giver dig ogs\u00e5 mere tillid, n\u00e5r du frigiver programmet, og sikrer, at det opfylder de krav, som det er defineret til. <\/p>\n\n<p>I traditionel test er fokus mere p\u00e5 testkassedesign, mens der i TDD er mere fokus p\u00e5 produktionskode for at verificere, om testen fungerer efter planen. <\/p>\n\n<p>TDD giver dig 100% testd\u00e6kning, hvor der testes for hver enkelt kodelinje, det er ikke tilf\u00e6ldet med traditionel testning.<\/p>\n\n<p>N\u00e5r projektets omfang er virkelig stort, skal du v\u00e6re virkelig grundig, mens du udf\u00f8rer testene. Og der er en chance for, at testen kan blive forsinket og overskride budget- og tidsbegr\u00e6nsningerne. <\/p>\n\n<p>TDD kan v\u00e6re sv\u00e6rt at skrive, og det kan bremse udviklingstiden, men det ville helt sikkert betale sig i det lange l\u00f8b. <\/p>\n\n<p>En anden ulempe med TDD er, at konceptet er sv\u00e6rt at anvende p\u00e5 eksisterende \u00e6ldre kode. <\/p>\n\n<p> Det er altid godt at f\u00e5 testen til at mislykkes, f\u00f8r du frigiver et projekt, for s\u00e5 ved du, at du har k\u00f8rt en gyldig test. Gennem TDD ved du, at dit system opfylder de krav, det er designet til. S\u00e5 fokus er mere p\u00e5 produktionskode til TDD, da det sikrer, om testen fungerer korrekt. Og n\u00e5r softwaren opfylder alle de krav, der er designet til det.<\/p>\n\n<h3 class=\"wp-block-heading\"><strong>De forskellige faser af en testdrevet udvikling<\/strong><\/h3>\n\n<p>Der er tre forskellige faser af TDD: R\u00f8d, Gr\u00f8n og Refaktor<\/p>\n\n<p>F\u00f8lg denne trinorden for at sikre, at du har tests for den kode, du skriver, s\u00e5 du er n\u00f8dt til at skrive koderne for kun de tests, du laver. <\/p>\n\n<h3 class=\"wp-block-heading\"><strong>Den r\u00f8de scene<\/strong><\/h3>\n\n<p>Ideen med den r\u00f8de fase er at f\u00e5 testen til at mislykkes, og den sv\u00e6reste fase, fordi den udvikler sig, skal skrive test mod ingen kode. Nye udviklere m\u00e5 finde det sv\u00e6rt, fordi de ville v\u00e6re forvirrede med hensyn til, hvad de skal teste uden at have koden til det. Men det er en s\u00e6dvanlig ting og med erfaring bliver det glat. Den f\u00f8rste test skrives uden at skrive kode, og for at erkl\u00e6re klasse og metode, og testen vil have kompilationsfejl. Det n\u00e6ste trin ville v\u00e6re at rette kompilationsfejlen og udf\u00f8re testen for at mislykkes. Dette for\u00e5rsager det r\u00f8de flag.<\/p>\n\n<h3 class=\"wp-block-heading\"><strong>Den gr\u00f8nne fase<\/strong><\/h3>\n\n<p>Efter den r\u00f8de fase ville det n\u00e6ste trin v\u00e6re at skrive koden. Denne kode skal best\u00e5 den f\u00f8rste test. Bare at skrive nok kode til at sikre, at kun den f\u00f8rste test best\u00e5r, er en forhindring mange udviklere st\u00e5r over for i starten. Fordi det i den n\u00e6ste test skulle mislykkes, efterfulgt af ny kode for at passere dem. <\/p>\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.software-developer-india.com\/wp-content\/uploads\/2021\/08\/testing.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"575\" height=\"250\" src=\"https:\/\/www.software-developer-india.com\/wp-content\/uploads\/2021\/08\/testing.jpg\" alt=\"\" class=\"wp-image-21394\" srcset=\"https:\/\/www.software-developer-india.com\/wp-content\/uploads\/2021\/08\/testing.jpg 575w, https:\/\/www.software-developer-india.com\/wp-content\/uploads\/2021\/08\/testing-300x130.jpg 300w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/a><\/figure><\/div>\n\n<h3 class=\"wp-block-heading\"><strong>Refraktor -fasen<\/strong><\/h3>\n\n<p>I de to f\u00f8rste faser, hvor testen f\u00f8rst skal fejle og derefter best\u00e5 den, var m\u00e5let at derefter f\u00e5 testene til at best\u00e5. Men i Refractor -fasen skal andre faktorer tages i betragtning som kodekvalitet, kodevedligeholdelse, kodel\u00e6sbarhed osv. Fokus her er s\u00e5ledes p\u00e5 disse aspekter, s\u00e5 enhedstestene vil fokusere p\u00e5 dem. I refaktureringsfasen beh\u00f8ver du ikke bekymre dig om manglende funktionalitetsaspekt, for n\u00e5r kode\u00e6ndringerne sker, vil testcases automatisk ogs\u00e5 passe til funktionalitetsdelen.<\/p>\n\n<h3 class=\"wp-block-heading\"><strong>TDD passer godt ind i den agile metode<\/strong><\/h3>\n\n<p>Det er ganske indlysende, at projektkrav kan \u00e6ndre sig godt ind i udviklingsfasen, s\u00e5 at have TDD i samarbejde med Agile udvikling vil helt sikkert g\u00f8re det vellykket og bygge projekter, der er tilpasset kundens krav. Med testdrevet udvikling f\u00e5r du en tidligere feedback p\u00e5 projektet, som du let kan arbejde med. <\/p>\n\n<p>Det ville ogs\u00e5 hj\u00e6lpe med at forudse og sk\u00e6re ned p\u00e5 de kritiske flaskehalse og sikre, at projektet forts\u00e6tter efter hensigten. Udviklerhold kan spare meget tid, da testene er oprettet meget tidligere i projektudviklingen, og de skal ikke bekymre sig om omfattende test scripts. <\/p>\n\n<h3 class=\"wp-block-heading\"><strong>Konklusion<\/strong><\/h3>\n\n<p>Testdrevet udvikling er en teknik, der virkelig er tidskr\u00e6vende, men det er v\u00e6rdifuldt i den forstand, at det vil hj\u00e6lpe med at drive dit projekt i den rigtige retning ved at f\u00e5 korrekt feedback om projektet og opdage fejl. Det er dog en meget bedre mulighed end traditionel test, da det kr\u00e6ver mere tid og penge. <\/p>\n\n<p>Interessante links:<\/p>\n\n<p><a href=\"https:\/\/www.agilealliance.org\/glossary\/tdd\/#q=~(infinite~false~filters~(postType~(~'page~'post~'aa_book~'aa_event_session~'aa_experience_report~'aa_glossary~'aa_research_paper~'aa_video)~tags~(~'tdd))~searchTerm~'~sort~false~sortDirection~'asc~page~1)\">Testdrevet udvikling: hvad det er, og hvad det ikke er.<\/a><\/p>\n\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Test-driven_development\">Flere oplysninger om testdrevet udvikling<\/a><\/p>\n\n<p>Billeder: Canva<\/p>\n\n<div class=\"wp-block-image\"><figure class=\"alignleft\"><img decoding=\"async\" src=\"https:\/\/www.software-developer-india.com\/wp-content\/uploads\/2015\/02\/1.jpg\" alt=\"\" class=\"wp-image-229\"\/><\/figure><\/div>\n\n<p>Forfatteren: Sascha Thattil arbejder p\u00e5 Software-Developer-India.com, som er en del af YUHIRO Group. YUHIRO er en tysk-indisk virksomhed, der leverer programm\u00f8rer til IT-virksomheder, agenturer og IT-afdelinger.<\/p>\n<div class=\"shariff\"><ul class=\"shariff-buttons theme-default orientation-horizontal buttonsize-medium\"><li class=\"shariff-button twitter shariff-nocustomcolor\" style=\"background-color:#595959\"><a href=\"https:\/\/twitter.com\/share?url=https%3A%2F%2Fwww.software-developer-india.com%2Fda%2Fhvad-er-testdrevet-udvikling-eller-tdd%2F&text=Hvad%20er%20testdrevet%20udvikling%3F%20Eller%20TDD%3F\" title=\"Del p\u00e5 X\" aria-label=\"Del p\u00e5 X\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#000; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\"><path fill=\"#000\" d=\"M14.258 10.152L23.176 0h-2.113l-7.747 8.813L7.133 0H0l9.352 13.328L0 23.973h2.113l8.176-9.309 6.531 9.309h7.133zm-2.895 3.293l-.949-1.328L2.875 1.56h3.246l6.086 8.523.945 1.328 7.91 11.078h-3.246zm0 0\"\/><\/svg><\/span><span class=\"shariff-text\">del<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button facebook shariff-nocustomcolor\" style=\"background-color:#4273c8\"><a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fwww.software-developer-india.com%2Fda%2Fhvad-er-testdrevet-udvikling-eller-tdd%2F\" title=\"Del p\u00e5 Facebook\" aria-label=\"Del p\u00e5 Facebook\" role=\"button\" rel=\"nofollow\" class=\"shariff-link\" style=\"; background-color:#3b5998; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 18 32\"><path fill=\"#3b5998\" d=\"M17.1 0.2v4.7h-2.8q-1.5 0-2.1 0.6t-0.5 1.9v3.4h5.2l-0.7 5.3h-4.5v13.6h-5.5v-13.6h-4.5v-5.3h4.5v-3.9q0-3.3 1.9-5.2t5-1.8q2.6 0 4.1 0.2z\"\/><\/svg><\/span><span class=\"shariff-text\">del<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button linkedin shariff-nocustomcolor\" style=\"background-color:#1488bf\"><a href=\"https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=https%3A%2F%2Fwww.software-developer-india.com%2Fda%2Fhvad-er-testdrevet-udvikling-eller-tdd%2F\" title=\"Del p\u00e5 LinkedIn\" aria-label=\"Del p\u00e5 LinkedIn\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#0077b5; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 27 32\"><path fill=\"#0077b5\" d=\"M6.2 11.2v17.7h-5.9v-17.7h5.9zM6.6 5.7q0 1.3-0.9 2.2t-2.4 0.9h0q-1.5 0-2.4-0.9t-0.9-2.2 0.9-2.2 2.4-0.9 2.4 0.9 0.9 2.2zM27.4 18.7v10.1h-5.9v-9.5q0-1.9-0.7-2.9t-2.3-1.1q-1.1 0-1.9 0.6t-1.2 1.5q-0.2 0.5-0.2 1.4v9.9h-5.9q0-7.1 0-11.6t0-5.3l0-0.9h5.9v2.6h0q0.4-0.6 0.7-1t1-0.9 1.6-0.8 2-0.3q3 0 4.9 2t1.9 6z\"\/><\/svg><\/span><span class=\"shariff-text\">del<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button xing shariff-nocustomcolor\" style=\"background-color:#29888a\"><a href=\"https:\/\/www.xing.com\/spi\/shares\/new?url=https%3A%2F%2Fwww.software-developer-india.com%2Fda%2Fhvad-er-testdrevet-udvikling-eller-tdd%2F\" title=\"Del p\u00e5 XING\" aria-label=\"Del p\u00e5 XING\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#126567; color:#fff\" target=\"_blank\"><span class=\"shariff-icon\" style=\"\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 25 32\"><path fill=\"#126567\" d=\"M10.7 11.9q-0.2 0.3-4.6 8.2-0.5 0.8-1.2 0.8h-4.3q-0.4 0-0.5-0.3t0-0.6l4.5-8q0 0 0 0l-2.9-5q-0.2-0.4 0-0.7 0.2-0.3 0.5-0.3h4.3q0.7 0 1.2 0.8zM25.1 0.4q0.2 0.3 0 0.7l-9.4 16.7 6 11q0.2 0.4 0 0.6-0.2 0.3-0.6 0.3h-4.3q-0.7 0-1.2-0.8l-6-11.1q0.3-0.6 9.5-16.8 0.4-0.8 1.2-0.8h4.3q0.4 0 0.5 0.3z\"\/><\/svg><\/span><span class=\"shariff-text\">del<\/span>&nbsp;<\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>Hvad er testdrevet udvikling? Eller TDD? Test Driven Development eller TDD, som det med gl\u00e6de er kendt i udviklerkredse, er et vigtigt aspekt af softwareudviklingsprocessen. &#8230; <a title=\"Hvad er testdrevet udvikling? Eller TDD?\" class=\"read-more\" href=\"https:\/\/www.software-developer-india.com\/da\/hvad-er-testdrevet-udvikling-eller-tdd\/\" aria-label=\"Read more about Hvad er testdrevet udvikling? Eller TDD?\">L\u00e6s Mere<\/a><\/p>\n","protected":false},"author":1,"featured_media":21385,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[325,154,169],"tags":[],"class_list":["post-21406","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-skrivning","category-softwareudvikling","category-udvikling"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/posts\/21406","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/comments?post=21406"}],"version-history":[{"count":1,"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/posts\/21406\/revisions"}],"predecessor-version":[{"id":21407,"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/posts\/21406\/revisions\/21407"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/media\/21385"}],"wp:attachment":[{"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/media?parent=21406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/categories?post=21406"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.software-developer-india.com\/da\/wp-json\/wp\/v2\/tags?post=21406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}