Uma metodologia para a geração de testes unitários baseada em extração de modelos

Detalhes bibliográficos
Autor(a) principal: Brito, Iara Ramos
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