Analysis and validation of test case redundancy in testing suites of Java libraries

Detalhes bibliográficos
Autor(a) principal: Wolfart, Murilo
Data de Publicação: 2021
Tipo de documento: Trabalho de conclusão de curso
Idioma: eng
Título da fonte: Repositório Institucional da UFRGS
Texto Completo: http://hdl.handle.net/10183/223588
Resumo: Ao estudar suítes de testes de algumas bibliotecas Java, é possível perceber uma certa redundância no caminho que alguns dos casos de teste tomam, cuja razão é desconhecida. A fim de entender este problema, estabelecemos duas hipóteses: uma de que esta redundância acontece devido à suíte ser automaticamente gerada utilizando uma ferramenta de geração automática de testes, e uma de que ela se origina em casos de teste que testam parâmetros de entrada de naturezas diferentes, como palavra vazia e palavra nula. Para validar estas hipóteses, fazemos um estudo detalhado, analisando o comportamento dos casos de teste associado ao código da aplicação. Levamos em consideração um critério de cobertura de código, computado gerando o caminho de execução de cada caso de teste presente na suíte e comparando estes com a cobertura de caminhos primos do método. Para este procedimento primeiro adaptamos uma ferramenta de análise de cobertura que considera o critério de caminhos primos, e posteriormente coletamos dados adicionais acerca do código da aplicação e da suíte para entender os objetivos dos testes. Após isto, uma análise manual é feita no código dos métodos sendo testado e seus respectivos casos de teste. Resultados mostram que as suítes dos projetos são mais próximas de uma suíte implementada por desenvolvedores, e não de uma suíte gerada automaticamente. Também é mostrado que, ao analisar os testes com caminhos de execução redundantes, a maioria consiste de casos que testam diferentes tipos de parâmetros de entrada - nossa segunda hipótese. Existem alguns testes que não possuem propósito e alguns que testam valores de entrada semelhantes, sendo alguns inclusive duplicados, mas isto ocorre em uma escala consideravelmente insignificante.
id UFRGS-2_6b9d49ffa8687399d566d71081ad40a3
oai_identifier_str oai:www.lume.ufrgs.br:10183/223588
network_acronym_str UFRGS-2
network_name_str Repositório Institucional da UFRGS
repository_id_str
spelling Wolfart, MuriloCota, Erika Fernandes2021-07-10T04:52:21Z2021http://hdl.handle.net/10183/223588001127428Ao estudar suítes de testes de algumas bibliotecas Java, é possível perceber uma certa redundância no caminho que alguns dos casos de teste tomam, cuja razão é desconhecida. A fim de entender este problema, estabelecemos duas hipóteses: uma de que esta redundância acontece devido à suíte ser automaticamente gerada utilizando uma ferramenta de geração automática de testes, e uma de que ela se origina em casos de teste que testam parâmetros de entrada de naturezas diferentes, como palavra vazia e palavra nula. Para validar estas hipóteses, fazemos um estudo detalhado, analisando o comportamento dos casos de teste associado ao código da aplicação. Levamos em consideração um critério de cobertura de código, computado gerando o caminho de execução de cada caso de teste presente na suíte e comparando estes com a cobertura de caminhos primos do método. Para este procedimento primeiro adaptamos uma ferramenta de análise de cobertura que considera o critério de caminhos primos, e posteriormente coletamos dados adicionais acerca do código da aplicação e da suíte para entender os objetivos dos testes. Após isto, uma análise manual é feita no código dos métodos sendo testado e seus respectivos casos de teste. Resultados mostram que as suítes dos projetos são mais próximas de uma suíte implementada por desenvolvedores, e não de uma suíte gerada automaticamente. Também é mostrado que, ao analisar os testes com caminhos de execução redundantes, a maioria consiste de casos que testam diferentes tipos de parâmetros de entrada - nossa segunda hipótese. Existem alguns testes que não possuem propósito e alguns que testam valores de entrada semelhantes, sendo alguns inclusive duplicados, mas isto ocorre em uma escala consideravelmente insignificante.When studying the test suites from some Java libraries, it is possible to observe a certain redundancy in the execution paths that some of the test cases take, whose reason is not known. In order to understand this issue, we establish two hypotheses: one that this redundancy happens due to the suite being an automatically generated suite, and one that it comes from test cases that test inputs of different natures, such as empty strings or null strings. To validate these hypotheses, we perform a detailed study by analysing the behavior of the test cases and the associated application code. We consider a code coverage criterion, computed by generating the test path of each test case in the suite and comparing these with the prime path coverage of the tested methods. For this procedure we first adapted a coverage analysis tool that considers the prime path coverage criterion, and afterwards we collected additional data about the application code and the test suite in order to understand the rationale behind the tests. Finally, a manual analysis is made in the source code of the methods being tested and their respective test cases. Results show that the projects’ suites are closer to a developer-implemented suite, and not a generated one. It also shows that, when studying the tests with redundant test paths, most consist of cases that test different types of input - our second hypothesis. There are some cases that do not have a clear purpose and test very similar inputs, with some being even duplicated, but this occurs in a considerably insignificant scale.application/pdfengDesenvolvimento : SoftwareTeste : SoftwareTest suitesJava LibrariesPrime Path CoverageTest case redundancyAnalysis and validation of test case redundancy in testing suites of Java librariesAnálise e validação de redundância em casos de teste em suítes de bibliotecas Java info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisUniversidade Federal do Rio Grande do SulInstituto de InformáticaPorto Alegre, BR-RS2020Ciência da Computação: Ênfase em Ciência da Computação: Bachareladograduaçãoinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFRGSinstname:Universidade Federal do Rio Grande do Sul (UFRGS)instacron:UFRGSTEXT001127428.pdf.txt001127428.pdf.txtExtracted Texttext/plain95679http://www.lume.ufrgs.br/bitstream/10183/223588/2/001127428.pdf.txt6204d79d92389721e40a505485cd75adMD52ORIGINAL001127428.pdfTexto completo (inglês)application/pdf2758618http://www.lume.ufrgs.br/bitstream/10183/223588/1/001127428.pdfcb43f77700efa84778a0a5a366aeba04MD5110183/2235882021-08-18 04:38:50.93148oai:www.lume.ufrgs.br:10183/223588Repositório de PublicaçõesPUBhttps://lume.ufrgs.br/oai/requestopendoar:2021-08-18T07:38:50Repositório Institucional da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS)false
dc.title.pt_BR.fl_str_mv Analysis and validation of test case redundancy in testing suites of Java libraries
dc.title.alternative.pt.fl_str_mv Análise e validação de redundância em casos de teste em suítes de bibliotecas Java
title Analysis and validation of test case redundancy in testing suites of Java libraries
spellingShingle Analysis and validation of test case redundancy in testing suites of Java libraries
Wolfart, Murilo
Desenvolvimento : Software
Teste : Software
Test suites
Java Libraries
Prime Path Coverage
Test case redundancy
title_short Analysis and validation of test case redundancy in testing suites of Java libraries
title_full Analysis and validation of test case redundancy in testing suites of Java libraries
title_fullStr Analysis and validation of test case redundancy in testing suites of Java libraries
title_full_unstemmed Analysis and validation of test case redundancy in testing suites of Java libraries
title_sort Analysis and validation of test case redundancy in testing suites of Java libraries
author Wolfart, Murilo
author_facet Wolfart, Murilo
author_role author
dc.contributor.author.fl_str_mv Wolfart, Murilo
dc.contributor.advisor1.fl_str_mv Cota, Erika Fernandes
contributor_str_mv Cota, Erika Fernandes
dc.subject.por.fl_str_mv Desenvolvimento : Software
Teste : Software
topic Desenvolvimento : Software
Teste : Software
Test suites
Java Libraries
Prime Path Coverage
Test case redundancy
dc.subject.eng.fl_str_mv Test suites
Java Libraries
Prime Path Coverage
Test case redundancy
description Ao estudar suítes de testes de algumas bibliotecas Java, é possível perceber uma certa redundância no caminho que alguns dos casos de teste tomam, cuja razão é desconhecida. A fim de entender este problema, estabelecemos duas hipóteses: uma de que esta redundância acontece devido à suíte ser automaticamente gerada utilizando uma ferramenta de geração automática de testes, e uma de que ela se origina em casos de teste que testam parâmetros de entrada de naturezas diferentes, como palavra vazia e palavra nula. Para validar estas hipóteses, fazemos um estudo detalhado, analisando o comportamento dos casos de teste associado ao código da aplicação. Levamos em consideração um critério de cobertura de código, computado gerando o caminho de execução de cada caso de teste presente na suíte e comparando estes com a cobertura de caminhos primos do método. Para este procedimento primeiro adaptamos uma ferramenta de análise de cobertura que considera o critério de caminhos primos, e posteriormente coletamos dados adicionais acerca do código da aplicação e da suíte para entender os objetivos dos testes. Após isto, uma análise manual é feita no código dos métodos sendo testado e seus respectivos casos de teste. Resultados mostram que as suítes dos projetos são mais próximas de uma suíte implementada por desenvolvedores, e não de uma suíte gerada automaticamente. Também é mostrado que, ao analisar os testes com caminhos de execução redundantes, a maioria consiste de casos que testam diferentes tipos de parâmetros de entrada - nossa segunda hipótese. Existem alguns testes que não possuem propósito e alguns que testam valores de entrada semelhantes, sendo alguns inclusive duplicados, mas isto ocorre em uma escala consideravelmente insignificante.
publishDate 2021
dc.date.accessioned.fl_str_mv 2021-07-10T04:52:21Z
dc.date.issued.fl_str_mv 2021
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10183/223588
dc.identifier.nrb.pt_BR.fl_str_mv 001127428
url http://hdl.handle.net/10183/223588
identifier_str_mv 001127428
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFRGS
instname:Universidade Federal do Rio Grande do Sul (UFRGS)
instacron:UFRGS
instname_str Universidade Federal do Rio Grande do Sul (UFRGS)
instacron_str UFRGS
institution UFRGS
reponame_str Repositório Institucional da UFRGS
collection Repositório Institucional da UFRGS
bitstream.url.fl_str_mv http://www.lume.ufrgs.br/bitstream/10183/223588/2/001127428.pdf.txt
http://www.lume.ufrgs.br/bitstream/10183/223588/1/001127428.pdf
bitstream.checksum.fl_str_mv 6204d79d92389721e40a505485cd75ad
cb43f77700efa84778a0a5a366aeba04
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS)
repository.mail.fl_str_mv
_version_ 1801224608807911424