Automatizando tests en Go con EvoMaster

Autores
Basso, Juan Cruz
Año de publicación
2024
Idioma
español castellano
Tipo de recurso
tesis de grado
Estado
versión publicada
Colaborador/a o director/a de tesis
Galeotti, Juan Pablo
Descripción
En este trabajo se introduce un nuevo Driver de EvoMaster, una herramienta open source para generación automática de testeos impulsada por un algoritmo evolutivo, para aplicaciones web REST implementadas en el lenguaje de programación Go. Esta herramienta cuenta con dos componentes principales: un Core, encargado de llevar a cabo el algoritmo de búsqueda denominado MIO que aplica heurísticas para la optimización de testeos maximizando la cobertura de líneas y branches sobre el código de la aplicación a testear; y un Driver o controlador, encargado de alimentar al Core con las métricas necesarias para la evolución del algoritmo. Se describe el dise ̃no e implementación de un controlador exclusivo para Go encargado de la comunicación con el Core bajo un protocolo ya establecido y la instrumentación de código mediante la aplicación de transformaciones sobre el árbol AST del código fuente original y la inyección del mismo al binario final en compilación. Además, como parte de este trabajo se extiende el core para soportar la escritura de los tests en lenguaje Go y se provee un paquete de Go para la distribución y testeo del nuevo controlador. Por último, se reportan y analizan métricas de cobertura de líneas obtenidas a partir de tests generados automáticamente para casos de prueba diferentes, tanto artificiales y como originales de terceros, disponibles públicamente en GitHub.
In this work, we introduce a new Driver for EvoMaster, an open-source tool for automatic test generation powered by an evolutionary algorithm, specifically designed for REST web applications implemented in the Go programming language. This tool has two main components: a Core, responsible for executing the search algorithm known as MIO, which applies heuristics for test optimization by maximizing line and branch coverage in the application code under test; and a Driver or controller, which feeds the Core with the necessary metrics for the evolution of the algorithm. The design and implementation of an exclusive controller for Go is described, which handles communication with the Core under an established protocol and code instrumentation through the application of transformations on the AST (Abstract Syntax Tree) of the original source code and its injection into the final binary during compilation. Additionally, as part of this work, the core is exten ded to support test writing in Go, and a Go package is provided for the distribution and testing of the new controller. Finally, line coverage metrics obtained from automatically generated tests for different test cases, both artificial and third-party, publicly available on GitHub, are reported and analyzed.
Fil: Basso, Juan Cruz. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
Materia
APIS WEB
ALGORITMOS GENETICOS
METAHEURISTICAS
GO
REST
TESTING
WEB APIS
GENETIC ALGORITHMS
METAHEURISTICS
Nivel de accesibilidad
acceso abierto
Condiciones de uso
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
Repositorio
Biblioteca Digital (UBA-FCEN)
Institución
Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
OAI Identificador
seminario:seminario_nCOM000775_Basso

