El análisis de código es una técnica que permite revisar el código para encontrar problemas o evaluarlo para poder mejorarlo significativamente.
El objetivo principal del code analysis es minimizar la dificultad de comprensión de nuestro proyecto para que, a posteriori, sea mucho más fácil su mantenimiento.
Los análisis se pueden realizar mediante dos métodos:
- Análisis estático: El código se analiza sin necesidad de ejecutar, permite ver errores de forma temprana y evita posibles revisiones posteriores, permitiéndonos ahorrar un tiempo valioso. Sin embargo, puede dar falsos positivos.
- Análisis dinámico: El código se analiza en ejecución, por lo que es más lento y requiere testing, que lo veremos a continuación, pero a cambio, permite ver otro tipo de errores imposibles para el método static, como los generados en el poliformismo.
Herramientas para el Code Analysis
Una herramienta muy interesante de Static Code Analysis es el ReSharper, aplicable para Visual Studio, que nos ahorra mucho tiempo a la hora de navegar por el código y muestra alternativas y errores que de otra manera no podrías ver.
Su inconveniente es que es de pago, pero tienes un free trial de treinta días para probarlo.
Así mismo, tenemos IntelliTrace, otra herramienta para Visual Studio. En este caso es dinámica, permite registrar eventos y llamadas a distintos puntos de nuestra aplicación para ver un seguimiento y examinar el estado tanto de las variables como de la pila de llamadas que se han realizado.
Testing
El testing es una actividad en el proceso de calidad del software que permite obtener información de éste, tanto estático, en el que no es necesario ejecutar el código, como dinámico, en el que sí es necesario, como ya hemos explicado anteriormente.
Una buena práctica del testing estático es el mantenimiento y revisión de la documentación, muy importante en desarrollos de software grandes donde suele haber cambios en los requisitos y en los que los developers necesitan tener todo el negocio claro para poder llevarlo a cabo de forma correcta.
Tipos de pruebas
Para el testing dinámico, se suelen realizar dos tipos de pruebas:
- Pruebas de caja blanca: Se centran en detalles procedimentales, en los que se introducen las entradas para cubrir todos los flujos posibles del código y esperar una salida determinada. El inconveniente que tiene es que, si se modifica la implementación, se deberán cambiar también las pruebas.
- Pruebas de caja negra: Estas pruebas hacen hincapié en que las salidas son correctas, pero sin prestar atención en cómo lo hace. Por lo tanto, se busca independencia entre los módulos facilitando su implementación, permitiendo abordar el fallo más fácilmente.
Independientemente de la generación de pruebas de testing, siempre es necesario y recomendable tener un control de calidad mediante un equipo de QA. Es muy importante llevar a cabo todas las tareas posibles que permitan tener un mayor control de la calidad del producto, para evitar los problemas y los fallos, ya que, sobre todo en proyectos muy grandes, es complicado controlar todos los flujos posibles del código y pueden llegar las sorpresas.
¡Hasta aquí todo por hoy!
Espero que os haya servido de ayuda este post y que lo apliquéis en vuestros proyectos.
¡Hasta otra!