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,562