it('should be easy');
Paqui Calabria @zurribulle
Encuesta
Edad
¿Qué opinamos de los test automatizados?
"La mejor forma de tener un código mantenible"
"Aportan calidad. Es más sencillo refactorizar y añadir o quitar features"
"Muy útiles, y ahorran tiempo en el medio-largo plazo"
"Molan. Prefiero los tests automatizados para no tener que hablar con QA"
"Necesarios para asegurar un diseño suficientemente bueno"
"Son necesarios, pero no hay que tenerlos porque sí"
¿Testeamos lo suficiente?
¿Por qué?
¿En serio?
Las buenas herramientas no se dejan de usar por falta de tiempo
Proceso | Sin tests | Con tests |
---|---|---|
Implementación | 7 días | 14 días |
Integración | 7 días | 2 días |
Testing y debug | 12 días | 9 días |
Total | 26 días | 24 días |
Bugs en prod | 71 | 11 |
The art of unit testing, Roy Osherove
Parecen poco productivos porque no los aprovechamos al 100% de su potencial
Falta de conocimientos teóricos y buenas prácticas
"Los estandards de testing son difíciles de encontrar"
"Los tests automatizados pueden ser muy pesados. Creo que buena parte viene de usar mal las herramientas"
"Es difícil decidir cómo, dónde y cuánto testear"
10 + 1 consejos para mejorar tus tests
Cada test debe ser independiente
Si necesitas que un test tenga éxito para poder lanzar otro, crearás falsos negativos.
Cuando hay mucho setup usa beforeEach, helpers, page objects...
Ordena los tests de lo general a lo particular
Cuando varios tests fallen, sabrás que tienes que empezar debugando por el primero.
Comprueba una cosa por test
Está bien poner varios expects pero si en el título pone "y" probablemente acabe siendo inmantenible
No te olvides de limpiar
Cualquier modificación al entorno que haya hecho un test, tiene que deshacerse luego para evitar efectos colaterales.
Borra el local storage, resetea la base de datos, restaura el comportamiento de los spies/stubs...
Crea una librería de mocks
Mockear es aburrido, lento y repetitivo. Crea una librería de objetos, servicios, componentes, etc mockeados que puedas acceder desde cualquier test.
Los asincronismos te van a joder la vida
Aprende a dominarlos lo antes posible, estudia, practica.
https://blog.cloudboost.io/javascript-asynchronous-testing-gotchas-ac7e5c39257
No dejes que "caduquen"
Haz los tests lo antes posible, lánzalos con frecuencia y arréglalos en cuanto fallen.
Usa herramientas de CI como jenkins o travis, hooks de git... que no haya merge sin tests.
No te obsesiones con la cobertura
El reporte completo es útil para saber qué nos estamos dejando, pero al final es sólo un número
https://github.com/FCalabria/coverage_is_a_lie
No testees trivialidades
Es tiempo mal invertido, y aumenta el coste de mantenimiento.
No solo existen los UT
Estudia los puntos débiles del proyecto antes de implantar ciegamente tests unitarios. Puede compensar más otro tipo.
Fija un tiempo límite
Situaciones desesperadas requiren medidas desesperadas. Además es un buen argumento para convencer a managers.
Testing automatizado para no developers
A.k.a cómo explicárselo a tu jefe y no acabar echando CVs
Nadie nace sabiendo
¿Por qué?
Refactors más sencillos
Mejora la comprensión de los requerimientos
Componentes más robustos
Disminuye el tiempo de resolución de bugs
Documentación para otros desarrolladores
CD con menos bugs
Ya tenemos QA
El testing automatizado y el manual no son excluyentes.
Añadiendo testing automatizado, los testers pueden invertir más tiempo en nuevas features, accesibilidad, que se cumplan los requisitos del cliente, etc.
¿Se tarda más?
El tiempo de desarrollo parece mayor, pero a la larga se reduce porque habrá menos bugs y será más mantenible.
Quiero números
Realizing quality improvement through test driven development: Entre el 60 y 90 % mejor código (cantidad de defectos), del 15 al 30% más tiempo de desarrollo.
Estudia la herramienta de tickets del proyecto, y marca qué bugs podrían haberse evitado con testing automatizado.
Es mucho riesgo
Propón hacerlo solo durante un plazo de tiempo y después analizar los resultados.
O bien, aplicarlo solo en cierta parte del proyecto que pueda ser problemática y darán más beneficio.
Si nada funciona, hazlos sin preguntar
Calcula el tiempo extra para escribir tests en las estimaciones.
Guarda estadísticas para luego:
- Potenciales bugs cazados por los tests
- Bugs reportados con/sin tests
- Tiempo de resolución de bugs
- Tiempo invertido en modificar features
¡Gracias!
It should be easy
By Paqui Calabria
It should be easy
- 2,139