Para comenzar con algo ligero, propongo una cita de Aristóteles que, en mi opinión, se ajusta de manera muy precisa a las metas que persigue la práctica del testing para asegurar la calidad del software de una organización, o quality assurance (QA, por sus siglas en ingles). La cita dice: “El objetivo de los sabios no es asegurar el placer, sino evitar el dolor”.

Sin duda, la cita que encabeza este artículo es muy acertada si reflexionamos sobre la dependencia, prácticamente total, que tienen hoy en día las organizaciones de la calidad de su tecnología y de sus aplicaciones de negocio. Si a ello le añadimos el alto nivel de digitalización de los clientes, el “dolor” mencionado en la cita puede llegar a ser catástrofe sin una adecuada gestión de la QA.

Todo este panorama ha creado un escenario tremendamente competitivo en aquellos mercados en los que la satisfacción del cliente y su experiencia de uso desde cualquier canal se ha convertido en uno de los factores clave del éxito. Esto ha provocado que, si hasta hace relativamente poco las compañías lanzaban una nueva versión del software un par de veces al año, o trimestralmente, ahora las actualizaciones y nuevas versiones se producen con periodicidades significativamente más cortas. Esto adquiere aún más relevancia si se tiene en cuenta la diversidad de plataformas que existen (móviles, tablets, web, watches, escritorio…) que disparan la combinatoria necesaria de pruebas para garantizar la calidad del software desarrollado.

Todo esto obliga a gestionar los recursos de forma óptima, a priorizar las pruebas y las comprobaciones de calidad… En definitiva, obliga a aplicar inteligencia para agilizar los procesos de QA con la máxima productividad. De hecho, el término inteligencia proviene del latín intelligentia, que significa escoger (eligere) entre (inter) diversas alternativas. La posibilidad de realizar modelos cognitivos basados en técnicas de IA, combinada con técnicas estadísticas, de aprendizaje y de uso de los datos históricos de una organización, abre sin duda las puertas de la predicción artificial (realizada por una máquina) para evaluar alternativas y decidir de forma asistida en el ámbito de la QA.

Esta nueva realidad permite sacar el máximo partido a los datos y desarrollar asistentes artificiales de testing y QA para tomar las mejores decisiones posibles, anticiparnos a los problemas e incluso ejecutar de forma automática determinadas actividades de QA.

Se trata de aplicar inteligencia para agilizar los procesos de QA con la máxima productividad

Ingredientes necesarios

Para predecir se requiere experiencia (acumulación de datos y de decisiones satisfactorias o erróneas), así como conocimiento previo y aprendizaje continuo, junto con capacidad de razonamiento. Desde luego, como ocurre en la vida real, la experiencia es un grado, pero la clave está en cómo manejarla para sacar de ella conclusiones o, incluso, anticiparnos y predecir (verlas venir). El valor añadido es que podemos simular estos procedimientos humanos para el ámbito concreto de actividades de QA a través de algoritmos, máquinas y chatbots que asistan las decisiones humanas simulando su mecanismo cognitivo, pero ampliando sus capacidades.

En el ámbito de la QA, el paso del tiempo permite ir ampliando los datos acumulados sobre las actividades del desarrollo de software, su especificación, la experiencia de los usuarios, valoraciones de satisfacción, incidencias en producción, soporte al cliente, etc. Es importante sacar el máximo partido a esta información, más allá incluso de las posibilidades que ofrecen los paneles de control que ayudan a tomar decisiones en contextos de business intelligence.

La IA permite llevar el tratamiento de estos datos más allá. Aunque la limitación de recursos impide que podamos probarlo todo, sí podemos establecer una relación implícita entre los datos para decidir qué pruebas hay que ejecutar de forma priorizada o qué inversión se debe realizar en testing y calidad. Aplicar técnicas de predicción (“qué pasaría si…”) permite llegar a conclusiones sólidas a partir del conocimiento oculto que encierran los datos y el historial de aciertos y errores. Teniendo en cuenta la cantidad tan ingente de información, y su complejidad, aquí es donde debemos apoyarnos en las máquinas y los algoritmos de IA. Esto abre todo un abanico de opciones a la hora de manejar información relacionada, tratada e integrada con modelos cognitivos para predecir tendencias, riesgos y esfuerzos. Además, esto puede unirse con la automatización en ámbitos como la selección de pruebas en función del riesgo, la asignación de recursos, etc.; además, podemos hacer que estas acciones tengan en cuenta la información disponible y aprendan (machine learning) de estas observaciones. Estas capacidades ya existen, ya es una realidad.

El objetivo es llegar a con­clusiones sólidas a partir del conocimiento oculto en los datos

QA e inteligencia artificial

Una de las mayores ventajas de la IA es que habilita y amplía las capacidades de otras tecnologías, como es el caso de big data. De hecho, permite “dar sentido” a estas grandes cantidades de datos estructurados y no estructurados. En el entorno de la QA, nosotros contamos con un laboratorio de innovación donde recientemente hemos empezado a potenciar el uso de estas tecnologías, con un impacto positivo en distintas organizaciones a la hora de de optimizar los procesos de testing y asegurar la calidad.

Hay cuatro aspectos clave a la hora de aplicar la IA a estos procesos.

La recopilación automática de todos los datos necesarios, que constituyan un repositorio vivo de conocimiento. Estos datos, en la mayoría de las organizaciones, se distribuyen en distintas aplicaciones y repositorios que deben tratarse en una plataforma común.

La interpretación de los datos para poder obtener información analizable.

El desarrollo y uso de modelos cognitivos (con predicción, estadística y técnicas de aprendizaje tales como el machine learning), que aportan la posibilidad de predecir, razonar y tomar decisiones de forma artificial. En términos de pruebas y control de calidad, los modelos cognitivos basados en IA permiten simular las capacidades de razonamiento inteligente y gestionar el riesgo asociado a las inversiones y decisiones en calidad, así como optimizar las tareas o predecir futuros indicadores.

Por último, emprender acciones automatizadas basadas en las decisiones obtenidas computacionalmente y, opcionalmente, confirmadas por un humano.

Como ejemplo, se puede imaginar una máquina capaz de priorizar automáticamente (a partir de la probabilidad predicha de encontrar defectos) pruebas críticas para un software, y ejecutarlas cada noche en función de los recursos disponibles, así como asignar su ejecución manual —a cargo de profesionales— teniendo en cuenta su experiencia en distintos ámbitos de la prueba. Hoy, esto ya es posible.

Figura1. The cognitive QA.