1/09/2004

DESARROLLO DE APLICACIONES CONDUCIDAS POR PRUEBAS -TEST-DRIVEN-


TheServerSide.com J2EE Community - Test-Driven Development Series Part I - Overview


Me parece increíble como, desgraciadamente, hay que inventarse nuevos conceptos para que los profesionales apliquen técnicas, flujos o metodologías que existen desde hace años, y que desde hace años también, se sabe que son fundamentales. Es el caso de las pruebas. No es una crítica contra los que inventan estas nuevas metodologías, sino contra todos los que no terminamos de aprender.

El artículo comienza describiendo los problemas de la realización manual de pruebas:

- Es repetitivo: si en un proyecto se realizan pruebas de regresión en cada defecto producido, ¿cuántas veces habremos de realizar una misma prueba? La primera vez es divertido, pero la decimocuarta...
- Da lugar a errores: porque somos humanos y nos cansamos, y no nos fijamos.
- No se prueba todo: las pruebas manuales tienden a ser pruebas de usuario, las cuáles son importantísimas -sobre todo en metodologías centradas en casos de uso-, pero a veces no suficientes, hay que ir más abajo.
- Otros han de creer en tu palabra... o tú has de demostrar que lo que dijiste que funcionaba, lo hacía de verdad.

La automatización de pruebas de manera integrada implica el que los casos de prueba, además de ser programados para poder repetirse una y otra vez -con lo cuál han de ser idempotentes-, han de evolucionar al mismo ritmo que el código probado, lo cuál nos obliga a un segundo esfuerzo que merecerá la pena al final.

Hay dos aproximaciones para este tipo de pruebas: la utilización de scripts que automatizan las pruebas de usuario, y APIs de Pruebas, como JUnit, para incluir en el propio código de la aplicación. Las APIs permiten lo siguiente:
- Seguir la regla TestFirst - DeployLater, seguida por varias metodologías, como ExtremeProgramming o, aunque no se diga explícitamente, el Proceso Unificado -aunque lo de que los casos de prueba deben realizarse antes de la implementación puede dar alguna pista-.
- Realizar pruebas unitarias.
- Realizar pruebas funcionales. Este es el único punto donde los scripts de pruebas de usuario hacen lo mismo, y quizá más rápidamente.

El artículo termina con una lista de las APIs más utilizadas en Java para tests.

¡A probarlo todos! ;)


No hay comentarios: