Uma metodologia para a geração de testes unitários baseada em extração de modelos
Autor(a) principal: | |
---|---|
Data de Publicação: | 2021 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da UFRGS |
Texto Completo: | http://hdl.handle.net/10183/218453 |
Resumo: | A geração de testes em sistemas já existentes, sem documentação atualizada ou sem testes legados, usualmente não é uma tarefa fácil, pois exige do desenvolvedor o trabalho de descobrir ou supor as regras que os testes devem executar para testar o sistema corretamente. Neste trabalho, propõe-se uma metodologia com o objetivo de possibilitar a criação semiautomática de testes unitários nesse cenário. A metodologia propõe a integração das técnicas de testes e verificação de modelos, utilizando a extração de modelos. A extração de modelos é usada para possibilitar a obtenção de um modelo de comportamento a partir de rastros de execução de alguns casos de teste executados sobre o código de interesse. Este modelo é analisado em uma ferramenta de verificação de modelos, gerando contraexemplos, os quais descrevem caminhos a partir do estado inicial que são diferentes daqueles constantes no modelo atual. Estes contraexemplos gerados são analisados a fim de verificar se permitem a criação de algum teste válido. A criação de um novo teste implica a geração de um novo rastro e, por consequência, a construção de um novo modelo contendo este novo comportamento do sistema, o que torna a abordagem iterativa. O processo de extração de modelos utilizado neste trabalho usa as ferramentas Labelled Transition Systems Extractor (LTSE) para a geração de um modelo no formato de Labelled Transition Systems (LTS) a partir de rastros deixados na execução da classe instrumentada. Nos experimentos realizados, foi analisada a eficácia da metodologia para a criação de testes unitários. Para isso, foram analisadas quatro classes de quatro sistemas de acesso público. A metodologia foi aplicada nessas quatro classes e foram verificadas três questões principais em relação a metodologia: se a metodologia permite a geração de testes, se os testes gerados permitiam o aumento de cobertura de branch ou linha e se a metodologia permite descobrir erros. Os resultados obtidos no experimento mostraram que, em geral, a metodologia permite a geração de testes e que a geração desses testes pode implicar o aumento de cobertura de branch ou linha. Foram realizadas análises dos resultados dos experimentos avaliando as possíveis relações entre algumas métricas de software de cada classe e os seus diferentes resultados obtidos na aplicação da metodologia. Além disso, foi mostrado no trabalho como a metodologia pode contribuir para a descoberta de erros na aplicação. |
id |
URGS_440b789e4d02bc349c652aa1972160a8 |
---|---|
oai_identifier_str |
oai:www.lume.ufrgs.br:10183/218453 |
network_acronym_str |
URGS |
network_name_str |
Biblioteca Digital de Teses e Dissertações da UFRGS |
repository_id_str |
1853 |
spelling |
Brito, Iara RamosDuarte, Lucio MauroCota, Erika Fernandes2021-03-06T04:32:06Z2021http://hdl.handle.net/10183/218453001123278A geração de testes em sistemas já existentes, sem documentação atualizada ou sem testes legados, usualmente não é uma tarefa fácil, pois exige do desenvolvedor o trabalho de descobrir ou supor as regras que os testes devem executar para testar o sistema corretamente. Neste trabalho, propõe-se uma metodologia com o objetivo de possibilitar a criação semiautomática de testes unitários nesse cenário. A metodologia propõe a integração das técnicas de testes e verificação de modelos, utilizando a extração de modelos. A extração de modelos é usada para possibilitar a obtenção de um modelo de comportamento a partir de rastros de execução de alguns casos de teste executados sobre o código de interesse. Este modelo é analisado em uma ferramenta de verificação de modelos, gerando contraexemplos, os quais descrevem caminhos a partir do estado inicial que são diferentes daqueles constantes no modelo atual. Estes contraexemplos gerados são analisados a fim de verificar se permitem a criação de algum teste válido. A criação de um novo teste implica a geração de um novo rastro e, por consequência, a construção de um novo modelo contendo este novo comportamento do sistema, o que torna a abordagem iterativa. O processo de extração de modelos utilizado neste trabalho usa as ferramentas Labelled Transition Systems Extractor (LTSE) para a geração de um modelo no formato de Labelled Transition Systems (LTS) a partir de rastros deixados na execução da classe instrumentada. Nos experimentos realizados, foi analisada a eficácia da metodologia para a criação de testes unitários. Para isso, foram analisadas quatro classes de quatro sistemas de acesso público. A metodologia foi aplicada nessas quatro classes e foram verificadas três questões principais em relação a metodologia: se a metodologia permite a geração de testes, se os testes gerados permitiam o aumento de cobertura de branch ou linha e se a metodologia permite descobrir erros. Os resultados obtidos no experimento mostraram que, em geral, a metodologia permite a geração de testes e que a geração desses testes pode implicar o aumento de cobertura de branch ou linha. Foram realizadas análises dos resultados dos experimentos avaliando as possíveis relações entre algumas métricas de software de cada classe e os seus diferentes resultados obtidos na aplicação da metodologia. Além disso, foi mostrado no trabalho como a metodologia pode contribuir para a descoberta de erros na aplicação.Generating tests for systems without documentation, documentation out-of-date or without legacy tests is not easy task because the developer has to discover the rules that tests must follow to correctly test the system. In this work, a methodology is presented to allow the semi-automatic creation of unit tests in this scenario. The methodology proposes the integration of Software Testing and Model Checking through Model Extraction. Model Extraction allows the generation of a behavior model from recorded execution traces, which can be obtained during the execution of some test performed on the code of interest. The generated model can then be analyzed in a model checking tool to generate counterexamples, which describe paths that are different from those currently in the model. The generated counterexamples are analyzed in the methodology in order to verify whether they allow the creation of any valid new test. The approach of the methodology is iterative because the generation of a new test implies the generation of a new trace and, consequently, the generation of a new model that includes the new observed behavior. The model extraction process applied in this work uses the Labelled Transition Systems Extractor (LTSE) tool to generate a model as a Labelled Transition System (LTS) through traces recorded during the execution of an instrumented component. In the experiments, the effectiveness of the methodology for creating unit tests was analyzed. For this analysis, four open source systems were used. The methodology was applied to components of these systems and three research questions were verified in relation to the methodology: whether the methodology allowed the generation of new tests, whether the generated tests allowed an increase in branch and/or line coverage, and whether the methodology could be used to uncover errors. The results of the experiments showed that, in general, the methodology allows the generation of new tests and that these new tests can lead to an increase in branch and line coverage. The possible relations between some software metrics for each component and their different results obtained in the application of the methodology were evaluated. In addition, it was shown how the methodology can contribute to the discovery of errors in the application.application/pdfporDesenvolvimento de softwareTeste de softwareModelos computacionaisUnit testingModel checkingModel extractionUma metodologia para a geração de testes unitários baseada em extração de modelosA methodology for the generation of unit tests based on model extraction info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisUniversidade Federal do Rio Grande do SulInstituto de InformáticaPrograma de Pós-Graduação em ComputaçãoPorto Alegre, BR-RS2021mestradoinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFRGSinstname:Universidade Federal do Rio Grande do Sul (UFRGS)instacron:UFRGSTEXT001123278.pdf.txt001123278.pdf.txtExtracted Texttext/plain152148http://www.lume.ufrgs.br/bitstream/10183/218453/2/001123278.pdf.txt229eb24417ef631dddfbbf6baa8e924cMD52ORIGINAL001123278.pdfTexto completoapplication/pdf803885http://www.lume.ufrgs.br/bitstream/10183/218453/1/001123278.pdf7b52f2b9bf6aeab131fdf18ae1588e3cMD5110183/2184532024-03-13 05:03:38.194945oai:www.lume.ufrgs.br:10183/218453Biblioteca Digital de Teses e Dissertaçõeshttps://lume.ufrgs.br/handle/10183/2PUBhttps://lume.ufrgs.br/oai/requestlume@ufrgs.br||lume@ufrgs.bropendoar:18532024-03-13T08:03:38Biblioteca Digital de Teses e Dissertações da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS)false |
dc.title.pt_BR.fl_str_mv |
Uma metodologia para a geração de testes unitários baseada em extração de modelos |
dc.title.alternative.en.fl_str_mv |
A methodology for the generation of unit tests based on model extraction |
title |
Uma metodologia para a geração de testes unitários baseada em extração de modelos |
spellingShingle |
Uma metodologia para a geração de testes unitários baseada em extração de modelos Brito, Iara Ramos Desenvolvimento de software Teste de software Modelos computacionais Unit testing Model checking Model extraction |
title_short |
Uma metodologia para a geração de testes unitários baseada em extração de modelos |
title_full |
Uma metodologia para a geração de testes unitários baseada em extração de modelos |
title_fullStr |
Uma metodologia para a geração de testes unitários baseada em extração de modelos |
title_full_unstemmed |
Uma metodologia para a geração de testes unitários baseada em extração de modelos |
title_sort |
Uma metodologia para a geração de testes unitários baseada em extração de modelos |
author |
Brito, Iara Ramos |
author_facet |
Brito, Iara Ramos |
author_role |
author |
dc.contributor.author.fl_str_mv |
Brito, Iara Ramos |
dc.contributor.advisor1.fl_str_mv |
Duarte, Lucio Mauro |
dc.contributor.advisor-co1.fl_str_mv |
Cota, Erika Fernandes |
contributor_str_mv |
Duarte, Lucio Mauro Cota, Erika Fernandes |
dc.subject.por.fl_str_mv |
Desenvolvimento de software Teste de software Modelos computacionais |
topic |
Desenvolvimento de software Teste de software Modelos computacionais Unit testing Model checking Model extraction |
dc.subject.eng.fl_str_mv |
Unit testing Model checking Model extraction |
description |
A geração de testes em sistemas já existentes, sem documentação atualizada ou sem testes legados, usualmente não é uma tarefa fácil, pois exige do desenvolvedor o trabalho de descobrir ou supor as regras que os testes devem executar para testar o sistema corretamente. Neste trabalho, propõe-se uma metodologia com o objetivo de possibilitar a criação semiautomática de testes unitários nesse cenário. A metodologia propõe a integração das técnicas de testes e verificação de modelos, utilizando a extração de modelos. A extração de modelos é usada para possibilitar a obtenção de um modelo de comportamento a partir de rastros de execução de alguns casos de teste executados sobre o código de interesse. Este modelo é analisado em uma ferramenta de verificação de modelos, gerando contraexemplos, os quais descrevem caminhos a partir do estado inicial que são diferentes daqueles constantes no modelo atual. Estes contraexemplos gerados são analisados a fim de verificar se permitem a criação de algum teste válido. A criação de um novo teste implica a geração de um novo rastro e, por consequência, a construção de um novo modelo contendo este novo comportamento do sistema, o que torna a abordagem iterativa. O processo de extração de modelos utilizado neste trabalho usa as ferramentas Labelled Transition Systems Extractor (LTSE) para a geração de um modelo no formato de Labelled Transition Systems (LTS) a partir de rastros deixados na execução da classe instrumentada. Nos experimentos realizados, foi analisada a eficácia da metodologia para a criação de testes unitários. Para isso, foram analisadas quatro classes de quatro sistemas de acesso público. A metodologia foi aplicada nessas quatro classes e foram verificadas três questões principais em relação a metodologia: se a metodologia permite a geração de testes, se os testes gerados permitiam o aumento de cobertura de branch ou linha e se a metodologia permite descobrir erros. Os resultados obtidos no experimento mostraram que, em geral, a metodologia permite a geração de testes e que a geração desses testes pode implicar o aumento de cobertura de branch ou linha. Foram realizadas análises dos resultados dos experimentos avaliando as possíveis relações entre algumas métricas de software de cada classe e os seus diferentes resultados obtidos na aplicação da metodologia. Além disso, foi mostrado no trabalho como a metodologia pode contribuir para a descoberta de erros na aplicação. |
publishDate |
2021 |
dc.date.accessioned.fl_str_mv |
2021-03-06T04:32:06Z |
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/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10183/218453 |
dc.identifier.nrb.pt_BR.fl_str_mv |
001123278 |
url |
http://hdl.handle.net/10183/218453 |
identifier_str_mv |
001123278 |
dc.language.iso.fl_str_mv |
por |
language |
por |
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:Biblioteca Digital de Teses e Dissertações 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 |
Biblioteca Digital de Teses e Dissertações da UFRGS |
collection |
Biblioteca Digital de Teses e Dissertações da UFRGS |
bitstream.url.fl_str_mv |
http://www.lume.ufrgs.br/bitstream/10183/218453/2/001123278.pdf.txt http://www.lume.ufrgs.br/bitstream/10183/218453/1/001123278.pdf |
bitstream.checksum.fl_str_mv |
229eb24417ef631dddfbbf6baa8e924c 7b52f2b9bf6aeab131fdf18ae1588e3c |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS) |
repository.mail.fl_str_mv |
lume@ufrgs.br||lume@ufrgs.br |
_version_ |
1810085546357161984 |