{"id":104,"date":"2017-03-09T02:53:32","date_gmt":"2017-03-09T02:53:32","guid":{"rendered":"http:\/\/52.201.184.187\/?p=104"},"modified":"2018-01-02T12:42:00","modified_gmt":"2018-01-02T12:42:00","slug":"mitos-y-verdades-de-tdd","status":"publish","type":"post","link":"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/","title":{"rendered":"Mitos y verdades de TDD"},"content":{"rendered":"<h2>\u00bfPor qu\u00e9 Mitos y verdades de TDD?<\/h2>\n<p>Escribo mi c\u00f3digo con TDD casi desde\u00a0mis inicios\u00a0como desarrollador\u00a0de software, y a lo largo del tiempo he visto los beneficios de hacerlo, y las consecuencias de no hacerlo. Quer\u00eda compartir mi vivencia acerca de este tema.<\/p>\n<h2>Mitos y verdades de TDD:<\/h2>\n<p><em>\u00abCon TDD no voy a tener m\u00e1s bugs\u00bb \u00a0<\/em><\/p>\n<p><strong>Falso<\/strong>. TDD garantiza que el c\u00f3digo va a funcionar en la manera esperada, en los casos en los que fue pensado. No va a evitar que me olvide de considerar alg\u00fan caso, o que entienda mal un requerimiento.<\/p>\n<p>&nbsp;<\/p>\n<p><em>\u00abDesarrollar con\u00a0TDD es lento\u00bb<\/em><\/p>\n<p><strong>Falso<\/strong>. El desarrollo de software no solamente consiste en escribir el c\u00f3digo de una funcionalidad X en un determinado momento. Tambi\u00e9n es garantizar que el resto de las funcionalidades siguen andando correctamente , y es mantener y hacer crecer el c\u00f3digo a lo largo del tiempo. Cada vez que tenemos m\u00e1s funcionalidades desarrolladas (y por ende m\u00e1s c\u00f3digo), es exponencialmente m\u00e1s dif\u00edcil garantizar que todo ande como debe. El hecho de tener tests unitarios y\/o componentes nos ayuda a saber que rompimos algo de inmediato. Los beneficios de TDD puede que no se noten al principio del proyecto, pero a medida que va avanzando, cada vez da m\u00e1s valor.<\/p>\n<p>&nbsp;<\/p>\n<p><em>\u00abTDD ayuda a documentar el c\u00f3digo\u00bb<\/em><\/p>\n<p><strong>Verdadero<\/strong>. Los tests unitarios nos dicen qu\u00e9 escenarios fueron considerados al momento de escribir el software, y c\u00f3mo debe responder ante cada uno de esos escenarios. Seguramente sea la documentaci\u00f3n m\u00e1s actualizada que tengamos del software, ya que los estamos manteniendo constantemente.<\/p>\n<p>&nbsp;<\/p>\n<p><em>\u00abSi hago TDD, no necesito tener un Tester en el equipo\u00bb<\/em><\/p>\n<p><strong>Falso<\/strong>. Los tests automatizados no reemplazan la experiencia de un tester a la hora de probar casos \u00abraros\u00bb que no se le ocurrieron al desarrollador al momento de dise\u00f1ar y escribir el software. El tester o QA deber\u00eda hacer pruebas exploratorias, del tipo de \u00ab\u00bfQu\u00e9 pasa si hago esto&#8230;?<\/p>\n<p>&nbsp;<\/p>\n<p><em>\u00abCon TDD es m\u00e1s f\u00e1cil arreglar un bug\u00bb<\/em><\/p>\n<p><strong>Verdadero<\/strong>. Una vez que el QA (o si somos menos afortunados, un usuario) encuentra un bug, tenemos que analizar cu\u00e1l es el escenario o la combinaci\u00f3n de datos que lo provocan, y escribir un test que reproduzca dicho escenario. Una vez que tengamos el test, podremos dedicarnos a arreglar el c\u00f3digo productivo, teniendo la certeza de que realmente lo estamos arreglando sin romper otra cosa, gracias al resto de la bateria de tests.<\/p>\n<p>&nbsp;<\/p>\n<p>\u00abCon TDD el c\u00f3digo queda m\u00e1s limpio\u00bb<\/p>\n<p><strong>Verdadero<\/strong>. Nos obligamos a escribir el m\u00ednimo c\u00f3digo que hace pasar los tests, sin enredarnos en validaciones \u00abpor las dudas\u00bb. Adem\u00e1s, el test nos obliga a pensar en los m\u00e9todos que expondremos, qu\u00e9 recibir\u00e1n y qu\u00e9 retornar\u00e1n, es decir que nos ponen un poco del lado del cliente de nuestrasAPIs. Recuerden: si es dif\u00edcil de escribir un test para el c\u00f3digo, entonces tenemos que revisar el dise\u00f1o.<\/p>\n<p>&nbsp;<\/p>\n<p><em>\u00abYo tengo experiencia desarrollando, no necesito hacer TDD\u00bb<\/em><\/p>\n<p><strong>Falso<\/strong>. Estos personajes son los m\u00e1s peligrosos&#8230; Los programadores somos humanos, y como tales tenemos errores, independientemente de la experiencia previa que tengamos. Y a\u00fan suponiendo que seas un semidi\u00f3s, seguramente en 6 meses vas a tener que agarrar el c\u00f3digo de nuevo, y ah\u00ed te desaf\u00edo a cambiar algo sin tener los tests que soporten el c\u00f3digo&#8230;<\/p>\n<p>&nbsp;<\/p>\n<p>Para cerrar, les dejo una frase que se me vino a la mente cuando estaba escribiendo este art\u00edculo:\u00a0<em>\u00abCualquier tonto puede escribir c\u00f3digo que un ordenador entiende.<\/em> Los buenos programadores escriben c\u00f3digo que los humanos pueden entender.\u00bb (Martin Fowler)<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfPor qu\u00e9 Mitos y verdades de TDD? Escribo mi c\u00f3digo con TDD casi desde\u00a0mis inicios\u00a0como desarrollador\u00a0de software, y a lo largo del tiempo he visto los beneficios de hacerlo, y las consecuencias de no hacerlo. Quer\u00eda compartir mi vivencia acerca de este tema. Mitos y verdades de TDD: \u00abCon TDD no voy a tener m\u00e1s\u2026 <span class=\"read-more\"><a href=\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/\">Leer m\u00e1s &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,21,3],"tags":[24,26],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mitos y verdades de TDD - Desarrollo \u00c1gil<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mitos y verdades de TDD - Desarrollo \u00c1gil\" \/>\n<meta property=\"og:description\" content=\"\u00bfPor qu\u00e9 Mitos y verdades de TDD? Escribo mi c\u00f3digo con TDD casi desde\u00a0mis inicios\u00a0como desarrollador\u00a0de software, y a lo largo del tiempo he visto los beneficios de hacerlo, y las consecuencias de no hacerlo. Quer\u00eda compartir mi vivencia acerca de este tema. Mitos y verdades de TDD: \u00abCon TDD no voy a tener m\u00e1s\u2026 Leer m\u00e1s &raquo;\" \/>\n<meta property=\"og:url\" content=\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/\" \/>\n<meta property=\"og:site_name\" content=\"Desarrollo \u00c1gil\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-09T02:53:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-01-02T12:42:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@emilianotebes\" \/>\n<meta name=\"twitter:site\" content=\"@emilianotebes\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Emiliano\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/52.201.184.187\/blog\/#website\",\"url\":\"http:\/\/52.201.184.187\/blog\/\",\"name\":\"Desarrollo \\u00c1gil\",\"description\":\"Sofware por y para humanos\",\"publisher\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/52.201.184.187\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#webpage\",\"url\":\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/\",\"name\":\"Mitos y verdades de TDD - Desarrollo \\u00c1gil\",\"isPartOf\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#website\"},\"datePublished\":\"2017-03-09T02:53:32+00:00\",\"dateModified\":\"2018-01-02T12:42:00+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"http:\/\/desarrollo-agil.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mitos y verdades de TDD\"}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#webpage\"},\"author\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"headline\":\"Mitos y verdades de TDD\",\"datePublished\":\"2017-03-09T02:53:32+00:00\",\"dateModified\":\"2018-01-02T12:42:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#webpage\"},\"wordCount\":637,\"commentCount\":5,\"publisher\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"keywords\":[\"TDD\",\"test unitario\"],\"articleSection\":[\"Buenas practicas\",\"TDD\",\"Test Unitario\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\",\"name\":\"Emiliano\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/52.201.184.187\/blog\/#personlogo\",\"inLanguage\":\"es\",\"url\":\"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g\",\"caption\":\"Emiliano\"},\"logo\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#personlogo\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/emilianotebes\/\",\"https:\/\/twitter.com\/emilianotebes\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mitos y verdades de TDD - Desarrollo \u00c1gil","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":"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/","og_locale":"es_ES","og_type":"article","og_title":"Mitos y verdades de TDD - Desarrollo \u00c1gil","og_description":"\u00bfPor qu\u00e9 Mitos y verdades de TDD? Escribo mi c\u00f3digo con TDD casi desde\u00a0mis inicios\u00a0como desarrollador\u00a0de software, y a lo largo del tiempo he visto los beneficios de hacerlo, y las consecuencias de no hacerlo. Quer\u00eda compartir mi vivencia acerca de este tema. Mitos y verdades de TDD: \u00abCon TDD no voy a tener m\u00e1s\u2026 Leer m\u00e1s &raquo;","og_url":"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/","og_site_name":"Desarrollo \u00c1gil","article_published_time":"2017-03-09T02:53:32+00:00","article_modified_time":"2018-01-02T12:42:00+00:00","twitter_card":"summary_large_image","twitter_creator":"@emilianotebes","twitter_site":"@emilianotebes","twitter_misc":{"Escrito por":"Emiliano","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"http:\/\/52.201.184.187\/blog\/#website","url":"http:\/\/52.201.184.187\/blog\/","name":"Desarrollo \u00c1gil","description":"Sofware por y para humanos","publisher":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/52.201.184.187\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"WebPage","@id":"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#webpage","url":"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/","name":"Mitos y verdades de TDD - Desarrollo \u00c1gil","isPartOf":{"@id":"http:\/\/52.201.184.187\/blog\/#website"},"datePublished":"2017-03-09T02:53:32+00:00","dateModified":"2018-01-02T12:42:00+00:00","breadcrumb":{"@id":"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"http:\/\/desarrollo-agil.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Mitos y verdades de TDD"}]},{"@type":"Article","@id":"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#article","isPartOf":{"@id":"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#webpage"},"author":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"headline":"Mitos y verdades de TDD","datePublished":"2017-03-09T02:53:32+00:00","dateModified":"2018-01-02T12:42:00+00:00","mainEntityOfPage":{"@id":"http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#webpage"},"wordCount":637,"commentCount":5,"publisher":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"keywords":["TDD","test unitario"],"articleSection":["Buenas practicas","TDD","Test Unitario"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/52.201.184.187\/blog\/tdd\/mitos-y-verdades-de-tdd\/#respond"]}]},{"@type":["Person","Organization"],"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851","name":"Emiliano","image":{"@type":"ImageObject","@id":"http:\/\/52.201.184.187\/blog\/#personlogo","inLanguage":"es","url":"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g","contentUrl":"http:\/\/2.gravatar.com\/avatar\/e2997f02fe4216c2cce9e5a88e3e3726?s=96&d=mm&r=g","caption":"Emiliano"},"logo":{"@id":"http:\/\/52.201.184.187\/blog\/#personlogo"},"sameAs":["https:\/\/www.linkedin.com\/in\/emilianotebes\/","https:\/\/twitter.com\/emilianotebes"]}]}},"_links":{"self":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/104"}],"collection":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/comments?post=104"}],"version-history":[{"count":13,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/104\/revisions"}],"predecessor-version":[{"id":147,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/104\/revisions\/147"}],"wp:attachment":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/media?parent=104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/categories?post=104"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/tags?post=104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}