{"id":157,"date":"2014-05-01T06:40:00","date_gmt":"2014-05-01T06:40:00","guid":{"rendered":"http:\/\/arclab.fhws.de\/blog\/?p=157"},"modified":"2016-12-05T13:24:22","modified_gmt":"2016-12-05T13:24:22","slug":"ist-test-driven-development-tdd-eine-gute-idee","status":"publish","type":"post","link":"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/","title":{"rendered":"TDD (Test Driven Development) &#8211; eine gute Idee?"},"content":{"rendered":"<p>Aktuell werden wir Zeuge eines interessanten Disputs, den einige bekannte Software Architekten \u00f6ffentlich \u00fcber soziale Netze austragen.<\/p>\n<p><!--more--><\/p>\n<h2>Worum geht es?<\/h2>\n<p>Nicht zuletzt getrieben durch agile Vorgehensweisen, die h\u00e4ufiges Ausliefern von Software fordern, haben automatisierte Software-Tests an Bedeutung gewonnen. Die Idealvorstellung ist, dass nach jeder \u00c4nderung auf Knopfdruck in sehr kurzer Zeit (Sekunden bis wenige Minuten) feststeht, ob die Applikation noch immer alle Requirements erf\u00fcllt. Beim <a href=\"http:\/\/de.wikipedia.org\/wiki\/Testgetriebene_Entwicklung\">Test Driven Development<\/a> (TDD) geht man sogar soweit, dass man vor der Implementierung erst einmal die automatisierten Tests schreibt, so dass der Implementierungsfortschritt auch direkt an den Testergebnissen abgelesen werden kann.<\/p>\n<p>Diese Herangehensweise war bislang als &#8222;best practice&#8220; akzeptiert und wurde kaum in Frage gestellt, auch wenn in der Realit\u00e4t dieses Ziel meist nur f\u00fcr einen kleinen Teil der Applikationen erreicht wurde.<\/p>\n<h2>Remember, though, that automated crap is still crap<\/h2>\n<p>Nun hat unl\u00e4ngst <a href=\"https:\/\/twitter.com\/jcoplien\">James Coplien<\/a>, der in der Community aufgrund seiner Arbeiten zur Pattern einen hohen Bekanntheitsgrad besitzt, einen Artikel mit dem Titel &#8222;<a href=\"http:\/\/t.co\/7TdCp5GrQB\">Why Most Unit Testing is Waste<\/a>&#8220; ver\u00f6ffentlicht. Darin hinterfragt er die Sinnhaftigkeit von TDD und r\u00e4t zu einer Reduzierung der automatisierten Tests zugunsten von Zusicherungen (assertions) im Programmcode.<\/p>\n<h2>TDD is dead. Long live testing.<\/h2>\n<p>Diese Kritik wurde von <a href=\"https:\/\/twitter.com\/dhh\">David Heinemeier Hansson<\/a>, dem Entwickler von Ruby on Rails, aufgegriffen. In seiner <a href=\"http:\/\/www.justin.tv\/confreaks\/b\/522089408\">Keynote <\/a>zur diesj\u00e4hrigen RailsConf 2014 und in einem <a href=\"http:\/\/david.heinemeierhansson.com\/2014\/tdd-is-dead-long-live-testing.html\">Blogbeitrag<\/a> beklagt er insbesondere eine zu starke Fixierung auf schnell ausf\u00fchrbare Unit-Tests, die zwangsl\u00e4ufig dazu f\u00fchrt, dass langsame Teile der Implementierung (z.B. Datenbankzugriffe) separiert und bei den Tests nur simuliert werden.<\/p>\n<blockquote><p>&#8222;Test-first units leads to an overly complex web of intermediary objects and indirection in order to avoid doing anything that&#8217;s &#8217;slow&#8216;.&#8220;<\/p><\/blockquote>\n<p>M.a.W.: Die Architektur der Software leidet darunter und nimmt durch die Ausrichtung auf schnelle Ausf\u00fchrbarkeit von Unit-Tests Schaden.<\/p>\n<h2>You can quickly and easily clean the code without fear<\/h2>\n<p>Nat\u00fcrlich gibt es auch gut begr\u00fcndete Gegenstimmen, die die Vorz\u00fcge von TDD unterstreichen. Einer der bekanntesten Verfechter ist <a href=\"https:\/\/twitter.com\/unclebobmartin\">Robert C. Martin<\/a>, ein Mitunterzeichner des agilen Manifests. In einer <a href=\"http:\/\/blog.8thlight.com\/uncle-bob\/2014\/04\/25\/MonogamousTDD.html\">direkten Antwort<\/a> auf Hansson (in der er auff\u00e4lligerweise vermeidet, den Namen seines Widersachers zu erw\u00e4hnen) stellt er noch einmal den zentralen Grund f\u00fcr TDD heraus:<\/p>\n<blockquote><p>&#8222;If you have a test suite that you trust so much that you are willing to deploy the system based solely on those tests passing; and if that test suite can be executed in seconds, or minutes, then you can quickly and easily clean the code without fear.&#8220;<\/p><\/blockquote>\n<p>Wer schon einmal erlebt hat, wie ein gro\u00dfes Softwaresystem schrittweise unwartbar wird, weil keiner mehr den Mut hat, an zentralen Stellen Ver\u00e4nderungen vorzunehmen, kann dieses Argument gut nachvollziehen.<\/p>\n<h2>Fazit<\/h2>\n<p>Software Engineering ist nicht wie Mathematik &#8211; es gibt keinen Beweis, dass die eine oder andere Sicht die richtige ist. Hilfreich ist in jedem Fall, dass durch die Diskussion die Gr\u00fcnde f\u00fcr TDD noch einmal transparent werden. Die Vorgehensweise ist eben nicht alternativlos.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aktuell werden wir Zeuge eines interessanten Disputs, den einige bekannte Software Architekten \u00f6ffentlich \u00fcber soziale Netze austragen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3],"tags":[4,14],"class_list":["post-157","post","type-post","status-publish","format-standard","hentry","category-general","tag-it-architektur","tag-software-engineering"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TDD (Test Driven Development) - eine gute Idee? - Code Comments<\/title>\n<meta name=\"description\" content=\"Namhafte IT-Architekten tragen aktuell \u00fcber soziale Netze einen Disput \u00fcber die Sinnhaftigkeit von Test Driven Development (TDD) aus.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TDD (Test Driven Development) - eine gute Idee? - Code Comments\" \/>\n<meta property=\"og:description\" content=\"Namhafte IT-Architekten tragen aktuell \u00fcber soziale Netze einen Disput \u00fcber die Sinnhaftigkeit von Test Driven Development (TDD) aus.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/\" \/>\n<meta property=\"og:site_name\" content=\"Code Comments\" \/>\n<meta property=\"article:published_time\" content=\"2014-05-01T06:40:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-12-05T13:24:22+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/code.efi.ohmportal.de\/blog\/#\/schema\/person\/ffe82422b514216ea426c29e9d025d3b\"},\"headline\":\"TDD (Test Driven Development) &#8211; eine gute Idee?\",\"datePublished\":\"2014-05-01T06:40:00+00:00\",\"dateModified\":\"2016-12-05T13:24:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/\"},\"wordCount\":505,\"commentCount\":1,\"keywords\":[\"IT-Architektur\",\"Software Engineering\"],\"articleSection\":[\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/\",\"url\":\"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/\",\"name\":\"TDD (Test Driven Development) - eine gute Idee? - Code Comments\",\"isPartOf\":{\"@id\":\"https:\/\/code.efi.ohmportal.de\/blog\/#website\"},\"datePublished\":\"2014-05-01T06:40:00+00:00\",\"dateModified\":\"2016-12-05T13:24:22+00:00\",\"author\":{\"@id\":\"https:\/\/code.efi.ohmportal.de\/blog\/#\/schema\/person\/ffe82422b514216ea426c29e9d025d3b\"},\"description\":\"Namhafte IT-Architekten tragen aktuell \u00fcber soziale Netze einen Disput \u00fcber die Sinnhaftigkeit von Test Driven Development (TDD) aus.\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/code.efi.ohmportal.de\/blog\/#website\",\"url\":\"https:\/\/code.efi.ohmportal.de\/blog\/\",\"name\":\"Code Comments\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/code.efi.ohmportal.de\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/code.efi.ohmportal.de\/blog\/#\/schema\/person\/ffe82422b514216ea426c29e9d025d3b\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/code.efi.ohmportal.de\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c7b65f3de923b480f4ac13b0308f48ec7dd074b99f7cf1642efbbf97d574ccaa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c7b65f3de923b480f4ac13b0308f48ec7dd074b99f7cf1642efbbf97d574ccaa?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"url\":\"https:\/\/code.efi.ohmportal.de\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TDD (Test Driven Development) - eine gute Idee? - Code Comments","description":"Namhafte IT-Architekten tragen aktuell \u00fcber soziale Netze einen Disput \u00fcber die Sinnhaftigkeit von Test Driven Development (TDD) aus.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/","og_locale":"de_DE","og_type":"article","og_title":"TDD (Test Driven Development) - eine gute Idee? - Code Comments","og_description":"Namhafte IT-Architekten tragen aktuell \u00fcber soziale Netze einen Disput \u00fcber die Sinnhaftigkeit von Test Driven Development (TDD) aus.","og_url":"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/","og_site_name":"Code Comments","article_published_time":"2014-05-01T06:40:00+00:00","article_modified_time":"2016-12-05T13:24:22+00:00","author":"admin","twitter_misc":{"Verfasst von":"admin","Gesch\u00e4tzte Lesezeit":"2\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/#article","isPartOf":{"@id":"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/"},"author":{"name":"admin","@id":"https:\/\/code.efi.ohmportal.de\/blog\/#\/schema\/person\/ffe82422b514216ea426c29e9d025d3b"},"headline":"TDD (Test Driven Development) &#8211; eine gute Idee?","datePublished":"2014-05-01T06:40:00+00:00","dateModified":"2016-12-05T13:24:22+00:00","mainEntityOfPage":{"@id":"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/"},"wordCount":505,"commentCount":1,"keywords":["IT-Architektur","Software Engineering"],"articleSection":["General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/","url":"https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/","name":"TDD (Test Driven Development) - eine gute Idee? - Code Comments","isPartOf":{"@id":"https:\/\/code.efi.ohmportal.de\/blog\/#website"},"datePublished":"2014-05-01T06:40:00+00:00","dateModified":"2016-12-05T13:24:22+00:00","author":{"@id":"https:\/\/code.efi.ohmportal.de\/blog\/#\/schema\/person\/ffe82422b514216ea426c29e9d025d3b"},"description":"Namhafte IT-Architekten tragen aktuell \u00fcber soziale Netze einen Disput \u00fcber die Sinnhaftigkeit von Test Driven Development (TDD) aus.","inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/code.efi.ohmportal.de\/blog\/2014\/05\/ist-test-driven-development-tdd-eine-gute-idee\/"]}]},{"@type":"WebSite","@id":"https:\/\/code.efi.ohmportal.de\/blog\/#website","url":"https:\/\/code.efi.ohmportal.de\/blog\/","name":"Code Comments","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/code.efi.ohmportal.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/code.efi.ohmportal.de\/blog\/#\/schema\/person\/ffe82422b514216ea426c29e9d025d3b","name":"admin","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/code.efi.ohmportal.de\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c7b65f3de923b480f4ac13b0308f48ec7dd074b99f7cf1642efbbf97d574ccaa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c7b65f3de923b480f4ac13b0308f48ec7dd074b99f7cf1642efbbf97d574ccaa?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/code.efi.ohmportal.de\/blog\/author\/admin\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p8QwJV-2x","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/code.efi.ohmportal.de\/blog\/wp-json\/wp\/v2\/posts\/157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code.efi.ohmportal.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/code.efi.ohmportal.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/code.efi.ohmportal.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/code.efi.ohmportal.de\/blog\/wp-json\/wp\/v2\/comments?post=157"}],"version-history":[{"count":6,"href":"https:\/\/code.efi.ohmportal.de\/blog\/wp-json\/wp\/v2\/posts\/157\/revisions"}],"predecessor-version":[{"id":416,"href":"https:\/\/code.efi.ohmportal.de\/blog\/wp-json\/wp\/v2\/posts\/157\/revisions\/416"}],"wp:attachment":[{"href":"https:\/\/code.efi.ohmportal.de\/blog\/wp-json\/wp\/v2\/media?parent=157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code.efi.ohmportal.de\/blog\/wp-json\/wp\/v2\/categories?post=157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code.efi.ohmportal.de\/blog\/wp-json\/wp\/v2\/tags?post=157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}