Algoritmo metaheurístico para la construcción de arreglos de cobertura mixtos de diferentes niveles de fuerza a usar en el diseño de casos de prueba de software de caja negra

Introducción— Actualmente, la calidad del software en una característica fundamental para asegurarse un espacio en el mercado global que día a día es más competitivo y exigente. Las pruebas de software permiten a las empresas desarrolladoras de software encontrar y corregir fallos y con ello elevar...

Full description

Autores:
López Realpe, Andrés Rodrigo
Muñoz Ordoñez, Jorge Armando
Cobos Lozada, Carlos
Tipo de recurso:
Article of journal
Fecha de publicación:
2022
Institución:
Corporación Universidad de la Costa
Repositorio:
REDICUC - Repositorio CUC
Idioma:
eng
OAI Identifier:
oai:repositorio.cuc.edu.co:11323/12362
Acceso en línea:
https://hdl.handle.net/11323/12362
https://doi.org/10.17981/ingecuc.18.2.2022.18
Palabra clave:
Covering Arrays
Mixed Covering Arrays
Metaheuristic algorithms
Greedy algorithms
Simulated Annealing
Arreglos de Cobertura
Arreglos de Cobertura Mixtos
Algoritmos Metaheurísticos
Algoritmos Codiciosos
Recocido Simulado
Rights
openAccess
License
INGE CUC - 2022
Description
Summary:Introducción— Actualmente, la calidad del software en una característica fundamental para asegurarse un espacio en el mercado global que día a día es más competitivo y exigente. Las pruebas de software permiten a las empresas desarrolladoras de software encontrar y corregir fallos y con ello elevar la calidad de sus productos. El costo de las pruebas hoy se estima en un 50% del costo total del desarrollo de software, por esto se hace necesario encontrar formas menos costosas que garanticen altos niveles de detección de fallos. En este escenario, las pruebas de caja negra tienen un papel fundamental y dentro de estas pruebas los enfoques combinatoriales son una de las mejores opciones. En las pruebas combinatorias se hace necesario que los usuarios probadores (testers) cuenten con una herramienta que les proporcione el menor número de casos de prueba con la mayor cobertura (detección de fallos) de acuerdo con los parámetros del método (procedimiento, función u otro) que desea probar, y este es el objetivo principal de este trabajo. Objetivo— En este artículo se presenta un algoritmo que soporta la generación de casos de prueba en pruebas de caja negra basado en la creación de Arreglos de Cobertura Mixta (MCA). Estos arreglos permiten generar el menor número de casos de prueba requeridos para probar una unidad de código con la mayor cobertura requerida (mayor posibilidad de detectar fallos). El algoritmo propuesto construye una solución inicial basado en un algoritmo codicioso (greedy) y luego mejora esta solución a través de un proceso iterativo orientado por recocido simulado (algoritmo metaheurístico) y tres formas de definir soluciones vecinas. Metodología— La investigación se realizó siguiendo el Patrón de Investigación Iterativa propuesto por Pratt. Primero se identificaron los principales problemas reportados en el estado del arte para la construcción de MCA, luego se realizó una revisión de las propuestas de solución a estos problemas. Después se creó un primer algoritmo y luego se fue modificando en forma iterativa este algoritmo, incluyendo y removiendo componentes de acuerdo con resultados experimentales de su funcionamiento. Cuando se obtuvo la versión deseada, se realizó un proceso de afinamiento de parámetros y se comparó con los mejores resultados presentados en la literatura, resultados obtenidos por diferentes algoritmos. Resultados— El algoritmo propuesto obtiene MCA que son competitivos (en promedio 3 casos de prueba adicionales) frente a los mejores reportados en el estado del arte en un tiempo corto de ejecución, aspecto que es de especial interés para los probadores de software. Conclusiones— Se confirmó que el enfoque codicioso y metaheurístico basado en recocido simulado es una buena alternativa para la construcción de un MCA. Los algoritmos de construcción de soluciones vecinas son claves para encontrar el MCA requerido y en un menor tiempo de ejecución.