<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1815-5936</journal-id>
<journal-title><![CDATA[Ingeniería Industrial]]></journal-title>
<abbrev-journal-title><![CDATA[Ing. Ind.]]></abbrev-journal-title>
<issn>1815-5936</issn>
<publisher>
<publisher-name><![CDATA[Facultad de Ingeniería Industrial, Instituto Superior Politécnico José Antonio Echeverría, Cujae.]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1815-59362016000200009</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Generación de combinaciones de valores de pruebas utilizando metaheurísticas]]></article-title>
<article-title xml:lang="en"><![CDATA[Generation of combinations of test values using metaheuristics]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Fernández-Oliva]]></surname>
<given-names><![CDATA[Perla]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Cantillo-Terrero]]></surname>
<given-names><![CDATA[William]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Delgado-Dapena]]></surname>
<given-names><![CDATA[Martha Dunia]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Rosete-Suárez]]></surname>
<given-names><![CDATA[Alejandro]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Yáñez-Márquez]]></surname>
<given-names><![CDATA[Cornelio]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Instituto Superior Politécnico José Antonio Echeverría, CUJAE Facultad de Ingeniería Informática ]]></institution>
<addr-line><![CDATA[La Habana ]]></addr-line>
<country>Cuba</country>
</aff>
<aff id="A02">
<institution><![CDATA[,Centro de Investigación en Computación del Instituto Politécnico Nacional  ]]></institution>
<addr-line><![CDATA[México, D.F ]]></addr-line>
<country>México</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>08</month>
<year>2016</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>08</month>
<year>2016</year>
</pub-date>
<volume>37</volume>
<numero>2</numero>
<fpage>200</fpage>
<lpage>207</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S1815-59362016000200009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S1815-59362016000200009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S1815-59362016000200009&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[La fase de prueba es un proceso difícil que consume un porcentaje elevado del costo en cuanto al tiempo del proceso de desarrollo del software. La finalidad de las pruebas es determinar si los productos desarrollados cumplen los requisitos acordados con los usuarios y clientes en las especificaciones. Por ello se necesitan los procesos, métodos y herramientas que permitan obtener buenos conjuntos de pruebas de un sistema. En este artículo se presenta un componente que combina automáticamente valores para realizar pruebas unitarias y para eso se aplican algoritmos metaheurísticos. La solución propuesta ha sido probada en un caso de estudio y comparada con los valores obtenidos por otros algoritmos propuestos por autores que trabajan el tema en la comunidad científica. El componente permite obtener un conjunto reducido de valores de prueba, en un tiempo de ejecución menor y con una cobertura del 100%.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[The test phase is a difficult process that consumes a large percentage of the cost in terms of the time of the process of software development. The purpose of the tests is to determine if the developed products meet the requirements accord with the users and customers on specifications. Therefore, the processes, methods and tools that allow obtain good sets of test of a system are needed. This article introduces a component that automatically combines values to perform unit tests and for that were applied metaheuristics algorithms. The proposed solution has been tested in a case study, and was compared with values obtained through other algorithms proposed by authors who work the issue in the scientific community. The component allows to obtain a reduced set of test values, with less time of execution and a coverage of 100%.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Combinación automática de valores]]></kwd>
<kwd lng="es"><![CDATA[algoritmos de optimización]]></kwd>
<kwd lng="es"><![CDATA[algoritmos metaheurísticos]]></kwd>
<kwd lng="es"><![CDATA[pruebas unitarias]]></kwd>
<kwd lng="en"><![CDATA[Automatic combination of values]]></kwd>
<kwd lng="en"><![CDATA[optimization algorithms]]></kwd>
<kwd lng="en"><![CDATA[metaheuristics algorithms]]></kwd>
<kwd lng="en"><![CDATA[unit tests]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[  	    <p align="right" ><font face="verdana" size="2"><b>&nbsp;&nbsp;</b> <b>ART&Iacute;CULO ORIGINAL</b></font></p>  	     <p align="right" ><font face="verdana" size="2"><b>&nbsp;</b></font></p>  	     <p ><font face="verdana" size="2"><b><font size="4">Generaci&oacute;n    de combinaciones de valores de pruebas utilizando metaheur&iacute;sticas</font></b></font></p>     <p ><font face="Verdana" size="4"><font size="3"><b>&nbsp;</b></font></font></p>     <p ><b><font face="Verdana" size="3">Generation    of combinations of test values using metaheuristics</font></b></p>     <p ><b><font face="Verdana" size="3">&nbsp;</font></b></p>  	     <p>&nbsp;</p>    <p align="justify"><font face="verdana" size="2"><b>Perla&nbsp; Fern&aacute;ndez&#45;Oliva<sup>I</sup>,    William Cantillo&#45;Terrero<sup>I</sup>, Martha Dunia Delgado&#45;Dapena<sup>I</sup>,    Alejandro Rosete&#45;Su&aacute;rez<sup>I</sup>, Cornelio Y&aacute;&ntilde;ez&#45;M&aacute;rquez<sup>II</sup></b></font></p>  	    <p align="justify"><font face="verdana" size="2"><sup>I</sup> Instituto Superior    Polit&eacute;cnico Jos&eacute; Antonio Echeverr&iacute;a, CUJAE. Facultad de    Ingenier&iacute;a Inform&aacute;tica. La Habana, Cuba.    ]]></body>
<body><![CDATA[<br>   </font><font face="verdana" size="2"><sup>II</sup> Centro de Investigaci&oacute;n    en Computaci&oacute;n del Instituto Polit&eacute;cnico Nacional, M&eacute;xico,    D.F. M&eacute;xico.</font></p>     <p align="justify">&nbsp;</p>     <p align="justify">&nbsp;</p>  	 <hr>     <p ><font face="verdana" size="2"><b>RESUMEN</b></font></p>  	    <p ><font face="verdana" size="2">La fase de prueba es un proceso dif&iacute;cil que consume un porcentaje elevado del costo en cuanto al tiempo del proceso de desarrollo del software. La finalidad de las pruebas es determinar si los productos desarrollados cumplen los requisitos acordados con los usuarios y clientes en las especificaciones. Por ello se necesitan los procesos, m&eacute;todos y herramientas que permitan obtener buenos conjuntos de pruebas de un sistema. En este art&iacute;culo se presenta un componente que combina autom&aacute;ticamente valores para realizar pruebas unitarias y para eso se aplican algoritmos metaheur&iacute;sticos. La soluci&oacute;n propuesta ha sido probada en un caso de estudio y comparada con los valores obtenidos por otros algoritmos propuestos por autores que trabajan el tema en la comunidad cient&iacute;fica. El componente permite obtener un conjunto reducido de valores de prueba, en un tiempo de ejecuci&oacute;n menor y con una cobertura del 100%.</font></p>  	    <p ><font face="verdana" size="2"><b>Palabras clave:</b> Combinaci&oacute;n autom&aacute;tica de valores, algoritmos de optimizaci&oacute;n, algoritmos metaheur&iacute;sticos, pruebas unitarias.</font></p>  	     <p ><font face="verdana" size="2"></font><font face="verdana" size="2"><b>ABSTRACT</b></font></p>  	    <p ><font face="verdana" size="2">The test phase is a difficult process that consumes a large percentage of the cost in terms of the time of the process of software development. The purpose of the tests is to determine if the developed products meet the requirements accord with the users and customers on specifications. Therefore, the processes, methods and tools that allow obtain good sets of test of a system are needed. This article introduces a component that automatically combines values to perform unit tests and for that were applied metaheuristics algorithms. The proposed solution has been tested in a case study, and was compared with values obtained through other algorithms proposed by authors who work the issue in the scientific community. The component allows to obtain a reduced set of test values, with less time of execution and a coverage of 100%.</font></p>  	     <p ><font face="verdana" size="2"><b>Key words:</b> Automatic combination of values,    optimization algorithms, metaheuristics algorithms, unit tests.</font></p> <hr>     <p >&nbsp;</p>     ]]></body>
<body><![CDATA[<p ><font face="verdana" size="2"><b><font size="3">INTRODUCCI&Oacute;N</font></b></font></p>  	    <p ><font face="verdana" size="2">Seg&uacute;n Myers las pruebas son muy costosas por lo que se dejan para las &uacute;ltimas etapas del proyecto y no se realizan con la calidad necesaria &#91;1&#93;. No obstante, existen m&uacute;ltiples propuestas que se centran en la planificaci&oacute;n y c&aacute;lculo de los medios indispensables para realizarlas &#91;2; 3; 4&#93;. As&iacute; como a la generaci&oacute;n autom&aacute;tica de escenarios, y valores de prueba<a href="#_ftn1" name="_ftnref1" title="">&#91;1&#93;</a>&#91;5; 6; 7&#93;. La generaci&oacute;n autom&aacute;tica de un conjunto de datos de prueba que permita detectar los errores de un programa dado en la fase de prueba, es una tarea de suma importancia que requiere un alto costo computacional y que generalmente es dif&iacute;cil de resolver &#91;8; 9&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">Harmany McMinn exploran &nbsp;respuestas que brindan las tem&aacute;ticas de la Ingenier&iacute;a de Software <b>Basada en B&uacute;squedas</b> para dar soluci&oacute;n a problemas combinatorios utilizando m&eacute;todos de optimizaci&oacute;n &#91;10; 11; 12; 13&#93;. Existen trabajos recientes que automatizan la realizaci&oacute;n de las pruebas de software con respecto a la generaci&oacute;n de escenarios y valores de prueba, utilizando t&eacute;cnicas para evadir la explosi&oacute;n combinatoria &#91;10; 14; 15&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">Ribeiro y Ahmed describen el empleo de algoritmos de b&uacute;squeda para la generaci&oacute;n de casos de prueba para programas orientados a objetos desarrollados en Java &#91;14; 16&#93;. Varshney hace un recorrido por las diversas t&eacute;cnicas de b&uacute;squeda que se han aplicado para la generaci&oacute;n de datos de prueba estructural<a href="#_ftn2" name="_ftnref2" title="">&#91;2&#93;</a><sup>,<a href="#_ftn3" name="_ftnref3" title="">&#91;3&#93;</a></sup> &#91;17; 18; 19; 20&#93;. D&iacute;az propone un modelo puro basado en el algoritmo <b>B&uacute;squeda Tab&uacute;</b> para la generaci&oacute;n autom&aacute;tica de valores para casos de prueba &#91;21&#93;. Mientras que en se presenta una soluci&oacute;n basada en la fusi&oacute;n de una metaheur&iacute;stica poblacional con una lista Tab&uacute; &#91;22&#93;.</font></p>  	    <p ><font face="verdana" size="2">Las propuestas existentes de generaci&oacute;n de valores no tienen en cuenta el hecho de que una combinaci&oacute;n de valores puede abarcar un camino de prueba&nbsp; representado por una funcionalidad &#91;17&#93;. Por lo cual este elemento podr&iacute;a reducir el n&uacute;mero de combinaciones de valores, de forma tal que se reduzca el n&uacute;mero total de combinaciones en funci&oacute;n del camino que se quiere probar. Es necesario reducir las combinaciones de los valores de prueba, integrando la l&oacute;gica interna del programa con las combinaciones de los valores de cada variable.</font></p>  	    <p ><font face="verdana" size="2">El objetivo de este art&iacute;culo es presentar un componente con una nueva soluci&oacute;n al problema de generar el conjunto de valores adecuados para la prueba al software basado en el Escalador de Colina.</font></p>  	     <p ><font face="verdana" size="2">El    componente de generaci&oacute;n de valores de prueba utilizar&aacute; la informaci&oacute;n    de la estructura del programa teniendo en cuenta los caminos independientes    de pruebas y el listado de valores significativos para cada variable para as&iacute;    guiar la generaci&oacute;n de los valores.</font></p>     <p >&nbsp;</p>  	    <p ><font face="verdana" size="2"><b><font size="3">M&Eacute;TODOS</font></b></font></p>  	     <p ><font face="verdana" size="2"><b>Componente para la generaci&oacute;n de combinaciones    de valores de pruebas</b></font></p>  	    ]]></body>
<body><![CDATA[<p ><font face="verdana" size="2">A continuaci&oacute;n se definen elementos m&aacute;s importantes para presentar la propuesta del componente.</font></p>  	    <p ><font face="verdana" size="2">El objetivo fundamental del componente desarrollado es devolver un conjunto reducido de combinaciones de valores que cubran una serie de caminos de pruebas para realizar pruebas unitarias. El criterio de cobertura empleado en la soluci&oacute;n es el de los caminos. Este componente estar&aacute; utilizando la informaci&oacute;n necesaria de tres ficheros de entradas de datos:</font></p>  	     <p ><font face="verdana" size="2">1&#45;&nbsp;&nbsp;las variables del problema    y el dominio que pueden tomar las mismas para un caso de prueba en espec&iacute;fico.</font></p>  	     <p ><font face="verdana" size="2">2&#45;&nbsp;&nbsp;las condiciones que deben    cumplir las variables del problema</font></p>  	     <p ><font face="verdana" size="2">3&#45;&nbsp;&nbsp;los casos de pruebas en espec&iacute;fico,    que no son m&aacute;s que los caminos de pruebas que se desean cubrir.</font></p>  	    <p ><font face="verdana" size="2">El componente permite integrar estos tres ficheros ofreciendo al equipo de pruebas un conjunto reducido de combinaciones de valores. De esta forma, este problema perteneciente al &aacute;rea de la Ingenier&iacute;a de Software es transformado en un problema de optimizaci&oacute;n ya que se busca reducir el conjunto de valores de prueba.</font></p>  	     <p ><font face="verdana" size="2"><b>Criterio de cobertura</b></font></p>  	    <p ><font face="verdana" size="2">El criterio utilizado en este art&iacute;culo es el de cobertura de caminos. Esto implica que todos los caminos de prueba deben tomar los valores de verdad posibles, es decir, que se busca pasar por todos las ramas del programa. Al exigir que todas las condiciones alcancen ambos valores de verdad, garantiza que todas las ramas ser&aacute;n cubiertas y por lo tanto, todas las instrucciones del programa ser&aacute;n ejecutadas. Para llevar a cabo este criterio, cada uno de los caminos del programa es analizado de manera independiente. Este proceso se lleva a cabo en la evaluaci&oacute;n de la Funci&oacute;n Objetivo, que se explicar&aacute; m&aacute;s adelante.</font></p>  	     <p ><font face="verdana" size="2"><b>Codificaci&oacute;n del problema</b></font></p>  	    <p ><font face="verdana" size="2">Para esta propuesta los valores de las variables representan el dominio que pueden tomar las mismas para probar una funcionalidad determinada. Las condiciones empleadas est&aacute;n formadas por las variables del problema y se obtienen de un grafo de control de flujo el cual representa trayectorias, las cuales determinan los caminos.</font></p>  	    ]]></body>
<body><![CDATA[<p ><font face="verdana" size="2">De cada variable empleada se obtendr&aacute; un valor y se formar&aacute; un estado. Un estado no es m&aacute;s que la combinaci&oacute;n de la asignaci&oacute;n de un valor de cada variable.</font></p>  	    <p ><font face="verdana" size="2">La soluci&oacute;n propuesta en este art&iacute;culo para este problema solo se aplica a variables de entrada de los tipos de datos num&eacute;ricos, booleanos, cadenas de caracteres y fechas.</font></p>  	     <p ><font face="verdana" size="2">En la <a href="/img/revistas/rii/v37n2/t0108216.jpg">tabla    1</a> se muestra un ejemplo de c&oacute;mo es asignado un valor a cada variable    para un problema con 9 variables de entrada, 7 num&eacute;ricas y 2 booleanas.</font></p>  	     
<p ><font face="verdana" size="2">Un estado, como se mencion&oacute; antes, se    forma mediante la selecci&oacute;n de un valor de cada variable respetando el    orden que se le dio en la entrada. Esto se muestra en la <a href="#t02">tabla    2</a>.</font></p>     <p align="center" ><a name="t02"></a><img src="/img/revistas/rii/v37n2/t0208216.jpg" width="337" height="45" alt="Tabla 2. Estado formado"></p>  	     
<p align="left" ><font face="verdana" size="2"><b>Optimizaci&oacute;n mediante    la biblioteca BiCIAM</b></font></p>  	    <p ><font face="verdana" size="2">La biblioteca de clases BiCIAM que implementa algoritmos metaheur&iacute;sticos basada en un modelo unificado de estos algoritmos&#91;23; 24&#93;. Esta biblioteca proporciona un modelo que permite dar una soluci&oacute;n al problema existente mediante el uso de las metaheur&iacute;sticas.</font></p>  	     <p ><font face="verdana" size="2"></font><font face="verdana" size="2"><b>Componente    de Generaci&oacute;n</b></font></p>  	    <p ><font face="verdana" size="2">El componente para la generaci&oacute;n de valores de prueba elegido es del tipo de caja blanca, por lo tanto es necesario conocer el valor de las variables involucradas en cada condici&oacute;n. Esto se logra con los ficheros de entrada mencionados anteriormente.</font></p>  	     <p ><font face="verdana" size="2">Toda la informaci&oacute;n generada es evaluada    de forma autom&aacute;tica por el componente en la funci&oacute;n objetivo.</font></p>  	    ]]></body>
<body><![CDATA[<p ><font face="verdana" size="2"><b>Generaci&oacute;n del estado inicial</b></font></p>  	    <p ><font face="verdana" size="2">La construcci&oacute;n aleatoria del estado inicial devuelve una cadena con longitud igual que la cantidad de variables del problema.</font></p>  	     <p ><font face="verdana" size="2">Para realizar la construcci&oacute;n de la soluci&oacute;n    inicial cumpliendo con la codificaci&oacute;n propuesta, se ha dise&ntilde;ado    la clase M1P la cual es la encargada de ofrecer la soluci&oacute;n inicial del    problema y generar la vecindad del mismo. Estas clases heredan de la clase abstracta    <i>Operator</i> que proporciona (BiCIAM). En ella se implementa el m&eacute;todo    <i>generate Random State</i>() el cual se encarga de generar el estado inicial    y ofrecer el punto de partida al problema.</font></p>  	    <p ><font face="verdana" size="2">A este se le pasa por par&aacute;metro la cantidad de estados iniciales que se quiere generar. En este problema se requiere de un solo estado inicial para que los algoritmos tengan un punto de partida.</font></p>  	    <p ><font face="verdana" size="2">Partiendo de la cantidad de variables del problema se ejecuta un ciclo, donde se verifica si la variable en la posici&oacute;n i trabaja con valores num&eacute;ricos. Si la variable en la posici&oacute;n i trabaja con valores num&eacute;ricos se guarda el nombre de la variable y el primer valor de la misma en un diccionario, <i>HashMap</i>.</font></p>  	     <p ><font face="verdana" size="2">La clase <i>HashMap</i> es un contenedor de    almacenamiento de objetos que utiliza Java.</font></p>  	     <p ><font face="verdana" size="2">En la segunda parte del m&eacute;todo se genera    concretamente el estado inicial para el problema. Se obtiene por cada variable    un valor aleatorio formando un estado (como se mostr&oacute; en la secci&oacute;n    anterior).</font></p>  	    <p ><font face="verdana" size="2"><b>Clase Parser</b></font></p>  	    <p ><font face="verdana" size="2">Parser: Esta clase va a ser invocada primeramente desde la clase que implementa el operador de mutaci&oacute;n en un punto y la que genera el estado inicial. En ambos m&eacute;todos de la clase M1P es invocado el m&eacute;todo <i>parseNumericExpression</i>() de la clase <i>Parser</i>, al cual se le pasa por par&aacute;metro la expresi&oacute;n (que puede ser un n&uacute;mero, una variable o combinaciones de variable&#45;variable, variable&#45;n&uacute;mero unidos por operadores aritm&eacute;ticos), y un diccionario el cual tendr&aacute; los valores actuales de cada variable. Una vez utilizado el m&eacute;todo de la clase <i>Parser</i> se devolver&aacute; un valor num&eacute;rico para la expresi&oacute;n.</font></p>  	    <p ><font face="verdana" size="2">En la Funci&oacute;n Objetivo (FO) implementada tambi&eacute;n se hace uso de la clase <i>Parser</i>, en este caso para la lectura e interpretaci&oacute;n de las condiciones del problema. Para este caso las condiciones son le&iacute;das de forma independiente ofreciendo un valor booleano como respuesta a la evaluaci&oacute;n.</font></p>  	    ]]></body>
<body><![CDATA[<p ><font face="verdana" size="2">La clase Parser para la lectura e interpretaci&oacute;n de las expresiones utiliza algunos m&eacute;todos encargados de identificar los operandos y los operadores existentes en cada expresi&oacute;n.</font></p>  	     <p ><font face="verdana" size="2">Los elementos que la clase identifica se muestran    en la <a href="#t03">tabla 3</a>.</font></p>     <p align="center" ><font face="verdana" size="2">&nbsp;<a name="t03"></a><img src="/img/revistas/rii/v37n2/t0308216.jpg" width="506" height="313" alt="Tabla 3. Elementos interpretados"></font><font face="verdana" size="2">&nbsp;</font></p>  	     
<p ><font face="verdana" size="2">&nbsp;</font></p>  	    <p ><font face="verdana" size="2">Las expresiones pueden estar relacionadas con cualquiera de los elementos antes mostrados.</font></p>  	     <p ><font face="verdana" size="2"></font><font face="verdana" size="2"><b>Funci&oacute;n    Objetivo</b></font></p>  	    <p ><font face="verdana" size="2">La funci&oacute;n objetivo se encarga de realizar el proceso de evaluaci&oacute;n a los diferentes estados que son obtenidos durante la experimentaci&oacute;n, es decir, es la encargada de evaluar las restricciones y dar una respuesta.</font></p>  	    <p ><font face="verdana" size="2">Por la FO pasan todos los estados generados para ser evaluados y determinar cu&aacute;les de ellos cubren los caminos de pruebas deseados. Por lo que se guardan los estados que cubren los caminos de pruebas.</font></p>  	    <p ><font face="verdana" size="2">Con las tres primeras estructuras la FO implementada puede evaluar cada estado generado y ofrecer un valor entre 0 y 1 como respuesta de la evaluaci&oacute;n. Mientras m&aacute;s cerca est&eacute; el valor obtenido de 1, pues entonces habr&aacute; posibilidad de que el estado generado este cercano a cubrir un camino.</font></p>  	    <p ><font face="verdana" size="2">El resultado de evaluar cada condici&oacute;n forma un camino de valores booleanos al igual que los valores de entrada del fichero de caminos, luego este es comparado con los caminos que se quieren cubrir para determinar si el estado generado y ya evaluado satisface alguno de los caminos de prueba.&nbsp;</font></p>  	    ]]></body>
<body><![CDATA[<p ><font face="verdana" size="2">Un camino es cubierto si la cantidad de evaluaciones que se cumplieron es igual a la cantidad de evaluaciones que se realizaron por cada camino de prueba. Si esto ocurre, el estado evaluado es guardado.&nbsp;</font></p>  	    <p ><font face="verdana" size="2">Del proceso de selecci&oacute;n del mejor estado se encargar&aacute; el algoritmo metaheur&iacute;stico empleado, el cual escoger&aacute; el mayor valor encontrado por cada vecindad generada y evaluada en la funci&oacute;n objetivo.</font></p>  	     <p ><font face="verdana" size="2"><b>Estructura del fichero de salida</b></font></p>  	     <p ><font face="verdana" size="2">Una vez que se carguen los tres ficheros de    entrada y sea ejecutado el componente, el mismo dar&aacute; la opci&oacute;n    de guardar la salida en un fichero texto en el que se mostrar&aacute;n los estados    que cumplieron con los distintos caminos de pruebas a cubrir.</font></p>     <p ><font face="verdana" size="2">&nbsp;</font></p>  	    <p ><font face="verdana" size="2"><b><font size="3">RESULTADOS</font></b></font></p>  	     <p ><font face="verdana" size="2">A continuaci&oacute;n se exponen los resultados    de la soluci&oacute;n desarrollada utilizando un caso de estudio como mecanismo    de validaci&oacute;n de la propuesta implementada.</font></p>  	     <p ><font face="verdana" size="2">La soluci&oacute;n se implement&oacute; en lenguaje    Java. El desempe&ntilde;o del componente propuesto fue probado en la generaci&oacute;n    de valores de prueba para un m&eacute;todo utilizado por diferentes autores.</font></p>  	     <p ><font face="verdana" size="2">&#45;&nbsp;&nbsp; El problema de clasificaci&oacute;n    del tri&aacute;ngulo tiene tres variables de entrada (A, B, C) que representan    la longitud de los lados de la figura. El programa determina si representa un    tri&aacute;ngulo, y en ese caso su tipo (escaleno, equil&aacute;tero, is&oacute;sceles).</font></p>  	     <p ><font face="verdana" size="2">La <a href="#t04">tabla 4</a> muestra los resultados    obtenidos luego de realizar 2000 iteraciones y el tiempo promedio que tard&oacute;    en lograr cada propuesta un 100% de cobertura. Tambi&eacute;n se incluyen los    resultados al aplicar varios operadores sobre el componente propuesto, como    Mutaci&oacute;n en un punto (M1P), mutaci&oacute;n en 2 puntos (M2P) y mutaci&oacute;n    en 3 puntos (M3P), bajo las mismas condiciones.</font></p>     ]]></body>
<body><![CDATA[<p align="center" ><font face="verdana" size="2">&nbsp;<a name="t04"></a><img src="/img/revistas/rii/v37n2/t0408216.jpg" width="469" height="197" alt="Tabla 4.Comparaci&oacute;n de los resultados"></font></p>  	     
<p align="left" >&nbsp;</p>     <p align="left" ><font face="verdana" size="2"><b><font size="3">DISCUSI&Oacute;N</font></b></font></p>  	    <p ><font face="verdana" size="2">Del problema de clasificaci&oacute;n de tri&aacute;ngulo se identificaron 5 caminos de prueba. La soluci&oacute;n propuesta en este art&iacute;culo permite cubrir el 100% de los caminos de prueba, y genera un conjunto reducido de valores para esos caminos. Adem&aacute;s, obtiene los resultados en menos tiempo que las propuestas de Jones, Lanzarini y D&iacute;az<a href="#_ftn4" name="_ftnref4" title="">&#91;4&#93;</a> &#91;22; 23&#93;.</font></p>  	     <p ><font face="verdana" size="2">El tiempo empleado en el m&eacute;todo propio    con los diferentes tipos de mutaci&oacute;n es menor que los de los autores    referenciados.</font></p>  	    <p ><font face="verdana" size="2">Se puede observar que de los tres operadores el de mejor comportamiento fue el de M2P. El operador implementado en la clase M1P solo cambia un valor de una variable, provocando que la cantidad de ejecuciones sea mayor. Ello se debe a que, el estado solo cambia en una variable, lo cual lo hace muy simple. El operador implementado en la clase M3P hace que el estado cambie en tres variables, este proceso hace que se transforme mucho un estado generado, lo cual provoca que el proceso de la formaci&oacute;n de la vecindad sea m&aacute;s lento.</font></p>  	     <p >&nbsp;</p>     <p ><font face="verdana" size="2"><b><font size="3">CONCLUSIONES</font></b></font></p>     <p ><font face="verdana" size="2">1. Del problema    de clasificaci&oacute;n de tri&aacute;ngulo se identificaron 5 caminos de prueba.    La soluci&oacute;n propuesta en este art&iacute;culo permite cubrir el 100 %    de los caminos de prueba, y genera un conjunto reducido de valores para esos    caminos. Adem&aacute;s, obtiene los resultados en menos tiempo que las propuestas    de Jones, Lanzarini y D&iacute;az<a href="#_ftn5" name="_ftnref5" title="">&#91;5&#93;</a>    &#91;22; 23&#93;.</font></p>  	     <p ><font face="verdana" size="2">2.    El tiempo empleado en el m&eacute;todo propio con los diferentes tipos de mutaci&oacute;n    es menor que los de los autores referenciados.</font></p>  	     ]]></body>
<body><![CDATA[<p ><font face="verdana" size="2">3.&nbsp;Se    puede observar que de los tres operadores el de mejor comportamiento fue el    de M2P. El operador implementado en la clase M1P solo cambia un valor de una    variable, provocando que la cantidad de ejecuciones sea mayor. Ello se debe    a que, el estado solo cambia en una variable, lo cual lo hace muy simple. El    operador implementado en la clase M3P hace que el estado cambie en tres variables,    este proceso hace que se transforme mucho un estado generado, lo cual provoca    que el proceso de la formaci&oacute;n de la vecindad sea m&aacute;s lento. <img border="0" width="13" height="13" id="Imagen 2" src="rii08215_archivos/image001.png"></font></p>  	    <p ><font face="verdana" size="2">&nbsp;</font></p>  	     <p ><font face="verdana" size="2"><b><font size="3">REFERENCIAS</font></b></font></p>  	     <!-- ref --><p ><font face="verdana" size="2">1. Myers GJ, Sandler C, Badgett T. The art of    software testing. New York: John Wiley &amp; Sons; 2011.     ISBN 1118133153.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">2. Lamancha BP, Polo M. Generaci&oacute;n autom&aacute;tica de casos de prueba para L&iacute;neas de Producto de Software. Innovaci&oacute;n, Calidad e Ingenier&iacute;a del Software. 2009;5(2):17.     ISSN 1885&#45;4486.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">3. Memon AM, Pollack ME, Soffa ML. Hierarchical GUI test case generation using automated planning. Software Engineering, IEEE Transactions on. 2001;27(2):144&#45;55.     ISSN 0098&#45;5589.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">4. Zhang Z, Yan J, Zhao Y, et al. Generating combinatorial test suite using combinatorial optimization. Journal of Systems and Software. 2014;98:191&#45;207.     ISSN 0164&#45;1212.</font></p>  	     <!-- ref --><p ><font face="verdana" size="2">5. Bouquet F, Grandpierre C, Legeard B, et al.    A test generation solution to automate software testing. En: Proceedings of    the 3rd international workshop on Automation of software test. Leipzig (Germany):    ACM; 2011.     ISBN 1605580309.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">6. Lam SSB, Raju MHP, Ch S, et al. Automated generation of independent paths and test suite optimization using artificial bee colony. Procedia Engineering. 2012;30:191&#45;200.     ISSN 1877&#45;7058.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">7. Anand S, Burke EK, Chen TY, et al. An orchestrated survey of methodologies for automated software test case generation. Journal of Systems and Software. 2013;86(8):1978&#45;2001.     ISSN 0164&#45;1212.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">8. Jacobson I, Booch G, Rumbaugh J, et al. The unified software development process. Boston: Addison&#45;Wesley Reading; 1999.     ISBN 978&#45;0321822000.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">9. Harman M, Mansouri SA, Zhang Y. Search&#45;based software engineering: Trends, techniques and applications. ACM Computing Surveys (CSUR). 2012;45(1):11.     ISSN 0360&#45;0300.</font></p>  	     <!-- ref --><p ><font face="verdana" size="2">10. Harman M. Automated test data generation    using search based software engineering. En: Automation of Software Test, 2007    AST'07 Second International Workshop on. IEEE.     p. 2. ISBN 0&#45;7695&#45;2971&#45;2.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">11. Harman M, Lakhotia K, Singer J, et al. Cloud engineering is search based software engineering too. Journal of Systems and Software. 2013;86(9):2225&#45;41.     ISSN 0164&#45;1212.</font></p>  	     <!-- ref --><p ><font face="verdana" size="2">12. Iqbal MZ, Arcuri A, Briand L. Empirical    investigation of search algorithms for environment model&#45;based testing of    real&#45;time embedded software. In: Proceedings of the 2012 International Symposium    on Software Testing and Analysis. ACM; 2012. p. 199&#45;209. ISBN 1450314546.    </font></p>     <!-- ref --><p ><font face="verdana" size="2">13. Ribeiro JCB. Search&#45;based test case    generation for object&#45;oriented java software using strongly&#45;typed genetic    programming. En: Proceedings of the 10th annual conference companion on Genetic    and evolutionary computation. ACM; 2012. p. 1819&#45;22. ISBN 1605581313.    </font></p>  	    <!-- ref --><p ><font face="verdana" size="2">14. Ahmed BS, Zamli KZ. Comparison of metahuristic test generation strategies based on interaction elements coverage criterion. En: Industrial Electronics and Applications (ISIEA). Langkawi (Malasia): IEEE; 2011.     p. 550&#45;4. ISBN 1457714183.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">15. Varshney S, Mehrotra M. Search based software test data generation for structural testing: a perspective. ACM SIGSOFT Software Engineering Notes. 2013;38(4):1&#45;6.     ISSN 0163&#45;5948.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">16. Ferguson R, Korel B. The chaining approach for software test data generation. ACM Transactions on Software Engineering and Methodology (TOSEM). 1996;5(1):63&#45;86.     ISSN 1049&#45;331X.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">17. Jones BF, Sthamer H&#45;H, Eyres DE. Automatic structural testing using genetic algorithms. Software Engineering Journal. 1996;11(5):299&#45;306.     ISSN 0268&#45;6961.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">18. Michael CC, McGraw G, Schatz MA. Generating software test data by evolution. Software Engineering, IEEE Transactions on. 2001;27(12):1085&#45;110.     ISSN 0098&#45;5589.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">19. Wegener J, Baresel A, Sthamer H. Evolutionary test environment for automatic structural testing. Information and Software Technology. 2001;43(14):841&#45;54.     ISSN 0950&#45;5849.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">20. D&iacute;az E, Tuya J, Blanco R, et al. A tabu search algorithm for structural software testing. Computers &amp; Operations Research. 2008;35(10):3052&#45;72.     ISSN 0305&#45;0548.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">21. Lanzarini LC, Battaiotto PE. Dynamic generation of test cases with metaheuristics. Journal of Computer Science &amp; Technology. 2010;(10).     ISSN 1000&#45;9000.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">22. Infante AL, Andr&eacute; M, Su&aacute;rez AR, et al. Conformaci&oacute;n de equipos de proyectos de software aplicando algoritmos metaheur&iacute;sticos de trayectoria multiobjetivo. Inteligencia artificial: Revista Iberoamericana de Inteligencia Artificial. 2014;17(54):1&#45;16.     ISSN 1137&#45;3601.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">23. Abreu ALI, Hern&aacute;ndez RD, Ampuero MA, et al. Soluci&oacute;n al problema de conformaci&oacute;n de equipos de proyectos de software utilizando la biblioteca de clases BICIAM. Revista Cubana de Ciencias Inform&aacute;ticas. 2015;9:126&#45;40.     ISSN 2227&#45;1899.</font></p>  	    <!-- ref --><p ><font face="verdana" size="2">24. Pressman RS. Software engineering: a practitioner's approach. London: Palgrave Macmillan; 2005.     ISBN 007301933X.</font></p>  	     <p >&nbsp;</p>     <p >&nbsp;</p>     <p ><font face="verdana" size="2">Recibido: 2/02/2016.    <br>   </font><font face="verdana" size="2">Aprobado: 27/04/2016.</font></p>     <p>&nbsp;</p>     <p>&nbsp;</p>     <p ><font face="verdana" size="2"><i>Perla&nbsp; Fern&aacute;ndez&#45;Oliva. </i>Instituto    Superior Polit&eacute;cnico Jos&eacute; Antonio Echeverr&iacute;a, CUJAE. Facultad    de Ingenier&iacute;a Inform&aacute;tica. La Habana, Cuba.    <br>   </font><font face="verdana" size="2">Correo electr&oacute;nico:<b> </b><a href="mailto:perla@ceis.cujae.edu.cu">perla@ceis.cujae.edu.cu</a></font></p>     <p >&nbsp;</p>     ]]></body>
<body><![CDATA[<p >&nbsp;</p> <hr>     <p><font face="verdana" size="2"><a href="#_ftnref1" name="_ftn1" title="">&#91;1&#93;</a>    Mej&iacute;as, L.N.M., <i>Componente de generaci&oacute;n autom&aacute;tica    de valores de pruebas.</i>, in <i>Facultad de Ingenier&iacute;a Inform&aacute;tica</i>.    2012, Instituto Superior Polit&eacute;cnico Jos&eacute; Antonio Echeverr&iacute;a.    p. 72.</font></p>     <p align="justify"><font face="verdana" size="2"><a href="#_ftnref2" name="_ftn2" title="">&#91;2&#93;</a> Ferguson, R. and B. Korel, <i>The chaining approach for software test data generation.</i> ACM Transactions on Software Engineering and Methodology (TOSEM), 1996. <b>5</b>(1): p. 63&#45;86.</font></p>  	    <p align="justify"><font face="verdana" size="2"><a href="#_ftnref3" name="_ftn3" title="">&#91;3&#93;</a> Jones, B.F., H.&#45;H. Sthamer, and D.E. Eyres, <i>Automatic structural testing using genetic algorithms.</i> Software Engineering Journal, 1996.11(5): p. 299&#45;306.</font></p>  	    <p align="justify"><font face="verdana" size="2"><a href="#_ftnref4" name="_ftn4" title="">&#91;4&#93;</a>Jones, B.F., H.&#45;H. Sthamer, and D.E. Eyres, <i>Automatic structural testing using genetic algorithms.</i> Software Engineering Journal, 1996.11(5): p. 299&#45;306.</font></p>  	    <p align="justify"><font face="verdana" size="2"><a href="#_ftnref5" name="_ftn5" title="">&#91;5&#93;</a>Jones, B.F., H.&#45;H. Sthamer, and D.E. Eyres, <i>Automatic structural testing using genetic algorithms.</i> Software Engineering Journal, 1996.11(5): p. 299&#45;306.</font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Myers]]></surname>
<given-names><![CDATA[GJ]]></given-names>
</name>
<name>
<surname><![CDATA[Sandler]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Badgett]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<source><![CDATA[The art of software testing]]></source>
<year>2011</year>
<publisher-loc><![CDATA[New York ]]></publisher-loc>
<publisher-name><![CDATA[John Wiley & Sons]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lamancha]]></surname>
<given-names><![CDATA[BP]]></given-names>
</name>
<name>
<surname><![CDATA[Polo]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<article-title xml:lang="pt"><![CDATA[Generación automática de casos de prueba para Líneas de Producto de Software]]></article-title>
<source><![CDATA[Innovación, Calidad e Ingeniería del Software]]></source>
<year>2009</year>
<volume>5</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>17</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Memon]]></surname>
<given-names><![CDATA[AM]]></given-names>
</name>
<name>
<surname><![CDATA[Pollack]]></surname>
<given-names><![CDATA[ME]]></given-names>
</name>
<name>
<surname><![CDATA[Soffa]]></surname>
<given-names><![CDATA[ML]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Hierarchical GUI test case generation using automated planning]]></article-title>
<source><![CDATA[Software Engineering, IEEE Transactions on]]></source>
<year>2001</year>
<volume>27</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>144-55</page-range></nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhang]]></surname>
<given-names><![CDATA[Z]]></given-names>
</name>
<name>
<surname><![CDATA[Yan]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Zhao]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Generating combinatorial test suite using combinatorial optimization]]></article-title>
<source><![CDATA[Journal of Systems and Software]]></source>
<year>2014</year>
<volume>98</volume>
<page-range>191-207</page-range></nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bouquet]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Grandpierre]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Legeard]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
</person-group>
<source><![CDATA[A test generation solution to automate software testing.En: Proceedings of the 3rd international workshop on Automation of software test]]></source>
<year>2011</year>
<publisher-loc><![CDATA[Leipzig ]]></publisher-loc>
<publisher-name><![CDATA[ACM]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lam]]></surname>
<given-names><![CDATA[SSB]]></given-names>
</name>
<name>
<surname><![CDATA[Raju]]></surname>
<given-names><![CDATA[MHP]]></given-names>
</name>
<name>
<surname><![CDATA[Ch]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Automated generation of independent paths and test suite optimization using artificial bee colony]]></article-title>
<source><![CDATA[Procedia Engineering]]></source>
<year>2012</year>
<volume>30</volume>
<page-range>191-200</page-range></nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Anand]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Burke]]></surname>
<given-names><![CDATA[EK]]></given-names>
</name>
<name>
<surname><![CDATA[Chen]]></surname>
<given-names><![CDATA[TY]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[An orchestrated survey of methodologies for automated software test case generation]]></article-title>
<source><![CDATA[Journal of Systems and Software]]></source>
<year>2013</year>
<volume>86</volume>
<numero>8</numero>
<issue>8</issue>
<page-range>1978-2001</page-range></nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jacobson]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
<name>
<surname><![CDATA[Booch]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Rumbaugh]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[The unified software development process]]></source>
<year>1999</year>
<publisher-loc><![CDATA[Boston ]]></publisher-loc>
<publisher-name><![CDATA[Addison-Wesley Reading]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Harman]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Mansouri]]></surname>
<given-names><![CDATA[SA]]></given-names>
</name>
<name>
<surname><![CDATA[Zhang]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Search-based software engineering: Trends, techniques and applications]]></article-title>
<source><![CDATA[ACM Computing Surveys (CSUR)]]></source>
<year>2012</year>
<volume>45</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>11</page-range></nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Harman]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Automated test data generation using search based software engineering]]></source>
<year>2007</year>
<page-range>2</page-range><publisher-loc><![CDATA[En ]]></publisher-loc>
<publisher-name><![CDATA[Automation of Software Test]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Harman]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Lakhotia]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[Singer]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Cloud engineering is search based software engineering too]]></article-title>
<source><![CDATA[Journal of Systems and Software]]></source>
<year>2013</year>
<volume>86</volume>
<numero>9</numero>
<issue>9</issue>
<page-range>2225-41</page-range></nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Iqbal]]></surname>
<given-names><![CDATA[MZ]]></given-names>
</name>
<name>
<surname><![CDATA[Arcuri]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Briand]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
</person-group>
<source><![CDATA[Empirical investigation of search algorithms for environment model-based testing of real time embedded software.: Proceedings of the 2012 International Symposium on Software Testing and Analysis]]></source>
<year>2012</year>
<page-range>199-209</page-range><publisher-name><![CDATA[ACM]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ribeiro]]></surname>
<given-names><![CDATA[JCB]]></given-names>
</name>
</person-group>
<source><![CDATA[Search-based test case generation for object-oriented java software using strongly-typed genetic programming: Proceedings of the 10th annual conference companion on Genetic and evolutionary computation]]></source>
<year>2012</year>
<page-range>1819-22</page-range><publisher-name><![CDATA[ACM]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ahmed]]></surname>
<given-names><![CDATA[BS]]></given-names>
</name>
<name>
<surname><![CDATA[Zamli]]></surname>
<given-names><![CDATA[KZ]]></given-names>
</name>
</person-group>
<source><![CDATA[Comparison of metahuristic test generation strategies based on interaction elements coverage criterion.En: Industrial Electronics and Applications (ISIEA)]]></source>
<year>2011</year>
<page-range>550-4</page-range><publisher-loc><![CDATA[Langkawi ]]></publisher-loc>
<publisher-name><![CDATA[IEEE]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Varshney]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Mehrotra]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Search based software test data generation for structural testing: a perspective]]></article-title>
<source><![CDATA[ACM SIGSOFT Software Engineering Notes]]></source>
<year>2013</year>
<volume>38</volume>
<numero>4</numero>
<issue>4</issue>
<page-range>1-6</page-range></nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ferguson]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Korel]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[The chaining approach for software test data generation]]></article-title>
<source><![CDATA[ACM Transactions on Software Engineering and Methodology (TOSEM)]]></source>
<year>1996</year>
<volume>5</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>63-86</page-range></nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jones]]></surname>
<given-names><![CDATA[BF]]></given-names>
</name>
<name>
<surname><![CDATA[Sthamer H-H]]></surname>
</name>
<name>
<surname><![CDATA[Eyres]]></surname>
<given-names><![CDATA[DE]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Automatic structural testing using genetic algorithms]]></article-title>
<source><![CDATA[Software Engineering Journal]]></source>
<year>1996</year>
<volume>11</volume>
<numero>5</numero>
<issue>5</issue>
<page-range>299-306</page-range></nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Michael]]></surname>
<given-names><![CDATA[CC]]></given-names>
</name>
<name>
<surname><![CDATA[McGraw]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Schatz]]></surname>
<given-names><![CDATA[MA]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Generating software test data by evolution]]></article-title>
<source><![CDATA[Software Engineering, IEEE Transactions on]]></source>
<year>2001</year>
<volume>27</volume>
<numero>12</numero>
<issue>12</issue>
<page-range>1085-110</page-range></nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Wegener]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Baresel]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Sthamer]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Evolutionary test environment for automatic structural testing]]></article-title>
<source><![CDATA[Information and Software Technology]]></source>
<year>2001</year>
<volume>43</volume>
<numero>14</numero>
<issue>14</issue>
<page-range>841-54</page-range></nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Díaz]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[Tuya]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Blanco]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A tabu search algorithm for structural software testing]]></article-title>
<source><![CDATA[Computers & Operations Research]]></source>
<year>2008</year>
<volume>35</volume>
<numero>10</numero>
<issue>10</issue>
<page-range>3052-72</page-range></nlm-citation>
</ref>
<ref id="B21">
<label>21</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lanzarini]]></surname>
<given-names><![CDATA[LC]]></given-names>
</name>
<name>
<surname><![CDATA[Battaiotto]]></surname>
<given-names><![CDATA[PE]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Dynamic generation of test cases with metaheuristics]]></article-title>
<source><![CDATA[Journal of Computer Science & Technology]]></source>
<year>2010</year>
<numero>10</numero>
<issue>10</issue>
</nlm-citation>
</ref>
<ref id="B22">
<label>22</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Infante]]></surname>
<given-names><![CDATA[AL]]></given-names>
</name>
<name>
<surname><![CDATA[André]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Suárez]]></surname>
<given-names><![CDATA[AR]]></given-names>
</name>
</person-group>
<article-title xml:lang="pt"><![CDATA[Conformación de equipos de proyectos de software aplicando algoritmos metaheurísticos de trayectoria multiobjetivo]]></article-title>
<source><![CDATA[Inteligencia artificial: Revista Iberoamericana de Inteligencia Artificial]]></source>
<year>2014</year>
<volume>17</volume>
<numero>54</numero>
<issue>54</issue>
<page-range>1-16</page-range></nlm-citation>
</ref>
<ref id="B23">
<label>23</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Abreu]]></surname>
<given-names><![CDATA[ALI]]></given-names>
</name>
<name>
<surname><![CDATA[Hernández]]></surname>
<given-names><![CDATA[RD]]></given-names>
</name>
<name>
<surname><![CDATA[Ampuero]]></surname>
<given-names><![CDATA[MA]]></given-names>
</name>
</person-group>
<article-title xml:lang="pt"><![CDATA[Solución al problema de conformación de equipos de proyectos de software utilizando la biblioteca de clases BICIAM]]></article-title>
<source><![CDATA[Revista Cubana de Ciencias Informáticas]]></source>
<year>2015</year>
<volume>9</volume>
<page-range>126-40</page-range></nlm-citation>
</ref>
<ref id="B24">
<label>24</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pressman]]></surname>
<given-names><![CDATA[RS]]></given-names>
</name>
</person-group>
<source><![CDATA[Software engineering: a practitioner's approach]]></source>
<year>2005</year>
<publisher-loc><![CDATA[London ]]></publisher-loc>
<publisher-name><![CDATA[Palgrave Macmillan]]></publisher-name>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
