{"id":143,"date":"2018-01-02T12:37:10","date_gmt":"2018-01-02T12:37:10","guid":{"rendered":"http:\/\/52.201.184.187\/?p=143"},"modified":"2018-01-04T03:38:25","modified_gmt":"2018-01-04T03:38:25","slug":"que-es-tdd","status":"publish","type":"post","link":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/","title":{"rendered":"\u00bfQu\u00e9 es TDD y por qu\u00e9 empezar a usarlo?"},"content":{"rendered":"<h2>\u00bfQu\u00e9 es TDD?<\/h2>\n<p>TDD viene de la sigla de Test Driven Development, o en Espa\u00f1ol, Desarrollo Guiado por Tests. Se basa en estos pasos:<\/p>\n<ol>\n<li><strong>Escribir<\/strong> <strong>y<\/strong> <strong>Ejecutar<\/strong> el test para que falle, verificando que falle por el motivo que yo espero (<strong>ROJO<\/strong>)<\/li>\n<li>Escribir solamente el c\u00f3digo\u00a0<strong>estrictamente necesario<\/strong> para hacer pasar el test. (<strong>VERDE<\/strong>)<\/li>\n<li>Hacer refactor del c\u00f3digo. (<strong>REFACTOR<\/strong>)<\/li>\n<\/ol>\n<h2>\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-160 alignleft\" src=\"http:\/\/52.201.184.187\/wp-content\/uploads\/2018\/01\/Ciclo-TDD-300x214.png\" alt=\"\" width=\"300\" height=\"214\" srcset=\"http:\/\/52.201.184.187\/blog\/wp-content\/uploads\/2018\/01\/Ciclo-TDD-300x214.png 300w, http:\/\/52.201.184.187\/blog\/wp-content\/uploads\/2018\/01\/Ciclo-TDD.png 394w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2><\/h2>\n<h2>\u00bfPor qu\u00e9 hacerlo fallar primero?<\/h2>\n<p>Probablemente se pregunten por qu\u00e9 escribir el test primero y hacerlo fallar. Vamos por el contraejemplo. Imaginen qu\u00e9 pasar\u00eda si escribieramos el c\u00f3digo productivo, y luego escribieramos y ejecutaramos el test. Supongamos que el test queda en verde. \u00bfEl test qued\u00f3 en verde porque el c\u00f3digo productivo est\u00e1 bien, o porque el test en realidad no prueba lo que tiene que probar? En cambio, si hacemos TDD, primero escribiendo el test y vi\u00e9ndolo fallar por el motivo que nosotros esperamos que falle, demostramos su capacidad de fallar ante c\u00f3digo que no hace lo que tiene que hacer, y entonces demuestra su capacidad de probar nuestro c\u00f3digo productivo.<\/p>\n<h2>El c\u00f3digo estrictamente necesario<\/h2>\n<p>Como desarrolladores solemos tener el vicio de escribir c\u00f3digo innecesario, o de enroscarnos y empezar a escribir condici\u00f3n tras condici\u00f3n, y una validaci\u00f3n atr\u00e1s de otra, teniendo montones de l\u00edneas de c\u00f3digo e \u00abifs\u00bb, muchas veces innecesarias. Por eso es que tenemos que escribir el c\u00f3digo estrictamente necesario y m\u00ednimo como para hacer pasar el test. Cada l\u00ednea de c\u00f3digo, cada condici\u00f3n, cada iteraci\u00f3n debe estar respaldado por un caso de test que haya fallado, y que entonces justifique escribir una l\u00ednea de c\u00f3digo productivo.<\/p>\n<h2>Refactor<\/h2>\n<p>Una vez que tenemos nuestro c\u00f3digo andando, vemos c\u00f3mo mejorar su calidad. La ventaja de tener TDD es que nos da la confianza necesaria para poder cambiarlo sin miedo a romperlo. Importante, respetemos el concepto de refactor: mejorar el c\u00f3digo sin modificar funcionalidad. Si necesitamos agregar o cambiar funcionalidad, tenemos que escribir un nuevo caso de test y seguir el ciclo rojo-verde-refactor.<\/p>\n<h2>\u00bfPor qu\u00e9 deber\u00eda empezar a usar TDD?<\/h2>\n<ul>\n<li>Baja la cantidad de bugs<\/li>\n<li>Mejora la calidad del c\u00f3digo<\/li>\n<li>Cubre con pruebas autom\u00e1ticas el c\u00f3digo<\/li>\n<li>Obliga a pensar el dise\u00f1o de nuestras APIS desde la posici\u00f3n del consumidor, haciendo que queden m\u00e1s limpias.<\/li>\n<li>Los bugs que encontremos una vez que tenemos el c\u00f3digo ya iniciado o en alg\u00fan ambiente se pueden reproducir y arreglar m\u00e1s r\u00e1pidamente<\/li>\n<li>Reduce los costos de mantener el software a medida que avanza el proyecto.<\/li>\n<\/ul>\n<p>Libros y teor\u00eda sobre TDD hay mucha, muchos art\u00edculos defendi\u00e9ndola y algunos no tanto. Lo mejor es empezar a usar TDD en pair programming, acompa\u00f1ado de alguien que lo haya hecho antes.\u00a0 Si quieren seguir profundizando en la teor\u00eda, les recomiendo leer\u00a0<a href=\"https:\/\/dosideas.com\/wiki\/Test_Driven_Development\">este post en dos ideas<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 es TDD? TDD viene de la sigla de Test Driven Development, o en Espa\u00f1ol, Desarrollo Guiado por Tests. Se basa en estos pasos: Escribir y Ejecutar el test para que falle, verificando que falle por el motivo que yo espero (ROJO) Escribir solamente el c\u00f3digo\u00a0estrictamente necesario para hacer pasar el test. (VERDE) Hacer refactor\u2026 <span class=\"read-more\"><a href=\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-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":[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>\u00bfQu\u00e9 es TDD y por qu\u00e9 empezar a usarlo? - 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\/que-es-tdd\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00bfQu\u00e9 es TDD y por qu\u00e9 empezar a usarlo? - Desarrollo \u00c1gil\" \/>\n<meta property=\"og:description\" content=\"\u00bfQu\u00e9 es TDD? TDD viene de la sigla de Test Driven Development, o en Espa\u00f1ol, Desarrollo Guiado por Tests. Se basa en estos pasos: Escribir y Ejecutar el test para que falle, verificando que falle por el motivo que yo espero (ROJO) Escribir solamente el c\u00f3digo\u00a0estrictamente necesario para hacer pasar el test. (VERDE) Hacer refactor\u2026 Leer m\u00e1s &raquo;\" \/>\n<meta property=\"og:url\" content=\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/\" \/>\n<meta property=\"og:site_name\" content=\"Desarrollo \u00c1gil\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-02T12:37:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-01-04T03:38:25+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/52.201.184.187\/wp-content\/uploads\/2018\/01\/Ciclo-TDD-300x214.png\" \/>\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=\"2 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\":\"ImageObject\",\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#primaryimage\",\"inLanguage\":\"es\",\"url\":\"http:\/\/52.201.184.187\/wp-content\/uploads\/2018\/01\/Ciclo-TDD-300x214.png\",\"contentUrl\":\"http:\/\/52.201.184.187\/wp-content\/uploads\/2018\/01\/Ciclo-TDD-300x214.png\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#webpage\",\"url\":\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/\",\"name\":\"\\u00bfQu\\u00e9 es TDD y por qu\\u00e9 empezar a usarlo? - Desarrollo \\u00c1gil\",\"isPartOf\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#primaryimage\"},\"datePublished\":\"2018-01-02T12:37:10+00:00\",\"dateModified\":\"2018-01-04T03:38:25+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"http:\/\/desarrollo-agil.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\\u00bfQu\\u00e9 es TDD y por qu\\u00e9 empezar a usarlo?\"}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#webpage\"},\"author\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"headline\":\"\\u00bfQu\\u00e9 es TDD y por qu\\u00e9 empezar a usarlo?\",\"datePublished\":\"2018-01-02T12:37:10+00:00\",\"dateModified\":\"2018-01-04T03:38:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#webpage\"},\"wordCount\":500,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851\"},\"image\":{\"@id\":\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/52.201.184.187\/wp-content\/uploads\/2018\/01\/Ciclo-TDD-300x214.png\",\"keywords\":[\"TDD\",\"test unitario\"],\"articleSection\":[\"TDD\",\"Test Unitario\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/52.201.184.187\/blog\/tdd\/que-es-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":"\u00bfQu\u00e9 es TDD y por qu\u00e9 empezar a usarlo? - 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\/que-es-tdd\/","og_locale":"es_ES","og_type":"article","og_title":"\u00bfQu\u00e9 es TDD y por qu\u00e9 empezar a usarlo? - Desarrollo \u00c1gil","og_description":"\u00bfQu\u00e9 es TDD? TDD viene de la sigla de Test Driven Development, o en Espa\u00f1ol, Desarrollo Guiado por Tests. Se basa en estos pasos: Escribir y Ejecutar el test para que falle, verificando que falle por el motivo que yo espero (ROJO) Escribir solamente el c\u00f3digo\u00a0estrictamente necesario para hacer pasar el test. (VERDE) Hacer refactor\u2026 Leer m\u00e1s &raquo;","og_url":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/","og_site_name":"Desarrollo \u00c1gil","article_published_time":"2018-01-02T12:37:10+00:00","article_modified_time":"2018-01-04T03:38:25+00:00","og_image":[{"url":"http:\/\/52.201.184.187\/wp-content\/uploads\/2018\/01\/Ciclo-TDD-300x214.png"}],"twitter_card":"summary_large_image","twitter_creator":"@emilianotebes","twitter_site":"@emilianotebes","twitter_misc":{"Escrito por":"Emiliano","Tiempo de lectura":"2 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":"ImageObject","@id":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#primaryimage","inLanguage":"es","url":"http:\/\/52.201.184.187\/wp-content\/uploads\/2018\/01\/Ciclo-TDD-300x214.png","contentUrl":"http:\/\/52.201.184.187\/wp-content\/uploads\/2018\/01\/Ciclo-TDD-300x214.png"},{"@type":"WebPage","@id":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#webpage","url":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/","name":"\u00bfQu\u00e9 es TDD y por qu\u00e9 empezar a usarlo? - Desarrollo \u00c1gil","isPartOf":{"@id":"http:\/\/52.201.184.187\/blog\/#website"},"primaryImageOfPage":{"@id":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#primaryimage"},"datePublished":"2018-01-02T12:37:10+00:00","dateModified":"2018-01-04T03:38:25+00:00","breadcrumb":{"@id":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"http:\/\/desarrollo-agil.com\/blog\/"},{"@type":"ListItem","position":2,"name":"\u00bfQu\u00e9 es TDD y por qu\u00e9 empezar a usarlo?"}]},{"@type":"Article","@id":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#article","isPartOf":{"@id":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#webpage"},"author":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"headline":"\u00bfQu\u00e9 es TDD y por qu\u00e9 empezar a usarlo?","datePublished":"2018-01-02T12:37:10+00:00","dateModified":"2018-01-04T03:38:25+00:00","mainEntityOfPage":{"@id":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#webpage"},"wordCount":500,"commentCount":0,"publisher":{"@id":"http:\/\/52.201.184.187\/blog\/#\/schema\/person\/d3f309d88ee70165de93b55560c9f851"},"image":{"@id":"http:\/\/52.201.184.187\/blog\/tdd\/que-es-tdd\/#primaryimage"},"thumbnailUrl":"http:\/\/52.201.184.187\/wp-content\/uploads\/2018\/01\/Ciclo-TDD-300x214.png","keywords":["TDD","test unitario"],"articleSection":["TDD","Test Unitario"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/52.201.184.187\/blog\/tdd\/que-es-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\/143"}],"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=143"}],"version-history":[{"count":11,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/143\/revisions"}],"predecessor-version":[{"id":163,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/posts\/143\/revisions\/163"}],"wp:attachment":[{"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/media?parent=143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/categories?post=143"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/52.201.184.187\/blog\/wp-json\/wp\/v2\/tags?post=143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}