id BDUBAFCEN_fcdf1a47beb3666cd9ac45c50307982c
oai_identifier_str seminario:seminario_nCOM000775_Basso
network_acronym_str BDUBAFCEN
repository_id_str 1896
network_name_str Biblioteca Digital (UBA-FCEN)
spelling Automatizando tests en Go con EvoMasterBasso, Juan CruzAPIS WEBALGORITMOS GENETICOSMETAHEURISTICASGORESTTESTINGWEB APISGENETIC ALGORITHMSMETAHEURISTICSEn este trabajo se introduce un nuevo Driver de EvoMaster, una herramienta open source para generación automática de testeos impulsada por un algoritmo evolutivo, para aplicaciones web REST implementadas en el lenguaje de programación Go. Esta herramienta cuenta con dos componentes principales: un Core, encargado de llevar a cabo el algoritmo de búsqueda denominado MIO que aplica heurísticas para la optimización de testeos maximizando la cobertura de líneas y branches sobre el código de la aplicación a testear; y un Driver o controlador, encargado de alimentar al Core con las métricas necesarias para la evolución del algoritmo. Se describe el dise ̃no e implementación de un controlador exclusivo para Go encargado de la comunicación con el Core bajo un protocolo ya establecido y la instrumentación de código mediante la aplicación de transformaciones sobre el árbol AST del código fuente original y la inyección del mismo al binario final en compilación. Además, como parte de este trabajo se extiende el core para soportar la escritura de los tests en lenguaje Go y se provee un paquete de Go para la distribución y testeo del nuevo controlador. Por último, se reportan y analizan métricas de cobertura de líneas obtenidas a partir de tests generados automáticamente para casos de prueba diferentes, tanto artificiales y como originales de terceros, disponibles públicamente en GitHub.In this work, we introduce a new Driver for EvoMaster, an open-source tool for automatic test generation powered by an evolutionary algorithm, specifically designed for REST web applications implemented in the Go programming language. This tool has two main components: a Core, responsible for executing the search algorithm known as MIO, which applies heuristics for test optimization by maximizing line and branch coverage in the application code under test; and a Driver or controller, which feeds the Core with the necessary metrics for the evolution of the algorithm. The design and implementation of an exclusive controller for Go is described, which handles communication with the Core under an established protocol and code instrumentation through the application of transformations on the AST (Abstract Syntax Tree) of the original source code and its injection into the final binary during compilation. Additionally, as part of this work, the core is exten ded to support test writing in Go, and a Go package is provided for the distribution and testing of the new controller. Finally, line coverage metrics obtained from automatically generated tests for different test cases, both artificial and third-party, publicly available on GitHub, are reported and analyzed.Fil: Basso, Juan Cruz. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.Universidad de Buenos Aires. Facultad de Ciencias Exactas y NaturalesGaleotti, Juan Pablo2024-09-11info:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_7a1finfo:ar-repo/semantics/tesisDeGradoapplication/pdfhttps://hdl.handle.net/20.500.12110/seminario_nCOM000775_Bassospainfo:eu-repo/semantics/openAccesshttps://creativecommons.org/licenses/by-nc-sa/2.5/arreponame:Biblioteca Digital (UBA-FCEN)instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesinstacron:UBA-FCEN2025-11-06T09:40:42Zseminario:seminario_nCOM000775_BassoInstitucionalhttps://digital.bl.fcen.uba.ar/Universidad públicaNo correspondehttps://digital.bl.fcen.uba.ar/cgi-bin/oaiserver.cgiana@bl.fcen.uba.arArgentinaNo correspondeNo correspondeNo correspondeopendoar:18962025-11-06 09:40:43.341Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesfalse
dc.title.none.fl_str_mv Automatizando tests en Go con EvoMaster
title Automatizando tests en Go con EvoMaster
spellingShingle Automatizando tests en Go con EvoMaster
Basso, Juan Cruz
APIS WEB
ALGORITMOS GENETICOS
METAHEURISTICAS
GO
REST
TESTING
WEB APIS
GENETIC ALGORITHMS
METAHEURISTICS
title_short Automatizando tests en Go con EvoMaster
title_full Automatizando tests en Go con EvoMaster
title_fullStr Automatizando tests en Go con EvoMaster
title_full_unstemmed Automatizando tests en Go con EvoMaster
title_sort Automatizando tests en Go con EvoMaster
dc.creator.none.fl_str_mv Basso, Juan Cruz
author Basso, Juan Cruz
author_facet Basso, Juan Cruz
author_role author
dc.contributor.none.fl_str_mv Galeotti, Juan Pablo
dc.subject.none.fl_str_mv APIS WEB
ALGORITMOS GENETICOS
METAHEURISTICAS
GO
REST
TESTING
WEB APIS
GENETIC ALGORITHMS
METAHEURISTICS
topic APIS WEB
ALGORITMOS GENETICOS
METAHEURISTICAS
GO
REST
TESTING
WEB APIS
GENETIC ALGORITHMS
METAHEURISTICS
dc.description.none.fl_txt_mv En este trabajo se introduce un nuevo Driver de EvoMaster, una herramienta open source para generación automática de testeos impulsada por un algoritmo evolutivo, para aplicaciones web REST implementadas en el lenguaje de programación Go. Esta herramienta cuenta con dos componentes principales: un Core, encargado de llevar a cabo el algoritmo de búsqueda denominado MIO que aplica heurísticas para la optimización de testeos maximizando la cobertura de líneas y branches sobre el código de la aplicación a testear; y un Driver o controlador, encargado de alimentar al Core con las métricas necesarias para la evolución del algoritmo. Se describe el dise ̃no e implementación de un controlador exclusivo para Go encargado de la comunicación con el Core bajo un protocolo ya establecido y la instrumentación de código mediante la aplicación de transformaciones sobre el árbol AST del código fuente original y la inyección del mismo al binario final en compilación. Además, como parte de este trabajo se extiende el core para soportar la escritura de los tests en lenguaje Go y se provee un paquete de Go para la distribución y testeo del nuevo controlador. Por último, se reportan y analizan métricas de cobertura de líneas obtenidas a partir de tests generados automáticamente para casos de prueba diferentes, tanto artificiales y como originales de terceros, disponibles públicamente en GitHub.
In this work, we introduce a new Driver for EvoMaster, an open-source tool for automatic test generation powered by an evolutionary algorithm, specifically designed for REST web applications implemented in the Go programming language. This tool has two main components: a Core, responsible for executing the search algorithm known as MIO, which applies heuristics for test optimization by maximizing line and branch coverage in the application code under test; and a Driver or controller, which feeds the Core with the necessary metrics for the evolution of the algorithm. The design and implementation of an exclusive controller for Go is described, which handles communication with the Core under an established protocol and code instrumentation through the application of transformations on the AST (Abstract Syntax Tree) of the original source code and its injection into the final binary during compilation. Additionally, as part of this work, the core is exten ded to support test writing in Go, and a Go package is provided for the distribution and testing of the new controller. Finally, line coverage metrics obtained from automatically generated tests for different test cases, both artificial and third-party, publicly available on GitHub, are reported and analyzed.
Fil: Basso, Juan Cruz. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
description En este trabajo se introduce un nuevo Driver de EvoMaster, una herramienta open source para generación automática de testeos impulsada por un algoritmo evolutivo, para aplicaciones web REST implementadas en el lenguaje de programación Go. Esta herramienta cuenta con dos componentes principales: un Core, encargado de llevar a cabo el algoritmo de búsqueda denominado MIO que aplica heurísticas para la optimización de testeos maximizando la cobertura de líneas y branches sobre el código de la aplicación a testear; y un Driver o controlador, encargado de alimentar al Core con las métricas necesarias para la evolución del algoritmo. Se describe el dise ̃no e implementación de un controlador exclusivo para Go encargado de la comunicación con el Core bajo un protocolo ya establecido y la instrumentación de código mediante la aplicación de transformaciones sobre el árbol AST del código fuente original y la inyección del mismo al binario final en compilación. Además, como parte de este trabajo se extiende el core para soportar la escritura de los tests en lenguaje Go y se provee un paquete de Go para la distribución y testeo del nuevo controlador. Por último, se reportan y analizan métricas de cobertura de líneas obtenidas a partir de tests generados automáticamente para casos de prueba diferentes, tanto artificiales y como originales de terceros, disponibles públicamente en GitHub.
publishDate 2024
dc.date.none.fl_str_mv 2024-09-11
dc.type.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
info:eu-repo/semantics/publishedVersion
http://purl.org/coar/resource_type/c_7a1f
info:ar-repo/semantics/tesisDeGrado
format bachelorThesis
status_str publishedVersion
dc.identifier.none.fl_str_mv https://hdl.handle.net/20.500.12110/seminario_nCOM000775_Basso
url https://hdl.handle.net/20.500.12110/seminario_nCOM000775_Basso
dc.language.none.fl_str_mv spa
language spa
dc.rights.none.fl_str_mv info:eu-repo/semantics/openAccess
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
eu_rights_str_mv openAccess
rights_invalid_str_mv https://creativecommons.org/licenses/by-nc-sa/2.5/ar
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
dc.source.none.fl_str_mv reponame:Biblioteca Digital (UBA-FCEN)
instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron:UBA-FCEN
reponame_str Biblioteca Digital (UBA-FCEN)
collection Biblioteca Digital (UBA-FCEN)
instname_str Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron_str UBA-FCEN
institution UBA-FCEN
repository.name.fl_str_mv Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
repository.mail.fl_str_mv ana@bl.fcen.uba.ar
_version_ 1848046115503472640
score 13.087074