Herramientas para pruebas estáticas – ISTQB v4.0

  • Autor de la entrada:
  • Categoría de la entrada:ISTQB

Intro

El programa de estudios de ISTQB® CTFL tanto en su v3.1 (2018) como en la v4.0 (2023), trata el tema de las «Herramientas» en su capítulo 6. 

En la sección 6.1. Soporte de herramientas para las pruebas del capítulo 6 de la v4.0 no encontramos con una lista de ejemplos de los tipos de herramientas, entre las mismas tenemos las Herramientas para pruebas estáticas sobre la que me centraré en este artículo.

(2) Herramientas para pruebas estáticas

En la v4.0 (2023) las define como las herramientas que permiten realizar las revisiones y los análisis estáticos. 

Referencias en el programa de estudios

Ahora bien, para lograr un mejor entendimiento del alcance funcional que nos pueden ofrecer este tipo de herramientas, debemos comprender primero conceptualmente el tema, es decir, ¿Que se entiende por revisión y por análisis estático?

El concepto de ‘revisión técnica’ se encuentra en el siguiente apartado del programa de estudios:

3. Pruebas estáticas / 3.2.4. Tipos de Revisiones

La revisión técnica es realizada por revisores técnicamente calificados y dirigida por un moderador. Los objetivos de una revisión técnica son obtener consenso y tomar decisiones con respecto a un problema técnico, pero también detectar anomalías, evaluar la calidad y generar confianza en el producto de trabajo, generar nuevas ideas y motivar y permitir a los autores mejorar.

El concepto de ‘revisiones’ se encuentra en los siguientes apartados del programa de estudios:

1.1. ¿Qué es probar?

Las pruebas pueden ser dinámicas o estáticas. Las pruebas dinámicas implican la ejecución de software, mientras que las pruebas estáticas no lo hacen. Las pruebas estáticas incluyen las revisiones (ver capítulo 3) y el análisis estático. Las pruebas dinámicas utilizan diferentes tipos de técnicas de prueba y enfoques de prueba para derivar casos de prueba (consulte el capítulo 4).

Las pruebas no son solo una actividad técnica. También deben ser planificadas, gestionadas, estimadas, monitoreadas y controladas adecuadamente (véase el capítulo 5).

Los testers usan herramientas (consulte el capítulo 6), pero es importante recordar que las pruebas son en gran medida una actividad intelectual, que requiere que los testers tengan conocimientos especializados, utilicen habilidades analíticas y apliquen el pensamiento crítico y el pensamiento sistémico (Myers 2011, Roman 2018).

Comentario: estos tres párrafos nos permiten comprender el concepto principal de revisión y análisis estático, después en que no es sólo una actividad técnica ya que implica un proceso compuesto por una serie de actividades y que las mismas se pueden conducir por medio de herramientas.

2.1.1. Impacto del ciclo de vida del desarrollo de software en las pruebas

En los modelos de desarrollo secuencial, en las fases iniciales, los testers suelen participar en revisiones de requisitos, análisis de pruebas y diseño de pruebas. 

Comentario: este párrafo nos vuelve a reforzar el concepto de una actividad en la que no se ejecuta el software que se está desarrollando.

3.1. Conceptos básicos de las pruebas estáticas

El código, la especificación del proceso, la especificación de la arquitectura del sistema u otros productos de trabajo se evalúan mediante un examen manual (por ejemplo, revisiones) o con la ayuda de una herramienta (por ejemplo, análisis estático).

Comentario: este párrafo sigue reforzando no sólo que es una actividad en la que no se ejecuta el software sino además que conducimos todo a través de una herramienta. 

3.2.3. Roles y responsabilidades en las revisiones

3.2.4. Tipos de Revisiones

3.2.5. Factores de éxito para las revisiones

  • Realización de revisiones en trozos pequeños, para que los revisores no pierdan la concentración durante una revisión individual y/o la reunión de revisión (cuando se lleva a cabo)
  • Proporcionar comentarios de las revisiones a las partes interesadas y los autores para que puedan mejorar el producto y sus actividades (consulte la sección 3.2.1)
  • Hacer que las revisiones formen parte de la cultura de la organización, para promover el aprendizaje y la mejora de los procesos

Profundizando un poco más el alcance del concepto de pruebas estáticas

Las pruebas estáticas son un tipo de pruebas de software que se realizan sin ejecutar el código, centrándose no sólo en la revisión del código fuente, sino además también en la documentación y otros artefactos de software para encontrar defectos.

Beneficios

