T

Camilo Martínez

D

D

Es un error capital teorizar antes de tener datos. Sin darse cuenta uno empieza a deformar los hechos para que se adapten a las teorías, en lugar de adaptar las teorías a los hechos.

 

Sherlock Holmes
Escándalo en Bohemia

Arthur Conan Doyle (1891)

TDD

Test-Driven Development

Desarrollo dirigido por tests, es una práctica de programación que consiste en:

 

(1) Escribir primero las pruebas (generalmente unitarias), (2) después escribir el código fuente que pase la prueba satisfactoriamente y, por último, (3) refactorizar el código escrito.

¿Para qué?

Con esta práctica se consigue
entre otras cosas:

 

Un código más robusto, más seguro, más manténible y una mayor rapidez en el desarrollo.

TDD

1

2

3

4

5

Add

Test

Test
Fail

Write
Code

Test
Success

Refactor
Code

Test
Success

6

  • Arrange (organizar). Es el primer paso de las pruebas unitarias. En esta parte se definen los requisitos que debe cumplir el código.
     
  • Act (actuar). Es el paso intermedio de las pruebas, el momento de ejecutar el test que dará lugar a los resultados que deberás analizar.
     
  • Assert (afirmar). En el último paso, es el momento de comprobar si los resultados obtenidos son los que se esperaban. Si es así, se valida y se sigue adelante. Si no, se corrige el error hasta que desaparezca.

Triple A (Patrón)

Buenas Prácticas

  • Probar una sola cosa.
  • Ejecución rápida.
  • Resultado consistente.
  • Pruebas unitarias aisladas.
  • Si falla debe ser fácilmente reconocible el fallo.
  • Totalmente automatizado.
  • Repetible.
  • Ejecutable por cualquier persona.
  • Relevante en el futuro.
  • Veracidad de la prueba.

Nombrado

  • Método (agrupar con describe)
  • Regla de Negocio
  • Respuesta Esperada 

Método > Regla Negocio, Respuesta Esperada 

¿Solo unitarias?

Clonar Proyecto

​Convertir un numero arábigo a numero romano.

Conversión

​Para convertir un numero a romano, se debe descomponer en agrupaciones numéricas.
Ejemplo el 999

​Luego se combinan de arriba hacia abajo: CMXCIX

Agrupación Numero Romano
centenas 900 CM
decenas 90 XC
unidades 9 IX

​Para convertir un numero a romano, se debe descomponer en agrupaciones numéricas.
Ejemplo el 999

ES6 Modules

class ClassName  {
  //Amazing Code
}

module.exports = ClassName
const ClassName = require('../path/FileName')

​Export:

Import:

Jest

describe('Arabic', () => {
  //Unite Tests
})
test('description', () => {
  //Arrange
  //Act
  //Assert
})
test('description', () => {
  const expected = 'I'
  //Act
  //Assert
})
test('description', () => {
  const expected = 'I'
  const result = expect(myConverter(1))
  //Assert
})
test('description', () => {
  const expected = 'I'
  const result = expect(myConverter(1))
  result.toBe(expected)
})

Kata

Una kata de código en programación es un ejercicio dirigido a que los programadores desarrollen sus habilidades a base de práctica y repetición.

La primera vez se hace con acompañamiento y orientación... pero para dominar el ejercicio se debe repetir varias veces hasta sentirse cómodo y natural.

  • Nuevos métodos al hacer refactor quedan dentro de la cobertura, no se deben escribir pruebas unitarias para ellos.
     
  • Solo se prueban rangos de datos y limites, no cada uno de los casos posibles.
     
  • Se puede hacer refactor con total confianza. Si algo se daña reverso el código y listo.
     
  • Si reportan un issue, igual se debe seguir TDD. Crear el test, resolver y hacer refactor.

Conclusiones

... lo mas importante

Es más difícil hacer pruebas
después de estar escrito el código.

Fuentes

¡GRACIAS!

TDD

By Camilo Martinez

TDD

Pruebas unitarias (Jest + Javascript)

  • 1,136