Las metodologías ágiles han traído innumerables mejoras en los procesos y en las técnicas de desarrollo de software. Una de ellas, el TDD (Test-driven development) nos permite hacer un proceso de ingeniería inversa, definiendo en primer lugar la prueba a validar, en segundo lugar desarrollando el código que valida dicha prueba y una vez aceptado, refactorizando para optimizar ese código. De esta forma obtenemos un código que funciona y está verificado desde un primer momento, pero además hay otras ventajas del desarrollo guiado por pruebas.