Algunos beneficios que se tienen al utilizar este tipo de herramientas:

  • Aumentan la eficiencia de las pruebas estáticas. Las herramientas pueden automatizar tareas involucradas en la revisión de código, permitiendo que los revisores se concentren en aspectos más complejos de la revisión.
  • Mejoran la precisión de las pruebas estáticas. Las herramientas pueden utilizar algoritmos y técnicas avanzadas para encontrar defectos que a los revisores humanos se les puedan pasar.
  • Reducen el costo de las pruebas estáticas. Las herramientas pueden ayudar a los equipos de pruebas a ser más eficientes, ahorrando costos directos e indirectos.

Riesgos

Algunos riesgos que debemos considerar al utilizar este tipo de herramientas:

  • Las herramientas pueden encontrar defectos, pero no todos los defectos. Mucho dependerá de su configuración, definición de parámetros, y otras acciones internas.
  • Las herramientas pueden identificar defectos que en realidad no existen. (falsos positivos)
  • Las herramientas pueden requerir un cierto nivel de experiencia para ser utilizadas de forma efectiva. 

Este último aspecto debería ser analizado previo a su implementación, por tal motivo las consideraciones pueden ser:

  • Seleccionar la herramienta adecuada a nuestras necesidades. 
  • Capacitar en el uso de la herramienta seleccionada a las personas (testers y/o desarrolladores) que tendrán el rol de revisor. 
  • Aplicar las herramientas como un complemento a las revisiones manuales. 

SonarQube como ejemplo de herramienta

Dentro de las herramientas del tipo open source más maduras tenemos a SonarQube que se centra en la calidad del código. Cabe mencionar que hay una gran variedad de herramientas de este tipo, aquí sólo me centré en SonarQube por una cuestión de familiaridad, nada más que eso.

Comparto algunas definiciones.

SonarQube es una plataforma de código abierto para la inspección continua de la calidad del código a través de diferentes herramientas de análisis estático de código fuente. Proporciona métricas que ayudan a mejorar la calidad del código de un programa permitiendo a los equipos de desarrollo hacer seguimiento y detectar errores y vulnerabilidades de seguridad para mantener el código limpio. Es una herramienta esencial para la fase de testing y auditoría de código dentro del ciclo de desarrollo de una aplicación y se considera perfecta para guiar a los equipos de desarrollo durante las revisiones de código. Soporta una etapa de inspección continua. SonarQube está escrito en Java, pero puede analizar y administrar código 29 lenguajes de programación importantes, incluidos c / c ++, PL / SQL, Cobol, etc., a través de conjuntos de reglas incorporados que pueden ser ampliados con varios complementos. 

( Referencia: https://sentrio.io/blog/que-es-sonarqube/ )

SonarQube es la herramienta líder para inspeccionar continuamente la calidad y seguridad del código de sus bases de código y guiar a los equipos de desarrollo durante las revisiones de código. SonarQube, que abarca 27 lenguajes de programación y se combina con su cartera de software existente, proporciona una guía de solución clara para que los desarrolladores comprendan y solucionen los problemas, y para que los equipos en general puedan ofrecer un software mejor y más seguro. Con más de 225.000 implementaciones que ayudan a pequeños equipos de desarrollo, así como a organizaciones globales, SonarQube proporciona los medios para que todos los equipos y empresas de todo el mundo posean e impacten la calidad y seguridad de su código. 

( Referencia: https://hub.docker.com/_/sonarqube )

Beneficios adicionales

Utilizando este tipo de herramientas, se consiguen beneficios en cuanto al  análisis Pull Request (PR) ya que se puede obtener un aumento de velocidad significativo, y acelerar el análisis completo del proyecto en Git. Este párrafo está vinculado con proyectos de automatización de testing.

( Referencia: https://sentrio.io/blog/que-es-sonarqube/ )

Herramientas aranceladas vs open source.

  • Las herramientas aranceladas suelen ofrecer soporte técnico, lo que puede ser útil para los equipos de pruebas que necesitan ayuda para configurar y utilizar las herramientas. Sin embargo SonarQube tiene una gran comunidad que la sostiene y la va evolucionando.
  • Las herramientas aranceladas suelen recibir actualizaciones periódicas con nuevas funciones y correcciones de errores.Mismo comentario que el anterior y esto se puede notar por su madurez en el mercado.
  • Las herramientas aranceladas suelen ser costosas.

 

Comentario final

Si el contenido de este artículo te ha servido, te agradecería que me sigas en LinkedIn ya que publico periódicamente contenidos y podrás dejarme likes, comentarios y compartir el artículo con tus contactos, y de esa forma me ayudas. Desde ya, muchas gracias.


Artículos relacionados

Herramientas para gestionar pruebas de software | Parte 1

Gus Terrera

Apasionado por el agile testing y la ia.