SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
9.
Unit Testing
Unit test
• Una unidad es la parte testable más pequeña del software.

• Test de unidades/componentes individuales del software.

• No es un test de una clase. 

• Se tiene que ejecutar rápido para poder ejecutarse muchas
veces…sino no se ejecuta.

• Es muy limitado en su alcance. Si el test falla, es obvio
donde buscar el problema.
Unit Tests vs TDD
• No es lo mismo:

• Unit test -> Escribir un test.

• TDD -> Escribir tests aplicando la metodología.
Leyes de TDD
• No escribir código de producción sin escribir su
respectivo test unitario fallido.

• Escribir solo lo necesario para que un test falle.

• No escribir más código que el necesario para que
el test fallido deje de fallar.
La realidad
• La mayoría del tiempo estamos:

• Leyendo más que escribiendo 

• Manteniendo código.

• Arreglando bugs

• Desarrollando nuevas funcionalidades.
Código flexible
• Los tests unitarios hacen nuestro código flexible,
mantenible y reusable.

• Si tienes tests, tienes menos miedo a hacer
cambios en el código.

• Los tests permiten los cambios.
Mantener los tests limpios
• Test sucios -> No test -> !Flexibilidad código de
producción.

• Los tests tienen que cambiar en medida que lo
hace el código de producción.

• Código de los test es tan importante como el de
producción.
Legibilidad de los tests
• Más importante en tests incluso que en código de
producción.

• Claridad, simplicidad y densidad de la expresión.

• Eliminar detalles innecesarios.

• Utilizar un lenguaje de dominio para los tests.
Tests limpios
• Una única aserción.

• Testar una sola cosa al mismo tiempo (fijarse en
nombre y las aserciones).

• SetUp / Before.

• Utilizar una base de test.
Tests limpios
• Preparación.

• Ejecución.

• Aserción.
FIRST
• Fast.

• Independent.

• Repeatable.

• Self-Validating.

• Timely.
Key points
• Hacer tests no significa no bugs ni buen código.

• No anticiparse e ir paso a paso.

• La solución y su diseño emerja de los tests.

• Facilita un diseño desacoplado. 

• Nos obliga a escribir el mínimo de funcionalidad necesaria, evitando
sobrediseñar.

• Los test unitarios actúan como documentación que no se queda
obsoleta.
Por qué hacemos tests
Calidad
Clean code
Profesionalidad
Hacer lo correcto
Economics

Más contenido relacionado

Similar a Clean code 9 (20)

Pruebas unitarias 7mo -b
Pruebas unitarias   7mo -bPruebas unitarias   7mo -b
Pruebas unitarias 7mo -b
 
TDD
TDDTDD
TDD
 
Construir tests
Construir testsConstruir tests
Construir tests
 
ASP.NET MVC Workshop Día 2
ASP.NET MVC Workshop Día 2ASP.NET MVC Workshop Día 2
ASP.NET MVC Workshop Día 2
 
Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd intro
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de Selenium
 
7iSF-4 test driver development
7iSF-4   test driver development7iSF-4   test driver development
7iSF-4 test driver development
 
Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven Development
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
 
Integración Continua
Integración ContinuaIntegración Continua
Integración Continua
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Conceptos básicos de Unit Test
Conceptos básicos de Unit Test
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Artesania de Software y TDD
Artesania de Software y TDDArtesania de Software y TDD
Artesania de Software y TDD
 
Pruebas automatizadas de aceptación en aplicaciones web
Pruebas automatizadas de aceptación en aplicaciones webPruebas automatizadas de aceptación en aplicaciones web
Pruebas automatizadas de aceptación en aplicaciones web
 
Exposición software.pptx
Exposición software.pptxExposición software.pptx
Exposición software.pptx
 
Exposición software.pptx
Exposición software.pptxExposición software.pptx
Exposición software.pptx
 

Más de 540deg

Katayuno TCR (test && commit || revert)
Katayuno TCR (test && commit || revert)Katayuno TCR (test && commit || revert)
Katayuno TCR (test && commit || revert)540deg
 
Test doubles
Test doublesTest doubles
Test doubles540deg
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11540deg
 
Clean code 7-8
Clean code 7-8Clean code 7-8
Clean code 7-8540deg
 
Clean code 4-6
Clean code 4-6Clean code 4-6
Clean code 4-6540deg
 
Clean code 1-3
Clean code 1-3Clean code 1-3
Clean code 1-3540deg
 
Arquitectura hexagonal
Arquitectura hexagonalArquitectura hexagonal
Arquitectura hexagonal540deg
 

Más de 540deg (7)

Katayuno TCR (test && commit || revert)
Katayuno TCR (test && commit || revert)Katayuno TCR (test && commit || revert)
Katayuno TCR (test && commit || revert)
 
Test doubles
Test doublesTest doubles
Test doubles
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11
 
Clean code 7-8
Clean code 7-8Clean code 7-8
Clean code 7-8
 
Clean code 4-6
Clean code 4-6Clean code 4-6
Clean code 4-6
 
Clean code 1-3
Clean code 1-3Clean code 1-3
Clean code 1-3
 
Arquitectura hexagonal
Arquitectura hexagonalArquitectura hexagonal
Arquitectura hexagonal
 

Clean code 9

  • 2. Unit test • Una unidad es la parte testable más pequeña del software. • Test de unidades/componentes individuales del software. • No es un test de una clase. • Se tiene que ejecutar rápido para poder ejecutarse muchas veces…sino no se ejecuta. • Es muy limitado en su alcance. Si el test falla, es obvio donde buscar el problema.
  • 3. Unit Tests vs TDD • No es lo mismo: • Unit test -> Escribir un test. • TDD -> Escribir tests aplicando la metodología.
  • 4.
  • 5. Leyes de TDD • No escribir código de producción sin escribir su respectivo test unitario fallido. • Escribir solo lo necesario para que un test falle. • No escribir más código que el necesario para que el test fallido deje de fallar.
  • 6. La realidad • La mayoría del tiempo estamos: • Leyendo más que escribiendo • Manteniendo código. • Arreglando bugs • Desarrollando nuevas funcionalidades.
  • 7. Código flexible • Los tests unitarios hacen nuestro código flexible, mantenible y reusable. • Si tienes tests, tienes menos miedo a hacer cambios en el código. • Los tests permiten los cambios.
  • 8. Mantener los tests limpios • Test sucios -> No test -> !Flexibilidad código de producción. • Los tests tienen que cambiar en medida que lo hace el código de producción. • Código de los test es tan importante como el de producción.
  • 9. Legibilidad de los tests • Más importante en tests incluso que en código de producción. • Claridad, simplicidad y densidad de la expresión. • Eliminar detalles innecesarios. • Utilizar un lenguaje de dominio para los tests.
  • 10. Tests limpios • Una única aserción. • Testar una sola cosa al mismo tiempo (fijarse en nombre y las aserciones). • SetUp / Before. • Utilizar una base de test.
  • 11. Tests limpios • Preparación. • Ejecución. • Aserción.
  • 12. FIRST • Fast. • Independent. • Repeatable. • Self-Validating. • Timely.
  • 13. Key points • Hacer tests no significa no bugs ni buen código. • No anticiparse e ir paso a paso. • La solución y su diseño emerja de los tests. • Facilita un diseño desacoplado. • Nos obliga a escribir el mínimo de funcionalidad necesaria, evitando sobrediseñar. • Los test unitarios actúan como documentación que no se queda obsoleta.
  • 14. Por qué hacemos tests Calidad Clean code Profesionalidad Hacer lo correcto Economics