jugando con javascript

Post on 12-Jun-2015

193 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

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

Jugando con Javascript de forma segura

Paolo Carrasco

Supuestos

Recordamos lo que es POOTenemos noción de cómo programar en 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)

¿Cómo lidiar con esto?

a) Codificar probando manualmente contra nuestra aplicación

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

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

d) Haciendo ambas

Pirámide de pruebas

• 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…

¿Por qué lo hacemos así?

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

¿Cómo lograrlo?

Diseño evolucionario

TDDNo trata sobre pruebas, sino de diseño

¿Qué es Refactor?

Mejora del código ya existente sin modificar su comportamiento

¿Por qué refactor?

Continuamente mejorando el diseñoCódigo limpio

Sencillo de leerSencillo de cambiarMenos code smells

¿Por qué TDD?

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

¿Cómo comenzar?

Herramientas mainstream para unit testingJasmineQunitSinon.jsMocha

Chai.js

Hello world

• Usando Javascript con TDD

Algo más real• Listado de recetas

En resumen...

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

¡Muchas gracias!Q & A

paolo.carrasco@thoughtworks.comhttp://join.thoughtworks.com

Para revisar

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

top related