La cobertura de código es un concepto que afecta a cualquier aplicación de software existente, desde programas para PC, apps para móviles, la última aplicación para tu SmartTV o el firmware de un router. No es un concepto que dependa de si el software en cuestión se conecta a Internet. Y sí, nos afecta a todos. Hoy veremos qué es y cómo convivir con ella.
De forma genérica, podemos considerar que el ciclo de vida de un proyecto software se compone de las siguientes etapas:
- Análisis de requisitos
- Diseño
- Codificación
- Pruebas
- Mantenimiento
Cuando un nuevo programa sale al mercado, el producto se encuentra en la fase 5 del ciclo. Es decir, el producto ya ha sido probado. Y pese a que ya está a disposición de los clientes, muchas veces en productos complejos el desarrollador lo sigue testando pro-activamente en diferentes escenarios de pruebas en busca de errores aún no detectados.
Estas diferentes pruebas realizadas por el desarrollador dan lugar a que las distintas porciones de código de las que se compone el software se prueben continuamente.
Sin embargo, hay zonas de código que en proporción están más probadas que otras. La cobertura de código mide esa proporción de la que hablamos en diferentes casos.
Mediciones de cobertura de código
Algunas de las más habituales son
- Qué porciones o líneas de código son ejecutadas en las pruebas y cuáles no.
- El porcentaje de veces que una línea de código es ejecutada sobre el total de líneas.
- El tiempo de cómputo empleado en una sección de código respecto del tiempo total.
El famoso proyecto LibreOffice es un ejemplo de uso de LCOV como herramienta de medición.
Como resultado de las pruebas, estas mediciones dan lugar a la existencia de zonas de código cuya ejecución es preferible frente al resto, ya que al haber sido probadas más veces, son consideras más seguras y con una menor probabilidad de encontrar errores inesperados: los denominados bugs.
Cómo evitar los bugs en zonas de poca cobertura de código
Ahora que sabemos un poco más sobre la cobertura de código, quizás llegue el momento de preguntarnos qué podemos hacer como usuarios de software para sortear los bugs de esas porciones de código menos probadas y con menor cobertura.
1. Seguir la misma secuencia de acciones que han funcionado correctamente en el pasado
La primera recomendación es aprovechar la experiencia anterior con el software que estamos empleando y tratar de no variar la manera en la que lo usamos. Es decir, si, por ejemplo, llevamos tiempo utilizando una misma aplicación en nuestra SmartTV para ver una serie, sería recomendable seguir siempre la misma secuencia de pasos (menús, pantallas, botones…) para visualizarla, dado que hemos comprobado que de esa forma la aplicación se comporta correctamente.
Si decidimos un día cambiar el procedimiento, nos podemos encontrar con la sorpresa de que la aplicación se cuelgue y nos toque desenchufar la televisión para reiniciar el sistema, lo que supone una molestia.
2. Empatizar con el desarrollador
La segunda recomendación sería la empatía hacia el desarrollador y no buscarle los tres pies al gato a la aplicación. Si estás explorando por primera vez una nueva aplicación y necesitas que no dé problemas al principio, intenta recorrer los menús y configurarla de la forma más intuitiva posible, a menos que quieres actuar como un beta-tester improvisado. Una buena pista para acercarnos al punto de vista del desarrollador es siempre echar una ojeada a su manual de uso.
Extrapolándolo al entorno de un router en producción, lo ideal es definir las plantillas de uso (ya sea en CLI, SNMP o web) con un tiempo prudencial, lo que permite probarlo previamente en diferentes escenarios de manera homogénea, y asegurar la mayor cobertura de código posible en las zonas críticas y reducir los errores potenciales.
Hay que reconocer que es prácticamente imposible que un software esté 100% libre de errores. Por eso las empresas que desarrollo de software como Teldat, también invierten en tener un equipo de soporte de calidad que minimice estos problemas no detectados. Además, el software de Teldat es un producto complejo el cual pasa exhaustivas pruebas, tanto de forma previa a su liberación, como de forma pro-activa una vez liberadas.