Jugando con javascript

24
Jugando con Javascript de forma segura Paolo Carrasco

description

Deck de la presentación en el evento Ágiles 2013 en Lima Perú. Charla sobre como aplicar diseño evolucionario, refactoring y TDD cuando se codifica con Javascript.

Transcript of Jugando con javascript

Page 1: Jugando con javascript

Jugando con Javascript de forma segura

Paolo Carrasco

Page 2: Jugando con javascript

Supuestos

Recordamos lo que es POOTenemos noción de cómo programar en JavaScript

Page 3: Jugando con javascript

Hechos de la vida real

• Diseñaremos nuestro código• Revisaremos nuestro código• Cambiaremos nuestro código• Otras personas van a leer nuestro código• Habrán bugs

(citado de la charla de Rebecca Murphey en Full Frontal 2012)

Page 4: Jugando con javascript

¿Cómo lidiar con esto?

Page 5: Jugando con javascript

a) Codificar probando manualmente contra nuestra aplicación

Page 6: Jugando con javascript

b) Haciendo Pruebas Integrales/Journeys

Ventajas● Cada prueba involucra

distintos componentes del sistema

● Interactúan únicamente con la interface más externa

● Casi nunca es necesario usar doubles

Desventajas● Demoran mucho● Cuando fallan, es difícil

rastrear cuál fue el motivo del error

Page 7: Jugando con javascript

c) Haciendo pruebas unitarias (atómicas)

Ventajas

● Cuando fallan, es sencillo identificar cuál es el problema

● Son ejecutadas rápidamente

● Son simples, concisos y con una única intención

Desventajas

● Debe verificar el comportamiento solo de un componente

● En muchas ocasiones necesita el uso de mocks

Page 8: Jugando con javascript

d) Haciendo ambas

Page 9: Jugando con javascript

Pirámide de pruebas

Page 10: Jugando con javascript

• Las pruebas son hechas al final (son difíciles y no son importantes)• No usamos patrones• Preferimos no tocar mucho lo que ya se hizo• Queremos tener claro el diseño de nuestra aplicación por adelantado

Pero cuando desarrollamos en el frontend…

Page 11: Jugando con javascript

¿Por qué lo hacemos así?

● Porque hay poco tiempo● Porque pensamos que no se puede hacer TDD en Javascript

Page 12: Jugando con javascript

¿Cómo lograrlo?

Page 13: Jugando con javascript

Diseño evolucionario

Page 14: Jugando con javascript

TDDNo trata sobre pruebas, sino de diseño

Page 15: Jugando con javascript

¿Qué es Refactor?

Mejora del código ya existente sin modificar su comportamiento

Page 16: Jugando con javascript

¿Por qué refactor?

Continuamente mejorando el diseñoCódigo limpio

Sencillo de leerSencillo de cambiarMenos code smells

Page 17: Jugando con javascript

¿Por qué TDD?

Ayuda a tener confianza en cambiar el códigoForma predecible para desarrollarOportunidad para aprender del códigoEvita errores

Page 18: Jugando con javascript

¿Cómo comenzar?

Page 19: Jugando con javascript

Herramientas mainstream para unit testingJasmineQunitSinon.jsMocha

Chai.js

Page 20: Jugando con javascript

Hello world

• Usando Javascript con TDD

Page 21: Jugando con javascript

Algo más real• Listado de recetas

Page 22: Jugando con javascript

En resumen...

¿Diseño evolucionario?¿TDD? ¿Refactor?

Page 23: Jugando con javascript

¡Muchas gracias!Q & A

[email protected]://join.thoughtworks.com

Page 24: Jugando con javascript

Para revisar

• Antipatterns Javascript• Test Pyramid • Phantom.js – Casper.js• Grunt