jueves, septiembre 06, 2007

Probando la eficiencia de los tests unitarios

jueves, septiembre 06, 2007 por Martín

Via Navegapolis descubro una nueva utilidad para mejorar la eficiencia del proceso de testing. Se trata de Jumble, una herramienta que permite medir la efectividad de los tests unitarios que hayamos escrito.

La idea es clara. Seguro que como yo, algunos habréis tenido la sensación después de terminar los unit tests de que quizás no sean tan completos como os gustaría, e incluso cuando la herramienta de cobertura de código (code coverage) te dice que la cobertura es buena, tu tienes esa sensación de que hay maneras de entrar en el programa que no has cubierto con unit tests.

Lo que hace Jumble es mutar el código de tus clases y después ejecutar los unit tests. Como ha mutado las clases, lo que Jumble espera es que los unit tests sean capaces de detectar esa mutación y alerten de que la entrada es inválida, y por lo tanto fallen. En caso de que los unit tests no fallen pues es probable que ese caso en concreto no haya sido cubierto.

Las mutaciones son de lo más diversas, por ejemplo cambiar sentencias condicionales (e.g. x > y pasa a ser !(x>y)) o por ejemplo cambiar el valor de las constantes definidas en el código, o modificar operaciones aritméticas. Para mutar el código Jumble utiliza la librería BCEL y modifica el bytecode en tiempo de ejecución.

El concepto me ha parecido realmente interesante. Me parece una aplicación bastante inteligente a la modificación de código fuente. En fin, que en el video sobre Model Based Testing que nos recomienda Juan Palacio hablan un poco sobre ello y muestran algún ejemplo.