RAIDE: uma abordagem semi-automatizada para identificação e refatoração de test smells
Autor(a) principal: | |
---|---|
Data de Publicação: | 2020 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Repositório Institucional da UFBA |
Texto Completo: | http://repositorio.ufba.br/ri/handle/ri/33621 |
Resumo: | Teste de unidade é um tipo específico de teste que lida com as menores unidades do sistema. Ele representa o primeiro teste após a implementação do componente. Quando a implementação dos testes de unidade não segue boas práticas, é provável que anti-padrões sejam introduzidos no código. Anti-padrões nos testes, também conhecidos como test smells, são más decisões para projetar e implementar código de teste. Os test smells prejudicam a qualidade do código de teste e reduzem a capacidade de os desenvolvedores interagirem com o código de teste, o que dificulta a compreensão, leitura e, consequentemente, a manutenibilidade e evolução do sistema. Uma estratégia para remover test smells é a refatoração do código de teste. Poucos estudos na literatura oferecem suporte automatizado para a detecção e refatoração de test smells em projetos Java com o framework JUnit. Assim, o presente estudo fornece uma abordagem semi-automatizada para auxiliar a identificação de test smells e sugerir refatorações para o código de teste em projetos que utilizam as tecnologias Java e JUnit. A abordagem proposta é apoiada pela ferramenta RAIDE, desenvolvida de modo integrado ao Eclipse IDE, para lidar com código de teste desenvolvido em Java. O RAIDE oferece suporte a dois test smells: Assertion Roulette e Duplicate Assert. Apesar de existir outras ferramentas capazes de identificar test smells, até onde sabemos, ainda não há evidências de ferramentas que forneçam suporte automatizado a refatoração de test smells. Além disso, as ferramentas existentes não fornecem interfaces amigáveis e integradas a uma IDE para a identificação de test smells. Para avaliar como a abordagem proposta pode contribuir com a melhoria na qualidade do código de teste, realizamos um estudo experimental. Comparamos nossa ferramenta com o estado da arte e verificamos que o uso da abordagem RAIDE possibilitou a identificação de test smells de forma mais fácil e rápida. Além disso, RAIDE também se mostrou eficiente na refatoração de métodos de teste. Como RAIDE é uma ferramenta integrada ao Eclipse IDE, os processos de identificação e refatoração são mais rápidos e intuitivos em comparação com o estado da arte e a refatoração manual,uma vez que com o RAIDE é possível realizar a identificação de test smells e a refatoração com alguns cliques em apenas alguns segundos. |
id |
UFBA-2_370edbb7c240f9a07270ae8074ccca1b |
---|---|
oai_identifier_str |
oai:repositorio.ufba.br:ri/33621 |
network_acronym_str |
UFBA-2 |
network_name_str |
Repositório Institucional da UFBA |
repository_id_str |
1932 |
spelling |
Santana, Railana dos SantosSantana, Railana dos SantosMachado, Ivan do CarmoSoares, Larissa RochaNeves, Vânia de OliveriaSchobbens, Pierre-Yves2021-06-22T17:23:05Z2021-06-22T17:23:05Z2021-06-222020-07-03http://repositorio.ufba.br/ri/handle/ri/33621Teste de unidade é um tipo específico de teste que lida com as menores unidades do sistema. Ele representa o primeiro teste após a implementação do componente. Quando a implementação dos testes de unidade não segue boas práticas, é provável que anti-padrões sejam introduzidos no código. Anti-padrões nos testes, também conhecidos como test smells, são más decisões para projetar e implementar código de teste. Os test smells prejudicam a qualidade do código de teste e reduzem a capacidade de os desenvolvedores interagirem com o código de teste, o que dificulta a compreensão, leitura e, consequentemente, a manutenibilidade e evolução do sistema. Uma estratégia para remover test smells é a refatoração do código de teste. Poucos estudos na literatura oferecem suporte automatizado para a detecção e refatoração de test smells em projetos Java com o framework JUnit. Assim, o presente estudo fornece uma abordagem semi-automatizada para auxiliar a identificação de test smells e sugerir refatorações para o código de teste em projetos que utilizam as tecnologias Java e JUnit. A abordagem proposta é apoiada pela ferramenta RAIDE, desenvolvida de modo integrado ao Eclipse IDE, para lidar com código de teste desenvolvido em Java. O RAIDE oferece suporte a dois test smells: Assertion Roulette e Duplicate Assert. Apesar de existir outras ferramentas capazes de identificar test smells, até onde sabemos, ainda não há evidências de ferramentas que forneçam suporte automatizado a refatoração de test smells. Além disso, as ferramentas existentes não fornecem interfaces amigáveis e integradas a uma IDE para a identificação de test smells. Para avaliar como a abordagem proposta pode contribuir com a melhoria na qualidade do código de teste, realizamos um estudo experimental. Comparamos nossa ferramenta com o estado da arte e verificamos que o uso da abordagem RAIDE possibilitou a identificação de test smells de forma mais fácil e rápida. Além disso, RAIDE também se mostrou eficiente na refatoração de métodos de teste. Como RAIDE é uma ferramenta integrada ao Eclipse IDE, os processos de identificação e refatoração são mais rápidos e intuitivos em comparação com o estado da arte e a refatoração manual,uma vez que com o RAIDE é possível realizar a identificação de test smells e a refatoração com alguns cliques em apenas alguns segundos.Unit testing is a specific type of test that deals with the smallest units in the system. It represents the first test after the component is implemented. When the implementation of unit tests does not follow good practices, anti-patterns are likely to be introduced in the code. Anti-patterns in tests, also known as test smells, are poor decisions for designing and implementing test code. Test smells impair the quality of the test code and reduce the ability of developers to interact with the test code, making it difficult to understand, read, and, consequently, maintain and evolve the system. One strategy to remove test smells is to refactor the test code. Few studies in the literature offer automated support for the detection and refactoring of test smells in Java projects with the JUnit framework. Therefore, this study provides a semi-automated approach to assist the identification of test smells and suggest refactorings for the test code in projects using Java and JUnit technologies. The proposed approach is supported by the RefActorIng test Design Errors (RAIDE) tool, an Eclipse IDE plugin, to deal with Java test code. RAIDE supports two test smells, Assertion Roulette and Duplicate Assert. Although there are other tools capable of identifying test smells, as far as we know, there is no evidence of tools that provide automated support for test smells refactoring. In addition, we are unaware of a user-friendly and IDE-integrated tool to identify test smells. To assess how the proposed approach can improve the quality of the test code, we carried out an experimental study. We compared RAIDE with the state-of-the-art tool and found that when using RAIDE, test smells are easier and faster to be identified. Also, RAIDE proved to be efficient in refactoring test methods. The identification and refactoring processes are faster and more intuitive compared to the state-of-the-art tool and the manual refactoring. With RAIDE, it is possible to perform test smells identification and refactoring with a few clicks in a few seconds.Submitted by Railana Santana (railanassantana@gmail.com) on 2021-04-15T18:41:37Z No. of bitstreams: 1 Dissertacao_RailanaSantana_VersaoFinal.pdf: 15244135 bytes, checksum: 1889aba42d3a53095fcb894cb5644948 (MD5)Approved for entry into archive by Solange Rocha (soluny@gmail.com) on 2021-06-22T17:23:05Z (GMT) No. of bitstreams: 1 Dissertacao_RailanaSantana_VersaoFinal.pdf: 15244135 bytes, checksum: 1889aba42d3a53095fcb894cb5644948 (MD5)Made available in DSpace on 2021-06-22T17:23:05Z (GMT). No. of bitstreams: 1 Dissertacao_RailanaSantana_VersaoFinal.pdf: 15244135 bytes, checksum: 1889aba42d3a53095fcb894cb5644948 (MD5)Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES)Ciências Exatas e da TerraCiência da ComputaçãoMetodologia e Técnicas da ComputaçãoEngenharia de SoftwareTest SmellsTeste de UnidadeRefatoração de testeTeste de software automatizado.Software - RefatoraçãoSoftware - TestesRefActorIng test Design Errors (RAIDE)RAIDE: uma abordagem semi-automatizada para identificação e refatoração de test smellsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisUniversidade Federal da BahiaInstituto de Matemática e EstatísticaDepartamento de Ciência da Computaçãoem Ciência da ComputaçãoUFBAbrasilinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFBAinstname:Universidade Federal da Bahia (UFBA)instacron:UFBAORIGINALDissertacao_RailanaSantana_VersaoFinal.pdfDissertacao_RailanaSantana_VersaoFinal.pdfapplication/pdf15244135https://repositorio.ufba.br/bitstream/ri/33621/1/Dissertacao_RailanaSantana_VersaoFinal.pdf1889aba42d3a53095fcb894cb5644948MD51LICENSElicense.txtlicense.txttext/plain1442https://repositorio.ufba.br/bitstream/ri/33621/2/license.txt817035eff4c4c7dda1d546e170ee2a1aMD52TEXTDissertacao_RailanaSantana_VersaoFinal.pdf.txtDissertacao_RailanaSantana_VersaoFinal.pdf.txtExtracted texttext/plain325724https://repositorio.ufba.br/bitstream/ri/33621/3/Dissertacao_RailanaSantana_VersaoFinal.pdf.txt6becc93a16885b0750a82f5938f27850MD53ri/336212022-07-05 14:03:49.539oai:repositorio.ufba.br:ri/33621VGVybW8gZGUgTGljZW7vv71hLCBu77+9byBleGNsdXNpdm8sIHBhcmEgbyBkZXDvv71zaXRvIG5vIFJlcG9zaXTvv71yaW8gSW5zdGl0dWNpb25hbCBkYSBVRkJBLgoKIFBlbG8gcHJvY2Vzc28gZGUgc3VibWlzc8ODwqNvIGRlIGRvY3VtZW50b3MsIG8gYXV0b3Igb3Ugc2V1IHJlcHJlc2VudGFudGUgbGVnYWwsIGFvIGFjZWl0YXIgZXNzZSB0ZXJtbyBkZSBsaWNlbsODwqdhLCBjb25jZWRlIGFvIFJlcG9zaXTDg8KzcmlvIEluc3RpdHVjaW9uYWwgZGEgVW5pdmVyc2lkYWRlIEZlZGVyYWwgZGEgQmFoaWEgbyBkaXJlaXRvIGRlIG1hbnRlciB1bWEgY8ODwrNwaWEgZW0gc2V1IHJlcG9zaXTDg8KzcmlvIGNvbSBhIGZpbmFsaWRhZGUsIHByaW1laXJhLCBkZSBwcmVzZXJ2YcODwqfDg8Kjby4gCgpFc3NlcyB0ZXJtb3MsIG7Dg8KjbyBleGNsdXNpdm9zLCBtYW50w4PCqW0gb3MgZGlyZWl0b3MgZGUgYXV0b3IvY29weXJpZ2h0LCBtYXMgZW50ZW5kZSBvIGRvY3VtZW50byBjb21vIHBhcnRlIGRvIGFjZXJ2byBpbnRlbGVjdHVhbCBkZXNzYSBVbml2ZXJzaWRhZGUuCgogUGFyYSBvcyBkb2N1bWVudG9zIHB1YmxpY2Fkb3MgY29tIHJlcGFzc2UgZGUgZGlyZWl0b3MgZGUgZGlzdHJpYnVpw4PCp8ODwqNvLCBlc3NlIHRlcm1vIGRlIGxpY2Vuw4PCp2EgZW50ZW5kZSBxdWU6CgogTWFudGVuZG8gb3MgZGlyZWl0b3MgYXV0b3JhaXMsIHJlcGFzc2Fkb3MgYSB0ZXJjZWlyb3MsIGVtIGNhc28gZGUgcHVibGljYcODwqfDg8K1ZXMsIG8gcmVwb3NpdMODwrNyaW8gcG9kZSByZXN0cmluZ2lyIG8gYWNlc3NvIGFvIHRleHRvIGludGVncmFsLCBtYXMgbGliZXJhIGFzIGluZm9ybWHDg8Knw4PCtWVzIHNvYnJlIG8gZG9jdW1lbnRvIChNZXRhZGFkb3MgZGVzY3JpdGl2b3MpLgoKIERlc3RhIGZvcm1hLCBhdGVuZGVuZG8gYW9zIGFuc2Vpb3MgZGVzc2EgdW5pdmVyc2lkYWRlIGVtIG1hbnRlciBzdWEgcHJvZHXDg8Knw4PCo28gY2llbnTDg8KtZmljYSBjb20gYXMgcmVzdHJpw4PCp8ODwrVlcyBpbXBvc3RhcyBwZWxvcyBlZGl0b3JlcyBkZSBwZXJpw4PCs2RpY29zLgoKIFBhcmEgYXMgcHVibGljYcODwqfDg8K1ZXMgc2VtIGluaWNpYXRpdmFzIHF1ZSBzZWd1ZW0gYSBwb2zDg8KtdGljYSBkZSBBY2Vzc28gQWJlcnRvLCBvcyBkZXDDg8Kzc2l0b3MgY29tcHVsc8ODwrNyaW9zIG5lc3NlIHJlcG9zaXTDg8KzcmlvIG1hbnTDg8KpbSBvcyBkaXJlaXRvcyBhdXRvcmFpcywgbWFzIG1hbnTDg8KpbSBhY2Vzc28gaXJyZXN0cml0byBhb3MgbWV0YWRhZG9zIGUgdGV4dG8gY29tcGxldG8uIEFzc2ltLCBhIGFjZWl0YcODwqfDg8KjbyBkZXNzZSB0ZXJtbyBuw4PCo28gbmVjZXNzaXRhIGRlIGNvbnNlbnRpbWVudG8gcG9yIHBhcnRlIGRlIGF1dG9yZXMvZGV0ZW50b3JlcyBkb3MgZGlyZWl0b3MsIHBvciBlc3RhcmVtIGVtIGluaWNpYXRpdmFzIGRlIGFjZXNzbyBhYmVydG8uCg==Repositório InstitucionalPUBhttp://192.188.11.11:8080/oai/requestopendoar:19322022-07-05T17:03:49Repositório Institucional da UFBA - Universidade Federal da Bahia (UFBA)false |
dc.title.pt_BR.fl_str_mv |
RAIDE: uma abordagem semi-automatizada para identificação e refatoração de test smells |
title |
RAIDE: uma abordagem semi-automatizada para identificação e refatoração de test smells |
spellingShingle |
RAIDE: uma abordagem semi-automatizada para identificação e refatoração de test smells Santana, Railana dos Santos Ciências Exatas e da Terra Ciência da Computação Metodologia e Técnicas da Computação Engenharia de Software Test Smells Teste de Unidade Refatoração de teste Teste de software automatizado. Software - Refatoração Software - Testes RefActorIng test Design Errors (RAIDE) |
title_short |
RAIDE: uma abordagem semi-automatizada para identificação e refatoração de test smells |
title_full |
RAIDE: uma abordagem semi-automatizada para identificação e refatoração de test smells |
title_fullStr |
RAIDE: uma abordagem semi-automatizada para identificação e refatoração de test smells |
title_full_unstemmed |
RAIDE: uma abordagem semi-automatizada para identificação e refatoração de test smells |
title_sort |
RAIDE: uma abordagem semi-automatizada para identificação e refatoração de test smells |
author |
Santana, Railana dos Santos |
author_facet |
Santana, Railana dos Santos |
author_role |
author |
dc.contributor.author.fl_str_mv |
Santana, Railana dos Santos Santana, Railana dos Santos |
dc.contributor.advisor1.fl_str_mv |
Machado, Ivan do Carmo |
dc.contributor.advisor-co1.fl_str_mv |
Soares, Larissa Rocha |
dc.contributor.referee1.fl_str_mv |
Neves, Vânia de Oliveria Schobbens, Pierre-Yves |
contributor_str_mv |
Machado, Ivan do Carmo Soares, Larissa Rocha Neves, Vânia de Oliveria Schobbens, Pierre-Yves |
dc.subject.cnpq.fl_str_mv |
Ciências Exatas e da Terra Ciência da Computação Metodologia e Técnicas da Computação Engenharia de Software |
topic |
Ciências Exatas e da Terra Ciência da Computação Metodologia e Técnicas da Computação Engenharia de Software Test Smells Teste de Unidade Refatoração de teste Teste de software automatizado. Software - Refatoração Software - Testes RefActorIng test Design Errors (RAIDE) |
dc.subject.por.fl_str_mv |
Test Smells Teste de Unidade Refatoração de teste Teste de software automatizado. Software - Refatoração Software - Testes RefActorIng test Design Errors (RAIDE) |
description |
Teste de unidade é um tipo específico de teste que lida com as menores unidades do sistema. Ele representa o primeiro teste após a implementação do componente. Quando a implementação dos testes de unidade não segue boas práticas, é provável que anti-padrões sejam introduzidos no código. Anti-padrões nos testes, também conhecidos como test smells, são más decisões para projetar e implementar código de teste. Os test smells prejudicam a qualidade do código de teste e reduzem a capacidade de os desenvolvedores interagirem com o código de teste, o que dificulta a compreensão, leitura e, consequentemente, a manutenibilidade e evolução do sistema. Uma estratégia para remover test smells é a refatoração do código de teste. Poucos estudos na literatura oferecem suporte automatizado para a detecção e refatoração de test smells em projetos Java com o framework JUnit. Assim, o presente estudo fornece uma abordagem semi-automatizada para auxiliar a identificação de test smells e sugerir refatorações para o código de teste em projetos que utilizam as tecnologias Java e JUnit. A abordagem proposta é apoiada pela ferramenta RAIDE, desenvolvida de modo integrado ao Eclipse IDE, para lidar com código de teste desenvolvido em Java. O RAIDE oferece suporte a dois test smells: Assertion Roulette e Duplicate Assert. Apesar de existir outras ferramentas capazes de identificar test smells, até onde sabemos, ainda não há evidências de ferramentas que forneçam suporte automatizado a refatoração de test smells. Além disso, as ferramentas existentes não fornecem interfaces amigáveis e integradas a uma IDE para a identificação de test smells. Para avaliar como a abordagem proposta pode contribuir com a melhoria na qualidade do código de teste, realizamos um estudo experimental. Comparamos nossa ferramenta com o estado da arte e verificamos que o uso da abordagem RAIDE possibilitou a identificação de test smells de forma mais fácil e rápida. Além disso, RAIDE também se mostrou eficiente na refatoração de métodos de teste. Como RAIDE é uma ferramenta integrada ao Eclipse IDE, os processos de identificação e refatoração são mais rápidos e intuitivos em comparação com o estado da arte e a refatoração manual,uma vez que com o RAIDE é possível realizar a identificação de test smells e a refatoração com alguns cliques em apenas alguns segundos. |
publishDate |
2020 |
dc.date.submitted.none.fl_str_mv |
2020-07-03 |
dc.date.accessioned.fl_str_mv |
2021-06-22T17:23:05Z |
dc.date.available.fl_str_mv |
2021-06-22T17:23:05Z |
dc.date.issued.fl_str_mv |
2021-06-22 |
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://repositorio.ufba.br/ri/handle/ri/33621 |
url |
http://repositorio.ufba.br/ri/handle/ri/33621 |
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.publisher.none.fl_str_mv |
Universidade Federal da Bahia Instituto de Matemática e Estatística Departamento de Ciência da Computação |
dc.publisher.program.fl_str_mv |
em Ciência da Computação |
dc.publisher.initials.fl_str_mv |
UFBA |
dc.publisher.country.fl_str_mv |
brasil |
publisher.none.fl_str_mv |
Universidade Federal da Bahia Instituto de Matemática e Estatística Departamento de Ciência da Computação |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFBA instname:Universidade Federal da Bahia (UFBA) instacron:UFBA |
instname_str |
Universidade Federal da Bahia (UFBA) |
instacron_str |
UFBA |
institution |
UFBA |
reponame_str |
Repositório Institucional da UFBA |
collection |
Repositório Institucional da UFBA |
bitstream.url.fl_str_mv |
https://repositorio.ufba.br/bitstream/ri/33621/1/Dissertacao_RailanaSantana_VersaoFinal.pdf https://repositorio.ufba.br/bitstream/ri/33621/2/license.txt https://repositorio.ufba.br/bitstream/ri/33621/3/Dissertacao_RailanaSantana_VersaoFinal.pdf.txt |
bitstream.checksum.fl_str_mv |
1889aba42d3a53095fcb894cb5644948 817035eff4c4c7dda1d546e170ee2a1a 6becc93a16885b0750a82f5938f27850 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFBA - Universidade Federal da Bahia (UFBA) |
repository.mail.fl_str_mv |
|
_version_ |
1808459626274881536 |