
Vol. 3, No. 1, (Enero 2019), 32-44 ISSN 2550-6730
1. Introducción
Con el aumento de la complejidad en el desarrollo de los sistemas informáticos, las exigencias en tiempo
y calidad de los clientes y la dispersión de tecnologías y métodos empleados en los procesos de desarrollo
de software actuales, las investigaciones acerca del proceso de prueba y su efectividad cobran especial
significación [1]. Son múltiples las investigaciones y propuestas dirigidas a mejorar la calidad de los pro-
cesos y productos vinculados con la industria de software.
En el caso particular de las pruebas los trabajos se concentran en tres grupos de propuestas: en el primero
están las dirigidas a la gestión de los procesos de pruebas, su entorno de integración continua basado en
software libre para el desarrollo de aplicaciones Java, mejora y vinculación con el proceso de desarrollo
[2] [3] [4] [5] [6] [7] [8] [9] [10] [11], en el segundo las enfocadas en la ejecución automática de los diferentes
tipos de pruebas [12] [13] [14] y en el tercero las que se centran en asistir la actividad del diseño de las
pruebas [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [9] [33] [34].
Relacionadas con el primer grupo se pueden encontrar soluciones de integración continua de aplicaciones
que incorporan al proceso de desarrollo las pruebas, como un elemento indispensable para conseguir un
desarrollo de aplicaciones de calidad. También se abordan soluciones de frameworks y herramientas que
abordan la gestión de procesos de pruebas tercerizadas o ejecutados por equipos no comprometidos con
el desarrollo.
Respecto al segundo grupo existen diferentes herramientas como JUnit [13], NUnit [14] y PHPUnit
[12] que permiten ejecutar pruebas unitarias de forma automática, pero carecen de funcionalidades que
asistan al desarrollador en el diseño de los casos de pruebas. Ello se debe a que, a pesar de que estas he-
rramientas crean automáticamente una clase de prueba con un método de prueba vacío, el desarrollador
debe llenar el método de prueba y crear el resto de los métodos que necesite. Ante esta problemática
los programadores optan por hacer pruebas unitarias de forma empírica, sin tener en cuenta todos los
posibles caminos de prueba.
Por último, en el caso del diseño de las pruebas, las propuestas van desde la utilización de algoritmos de
optimización e inteligencia artificial para resolver el problema de la explosión combinatoria en la genera-
ción de casos de pruebas, hasta propuestas de frameworks para la automatización de algunos elementos
del proceso. En este último caso las propuestas son prototipos para validar la solución teórica, pero
no se han incorporado a las soluciones comerciales los elementos de generación de los casos de prueba,
de forma tal que puedan ser utilizados por desarrolladores y equipos de probadores, reduciendo así el
esfuerzo vinculado con esta actividad de diseño que es altamente costosa. Para abordar soluciones de
este tipo es necesario integrar los tres grupos de trabajos que aparecen en la bibliografía en entornos
de trabajo, es decir hacer propuestas a las empresas que integren los entornos de integración continua
con herramientas de generación de casos de pruebas y herramientas de ejecución automática de pruebas,
todo encaminado a detectar defectos de forma temprana.
Este artículo presenta una propuesta para hacer posible esta integración a través de un conjunto de
buenas prácticas que pueden permitir a la empresa incorporar a su proceso de desarrollo técnicas y he-
rramientas de integración continua soportadas en generación y ejecución automáticas de pruebas.
2. Materiales y Métodos
Un entorno de ejecución automática de pruebas tiene tres componentes: el entorno de integración con-
tinua de aplicaciones, las herramientas de generación automática de casos de prueba y las herramientas
de ejecución automática de pruebas.
Un entorno de Integración Continua (IC) es la integración de varias herramientas, donde cada una cumple
un papel importante en algunas etapas del desarrollo de software (Prueba, Implementación, Despliegue)
con un enfoque en esta práctica. Actualmente se pueden encontrar muchas herramientas para desplegar
un entorno de IC, cada una con sus particularidades, pero principalmente se dividen en: software pro-
pietario o privado y software libre o de código abierto [35].
http://revistas.utm.edu.ec/index.php/Informaticaysistemas 33