Analysis and validation of test case redundancy in testing suites of Java libraries
Autor(a) principal: | |
---|---|
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 |