Sistemas cognitivos en el aseguramiento de la Calidad de Software

2 octubre, 2018

sistema cognitivo

Testing de Software

Fran enciende su ordenador y accede a su área de trabajo a través de un sistema de seguridad biométrica. Nada...

[contact-form-7 id="22307" title="Formulario Blog"]

Fran enciende su ordenador y accede a su área de trabajo a través de un sistema de seguridad biométrica. Nada más establecerse la conexión, una amable voz le dice:

  • “Buenos días, Fran. Parece que anoche hubo una incidencia en el sistema de gestión de nóminas que está en producción. El equipo de desarrollo ya lo ha solucionado, pero quieren que lo verifiques antes de subirlo a producción. Te muestro la incidencia, la solución del equipo de desarrollo y las pruebas de aceptación del módulo afectado que se ejecutaron para la última release”.
  • “Muchas gracias Debbie”, responde Fran, pasando a revisar la incidencia con rapidez.

Fran pronto se da cuenta de que el error se debe a una nueva forma de contratación que entraba en vigor el mes anterior y para la cual no se había creado ninguna historia de usuario en la pasada release. Afortunadamente, se trata de un cambio menor que el área de Desarrollo puede solucionar con rapidez. Al tratarse de una nueva funcionalidad, Fran crea nuevos casos de prueba con una nueva casuística, ejecuta los casos de prueba y tras obtener unos resultados positivos, actualiza el repositorio de pruebas. En ese momento Debbie le dice:

  • “Fran, veo que has añadido nuevas pruebas y que estas han sido positivas. ¿Quieres que avance el estado de la incidencia para que Desarrollo pueda subir la aplicación a producción?”.
  • “Sí, Debbie, muchas gracias”.

Esta puede ser la escena que, un día cualquiera dentro de no mucho tiempo, puede vivir Fran gracias a la introducción de sistemas cognitivos en su actividad diaria. Pero, ¿qué es un sistema cognitivo?

La cognición es una característica inherente al ser humano que le otorga la capacidad de razonar, tomar decisiones o resolver problemas a partir de la información que procesan sus sentidos pasada por el tamiz de las experiencias adquiridas y los sentimientos.

Traslademos, ahora, esta capacidad a un sistema informático. Un sistema cognitivo será aquel que sea capaz de tomar decisiones o resolver problemas a partir de la información que obtiene de su contexto, combinada con la información histórica que almacena (conocimiento) y las reglas que se han programado (razonamiento). Además, estos sistemas cuentan con la capacidad de aprender y adaptarse al contexto en el que se encuentran. El contexto de un sistema lo forman sus usuarios, sus estados internos y el resto de sistemas con los que interactúa, de los que obtiene información a través de mecanismos de monitorización de la actividad y de diferentes interfaces de entrada de datos: gráficos, textuales o de voz. Un sistema cognitivo será capaz de detectar cambios en su contexto y evaluar el impacto que puedan tener estos en sus procesos de razonamiento y de resolución de problemas para dar la respuesta adecuada en cada momento.

Veamos algunos de los posibles casos de uso que pueden darse con un sistema cognitivo de aseguramiento de la calidad. Imaginemos que estamos implantado el sistema cognitivo en un proyecto de desarrollo que sigue SCRUM. Además, el proyecto cuenta con un servicio de software que monitoriza y registra las actividades que se llevan a cabo durante todo el ciclo de vida. En este contexto, el sistema cognitivo ayudará de diferentes maneras:

  • Podrá detectar inconsistencias en la especificación de las historias de usuario (redacción no ajustada a unas reglas de estilo, falta de criterios de aceptación o ausencia de valoraciones – “story points” o “business value”) e impedir el lanzamiento de un Sprint hasta que no se corrijan las incidencias. El sistema podrá identificar también historias previas similares y recomendar al usuario el uso de las valoraciones realizadas en estas.
  • Impedirá que un desarrollador realice una “pull request” dentro de un Sprint si este no ha incluido y ejecutado previamente sus pruebas unitarias. Además, propondrá al desarrollador un conjunto mínimo de pruebas que le permitirá seguir con el proceso.
  • En la elaboración de un plan de validación, el sistema ofrece al ingeniero de SQA conjuntos de pruebas de proyectos previos que, por similitud con las historias de usuario actuales, tendrían cabida en el nuevo plan de pruebas. Esto se podría acompañar, además, con estimaciones del tiempo y recursos necesarios para la ejecución de plan.
  • El sistema podría informar en tiempo real sobre la necesidad de intensificar algún determinado tipo de pruebas ante las cifras obtenidas en los análisis estáticos de código que se realizan en cada integración. Por ejemplo, recomendando la ejecución de determinados tipos de pruebas de seguridad ante módulos críticos con potenciales fallos de seguridad en diseño.
  • En la realización de pruebas UX (Experiencia de Usuario), el sistema cognitivo procesa las opiniones que los usuarios han dado en lenguaje natural, realiza un análisis de sentimiento sobre estas y las clasifica. Automáticamente, el sistema podría realizar un plan de mejora basado en esta clasificación.

Como hemos visto, los sistemas cognitivos, gracias a la aplicación de los últimos avances en Inteligencia Artificial y Big Data, serán capaces de dar asistencia a todos los actores involucrados en el desarrollo de soluciones software, sin importar la metodología o la tecnología utilizadas. Además, ayudarán a construir sistemas más seguros y eficaces en menos tiempo en contextos cada vez más complejos y exigentes.

Por Aitor Elorriaga

Consultor de MTP

Ver más historias