Pruebas unitarias
Desde hace unas semanas tenemos en marcha Sonar en nuestra organización para recoger métricas realizando una revisión estática del código. Estamos muy contentos con la implantación de la herramienta y realmente le estamos viendo bastantes posibilidades de cara a un futuro, no obstante es algo que tenemos que tomarnos con prudencia, ya que cada programa es un mundo y no podemos juzgar de antemano y sin un estudio en profundidad de las métricas y de las circunstancias del producto si el mismo a nivel de codificación ha resultado de calidad o no. Hay mucho que trabajar en este sentido, ya que independientemente de lo anterior, una vez analizadas sus bondades y defectos nos permitirá por un lado mejorar la mantenibilidad de los sistemas y la calidad general del producto.
Uno de las cosas que más nos llamó la atención fue que para casi todos los proyectos para los que recogíamos métricas el valor de Cobertura era 0% o lo que es lo mismo, que el 0% del código de gran parte de los sistemas de información de la casa no esta cubierto por pruebas unitarias.
Una vez descubierto esto (no es que hayamos descubierto ninguna maravilla, simplemente es algo que con el día a día no se prestaba atención, pero que sin embargo son tan obvios y llamativos los datos que nos da Sonar que no podemos dejar pasarlo por alto), vamos a meter mano en este tema, porque muchos errores que se detectan en la fase de pruebas del producto o en producción se podían haber detectado previamente con unas sencillas pruebas unitarias, de esta manera mejoraremos la eficiencia de funcionamiento de nuestra Oficina de Calidad, ya que tendrán que dedicar menos tiempo a detectar y reportar este tipo de incidencias y por supuesto reduciremos el número de errores que nos llegan a producción.
De las pruebas unitarias se habla mucho, incluidos los propios proveedores de servicios de desarrollo de software, pero después queda demostrado que del dicho al hecho hay mucha distancia.
La clave de todo está en el equilibrio, si intentamos cubrir con pruebas unitarias todo el código, lo mismo cuesta más el collar que el perro, pero no verificar nada tiene tan poco equilibrio como lo anterior. Por lo menos sería necesario que se verificasen los métodos más conflictivos, comprobando si en función de distintas posibilidades se ejecuta o no el código contenido en los mismos. Como esto dependerá mucho de la complejidad de las aplicaciones, el factor de cobertura será distinto entre ellas, pero una cosa es esa y otra cosa la nada.
Pingback: ¿Dónde realizo las pruebas unitarias? « Jummp’s Blog
Pingback: Sonar plugin: SIG Maintainability Model « Jummp’s Blog
Pingback: Testing de caja blanca (White box testing) « Jummp
Pingback: Desarrollo de software. Programación extrema (eXtreme Programming: XP) « Jummp
Pingback: Desarrollo de software. Metodología de desarrollo guiado por las pruebas (TDD: Test-driven Development) « Jummp
Pingback: Desarrollo de software. Integración continua « Jummp
Pingback: Desarrollo de software. Jim Highsmith. La necesidad de reducir el tiempo necesario para el paso a producción II « Jummp
Pingback: Reflexiones sobre la adaptación de Sonar a nuestra metodología de calidad para su uso en mi organización « Jummp
Pingback: Desarrollo de software. Boris Beizer. La necesidad del testing « Jummp
Pingback: Sonar plugin: Quality Index « Jummp
Pingback: Desarrollo de software. Pruebas de regresión « Jummp
Pingback: Desarrollo de software. Testing ágil « Jummp
Pingback: Desarrollo de software. Programación extrema (eXtreme Programming: XP) II « Jummp
Pingback: Desarrollo de software. Testing, un instrumento infravalorado « Jummp
Pingback: Desarrollo de software. Pruebas, testing, cuanto antes mejor « Jummp
Pingback: Desarrollo de software. Gerald Marvin Weinberg. Testing, ¿hasta dónde? « Jummp
Pingback: Desarrollo de software. La rigurosidad del testing « Jummp
Pingback: Desarrollo de software. Mutation Testing « Jummp
Pingback: Desarrollo de software. Bogdan Bereza-Jarocinski. Automatización del testing, romance « Jummp
Pingback: Desarrollo de software. Smoke testing « Jummp
Pingback: Desarrollo de Software. CMMI (Capability Maturity Model Integration). Nivel 3: Definido. Área de Proceso: Integración de producto « Jummp
Pingback: Desarrollo de software. Monkey testing « Jummp
Pingback: Desarrollo de software. Barry Boehm. Detección temprana de errores « Jummp
Pingback: Desarrollo de software. La corrección de errores no es inofensiva « Jummp
Pingback: Martin Fowler. Pruebas unitarias « Jummp