DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket

Detalhes bibliográficos
Ano de defesa: 2025
Autor(a) principal: SILVA, Ruan Carlos Alves da
Orientador(a): REBÊLO, Henrique Emanuel Mostaert
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Pernambuco
Programa de Pós-Graduação: Programa de Pos Graduacao em Ciencia da Computacao
Departamento: Não Informado pela instituição
País: Brasil
Palavras-chave em Português:
DSL
TDD
Link de acesso: https://repositorio.ufpe.br/handle/123456789/67612
Resumo: Desenvolver software de qualidade continua sendo um desafio, devido à complexidade dos sistemas, à velocidade de entrega, a equipes desalinhadas, a mudanças frequentes de escopo e outros fatores. Nesse cenário, práticas como o Test-Driven Development (TDD) podem facilitar a implementação de testes e contribuir para a melhoria da qualidade do software. Contudo, sua adoção ainda apresenta limitações, como a complexidade na elaboração e na manutenção manual dos testes à medida que a aplicação cresce, o que exige tempo e esforço consideráveis para sustentar a prática. Para enfrentar essas dificuldades, esta dissertação propõe uma abordagem que simplifica a implementação e manutenção de testes unitários em Java, incentivando a prática do TDD. A solução consiste em uma Domain-Specific Language (DSL) chamada JCheck, inspirada na linguagem Racket e integrada ao framework JUnit 5. O parser da DSL foi gerado com ANother Tool for Language Recognition, versão 4 (ANTLR4) e a DSL foi incorporada em uma anotação Java aplicada a métodos, simplificando a especificação dos casos de teste e integrando-os de forma natural ao processo de desenvolvimento. A abordagem foi validada por meio de uma prova de conceito em um cenário realista, executando testes com diferentes instruções da DSL e avaliando o esforço de escrita da DSL por meio da contagem de linhas de código. Como resultado da prova de conceito, a DSL apresentada atingiu os objetivos da pesquisa, realizando com sucesso testes unitários em Java de acordo com as instruções fornecidas, além de demonstrar, por meio da análise da contagem de linhas de código, que sua utilização pode reduzir o esforço na escrita dos testes unitários. Dessa forma, podemos concluir que a JCheck é uma ferramenta promissora para facilitar a criação de testes unitários em Java. Além disso, por adotar uma abordagem que aproxima a definição dos testes dos próprios métodos, a DSL torna mais fácil a prática do TDD.
id UFPE_ef5f6d07e0bbcbd969e6c0720deefadc
oai_identifier_str oai:repositorio.ufpe.br:123456789/67612
network_acronym_str UFPE
network_name_str Repositório Institucional da UFPE
repository_id_str
spelling SILVA, Ruan Carlos Alves dahttp://lattes.cnpq.br/9815464113475846http://lattes.cnpq.br/2340616806258461https://orcid.org/0000-0002-1932-8706REBÊLO, Henrique Emanuel Mostaert2026-01-14T14:32:34Z2026-01-14T14:32:34Z2025-08-29SILVA, Ruan Carlos Alves da. DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket. 2025. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Pernambuco, Recife, 2025.https://repositorio.ufpe.br/handle/123456789/67612Desenvolver software de qualidade continua sendo um desafio, devido à complexidade dos sistemas, à velocidade de entrega, a equipes desalinhadas, a mudanças frequentes de escopo e outros fatores. Nesse cenário, práticas como o Test-Driven Development (TDD) podem facilitar a implementação de testes e contribuir para a melhoria da qualidade do software. Contudo, sua adoção ainda apresenta limitações, como a complexidade na elaboração e na manutenção manual dos testes à medida que a aplicação cresce, o que exige tempo e esforço consideráveis para sustentar a prática. Para enfrentar essas dificuldades, esta dissertação propõe uma abordagem que simplifica a implementação e manutenção de testes unitários em Java, incentivando a prática do TDD. A solução consiste em uma Domain-Specific Language (DSL) chamada JCheck, inspirada na linguagem Racket e integrada ao framework JUnit 5. O parser da DSL foi gerado com ANother Tool for Language Recognition, versão 4 (ANTLR4) e a DSL foi incorporada em uma anotação Java aplicada a métodos, simplificando a especificação dos casos de teste e integrando-os de forma natural ao processo de desenvolvimento. A abordagem foi validada por meio de uma prova de conceito em um cenário realista, executando testes com diferentes instruções da DSL e avaliando o esforço de escrita da DSL por meio da contagem de linhas de código. Como resultado da prova de conceito, a DSL apresentada atingiu os objetivos da pesquisa, realizando com sucesso testes unitários em Java de acordo com as instruções fornecidas, além de demonstrar, por meio da análise da contagem de linhas de código, que sua utilização pode reduzir o esforço na escrita dos testes unitários. Dessa forma, podemos concluir que a JCheck é uma ferramenta promissora para facilitar a criação de testes unitários em Java. Além disso, por adotar uma abordagem que aproxima a definição dos testes dos próprios métodos, a DSL torna mais fácil a prática do TDD.Developing high-quality software remains a challenge due to system complexity, delivery speed, misaligned teams, frequent scope changes, and other factors. In this scenario, practices such as Test-Driven Development (TDD) can facilitate test implementation and contribute to improving software quality. However, its adoption still presents limitations, such as the complexity in the creation and manual maintenance of tests as the application grows, requiring considerable time and effort to sustain the practice. To address these difficulties, this dissertation proposes an approach that simplifies the implementation and maintenance of unit tests in Java, encouraging the practice of TDD. The solution consists of a Domain-Specific Language (DSL) called JCheck, inspired by the Racket language and integrated with the JUnit 5 framework. The DSL parser was generated with ANother Tool for Language Recognition, version 4 (ANTLR4), and the DSL was incorporated into a Java annotation applied to methods, simplifying the specification of test cases and integrating them naturally into the development process. The approach was validated through a proof of concept in a realistic scenario, executing tests with different DSL instructions and evaluating the effort required to write the DSL by counting lines of code. As a result of the proof of concept, the presented DSL achieved the research objectives, successfully performing unit tests in Java according to the provided instructions, and demonstrating, through the analysis of the line count, that its use can reduce the effort in writing unit tests. Therefore, we can conclude that JCheck is a promising tool to facilitate the creation of unit tests in Java. Furthermore, by adopting an approach that brings the definition of tests closer to the methods themselves, the DSL makes the practice of TDD easier.porUniversidade Federal de PernambucoPrograma de Pos Graduacao em Ciencia da ComputacaoUFPEBrasilhttps://creativecommons.org/licenses/by-nc-nd/4.0/info:eu-repo/semantics/openAccessDSLRacketTDDJUnit 5ANTLR4DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racketinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesismestradoreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPEORIGINALDISSERTAÇÃO Ruan Carlos Alves da Silva.pdfDISSERTAÇÃO Ruan Carlos Alves da Silva.pdfapplication/pdf1428706https://repositorio.ufpe.br/bitstream/123456789/67612/1/DISSERTA%c3%87%c3%83O%20Ruan%20Carlos%20Alves%20da%20Silva.pdf16a1b0cab569aebcdcd9ba4dcb96837cMD51TEXTDISSERTAÇÃO Ruan Carlos Alves da Silva.pdf.txtDISSERTAÇÃO Ruan Carlos Alves da Silva.pdf.txtExtracted texttext/plain130260https://repositorio.ufpe.br/bitstream/123456789/67612/3/DISSERTA%c3%87%c3%83O%20Ruan%20Carlos%20Alves%20da%20Silva.pdf.txt417c30d0b70453ed96930058a3c2caddMD53THUMBNAILDISSERTAÇÃO Ruan Carlos Alves da Silva.pdf.jpgDISSERTAÇÃO Ruan Carlos Alves da Silva.pdf.jpgGenerated Thumbnailimage/jpeg1233https://repositorio.ufpe.br/bitstream/123456789/67612/4/DISSERTA%c3%87%c3%83O%20Ruan%20Carlos%20Alves%20da%20Silva.pdf.jpgf88367415d93abdcc5ddaf47bc3c590dMD54LICENSElicense.txtlicense.txttext/plain; charset=utf-82362https://repositorio.ufpe.br/bitstream/123456789/67612/2/license.txt5e89a1613ddc8510c6576f4b23a78973MD52123456789/676122026-01-18 16:52:20.782oai:repositorio.ufpe.br:123456789/67612VGVybW8gZGUgRGVww7NzaXRvIExlZ2FsIGUgQXV0b3JpemHDp8OjbyBwYXJhIFB1YmxpY2l6YcOnw6NvIGRlIERvY3VtZW50b3Mgbm8gUmVwb3NpdMOzcmlvIERpZ2l0YWwgZGEgVUZQRQoKCkRlY2xhcm8gZXN0YXIgY2llbnRlIGRlIHF1ZSBlc3RlIFRlcm1vIGRlIERlcMOzc2l0byBMZWdhbCBlIEF1dG9yaXphw6fDo28gdGVtIG8gb2JqZXRpdm8gZGUgZGl2dWxnYcOnw6NvIGRvcyBkb2N1bWVudG9zIGRlcG9zaXRhZG9zIG5vIFJlcG9zaXTDs3JpbyBEaWdpdGFsIGRhIFVGUEUgZSBkZWNsYXJvIHF1ZToKCkkgLSBvcyBkYWRvcyBwcmVlbmNoaWRvcyBubyBmb3JtdWzDoXJpbyBkZSBkZXDDs3NpdG8gc8OjbyB2ZXJkYWRlaXJvcyBlIGF1dMOqbnRpY29zOwoKSUkgLSAgbyBjb250ZcO6ZG8gZGlzcG9uaWJpbGl6YWRvIMOpIGRlIHJlc3BvbnNhYmlsaWRhZGUgZGUgc3VhIGF1dG9yaWE7CgpJSUkgLSBvIGNvbnRlw7pkbyDDqSBvcmlnaW5hbCwgZSBzZSBvIHRyYWJhbGhvIGUvb3UgcGFsYXZyYXMgZGUgb3V0cmFzIHBlc3NvYXMgZm9yYW0gdXRpbGl6YWRvcywgZXN0YXMgZm9yYW0gZGV2aWRhbWVudGUgcmVjb25oZWNpZGFzOwoKSVYgLSBxdWFuZG8gdHJhdGFyLXNlIGRlIG9icmEgY29sZXRpdmEgKG1haXMgZGUgdW0gYXV0b3IpOiB0b2RvcyBvcyBhdXRvcmVzIGVzdMOjbyBjaWVudGVzIGRvIGRlcMOzc2l0byBlIGRlIGFjb3JkbyBjb20gZXN0ZSB0ZXJtbzsKClYgLSBxdWFuZG8gdHJhdGFyLXNlIGRlIFRyYWJhbGhvIGRlIENvbmNsdXPDo28gZGUgQ3Vyc28sIERpc3NlcnRhw6fDo28gb3UgVGVzZTogbyBhcnF1aXZvIGRlcG9zaXRhZG8gY29ycmVzcG9uZGUgw6AgdmVyc8OjbyBmaW5hbCBkbyB0cmFiYWxobzsKClZJIC0gcXVhbmRvIHRyYXRhci1zZSBkZSBUcmFiYWxobyBkZSBDb25jbHVzw6NvIGRlIEN1cnNvLCBEaXNzZXJ0YcOnw6NvIG91IFRlc2U6IGVzdG91IGNpZW50ZSBkZSBxdWUgYSBhbHRlcmHDp8OjbyBkYSBtb2RhbGlkYWRlIGRlIGFjZXNzbyBhbyBkb2N1bWVudG8gYXDDs3MgbyBkZXDDs3NpdG8gZSBhbnRlcyBkZSBmaW5kYXIgbyBwZXLDrW9kbyBkZSBlbWJhcmdvLCBxdWFuZG8gZm9yIGVzY29saGlkbyBhY2Vzc28gcmVzdHJpdG8sIHNlcsOhIHBlcm1pdGlkYSBtZWRpYW50ZSBzb2xpY2l0YcOnw6NvIGRvIChhKSBhdXRvciAoYSkgYW8gU2lzdGVtYSBJbnRlZ3JhZG8gZGUgQmlibGlvdGVjYXMgZGEgVUZQRSAoU0lCL1VGUEUpLgoKIApQYXJhIHRyYWJhbGhvcyBlbSBBY2Vzc28gQWJlcnRvOgoKTmEgcXVhbGlkYWRlIGRlIHRpdHVsYXIgZG9zIGRpcmVpdG9zIGF1dG9yYWlzIGRlIGF1dG9yIHF1ZSByZWNhZW0gc29icmUgZXN0ZSBkb2N1bWVudG8sIGZ1bmRhbWVudGFkbyBuYSBMZWkgZGUgRGlyZWl0byBBdXRvcmFsIG5vIDkuNjEwLCBkZSAxOSBkZSBmZXZlcmVpcm8gZGUgMTk5OCwgYXJ0LiAyOSwgaW5jaXNvIElJSSwgYXV0b3Jpem8gYSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBQZXJuYW1idWNvIGEgZGlzcG9uaWJpbGl6YXIgZ3JhdHVpdGFtZW50ZSwgc2VtIHJlc3NhcmNpbWVudG8gZG9zIGRpcmVpdG9zIGF1dG9yYWlzLCBwYXJhIGZpbnMgZGUgbGVpdHVyYSwgaW1wcmVzc8OjbyBlL291IGRvd25sb2FkIChhcXVpc2nDp8OjbykgYXRyYXbDqXMgZG8gc2l0ZSBkbyBSZXBvc2l0w7NyaW8gRGlnaXRhbCBkYSBVRlBFIG5vIGVuZGVyZcOnbyBodHRwOi8vd3d3LnJlcG9zaXRvcmlvLnVmcGUuYnIsIGEgcGFydGlyIGRhIGRhdGEgZGUgZGVww7NzaXRvLgoKIApQYXJhIHRyYWJhbGhvcyBlbSBBY2Vzc28gUmVzdHJpdG86CgpOYSBxdWFsaWRhZGUgZGUgdGl0dWxhciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMgZGUgYXV0b3IgcXVlIHJlY2FlbSBzb2JyZSBlc3RlIGRvY3VtZW50bywgZnVuZGFtZW50YWRvIG5hIExlaSBkZSBEaXJlaXRvIEF1dG9yYWwgbm8gOS42MTAgZGUgMTkgZGUgZmV2ZXJlaXJvIGRlIDE5OTgsIGFydC4gMjksIGluY2lzbyBJSUksIGF1dG9yaXpvIGEgVW5pdmVyc2lkYWRlIEZlZGVyYWwgZGUgUGVybmFtYnVjbyBhIGRpc3BvbmliaWxpemFyIGdyYXR1aXRhbWVudGUsIHNlbSByZXNzYXJjaW1lbnRvIGRvcyBkaXJlaXRvcyBhdXRvcmFpcywgcGFyYSBmaW5zIGRlIGxlaXR1cmEsIGltcHJlc3PDo28gZS9vdSBkb3dubG9hZCAoYXF1aXNpw6fDo28pIGF0cmF2w6lzIGRvIHNpdGUgZG8gUmVwb3NpdMOzcmlvIERpZ2l0YWwgZGEgVUZQRSBubyBlbmRlcmXDp28gaHR0cDovL3d3dy5yZXBvc2l0b3Jpby51ZnBlLmJyLCBxdWFuZG8gZmluZGFyIG8gcGVyw61vZG8gZGUgZW1iYXJnbyBjb25kaXplbnRlIGFvIHRpcG8gZGUgZG9jdW1lbnRvLCBjb25mb3JtZSBpbmRpY2FkbyBubyBjYW1wbyBEYXRhIGRlIEVtYmFyZ28uCg==Repositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212026-01-18T19:52:20Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false
dc.title.pt_BR.fl_str_mv DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket
title DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket
spellingShingle DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket
SILVA, Ruan Carlos Alves da
DSL
Racket
TDD
JUnit 5
ANTLR4
title_short DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket
title_full DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket
title_fullStr DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket
title_full_unstemmed DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket
title_sort DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket
author SILVA, Ruan Carlos Alves da
author_facet SILVA, Ruan Carlos Alves da
author_role author
dc.contributor.authorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/9815464113475846
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/2340616806258461
dc.contributor.advisorORCID.pt_BR.fl_str_mv https://orcid.org/0000-0002-1932-8706
dc.contributor.author.fl_str_mv SILVA, Ruan Carlos Alves da
dc.contributor.advisor1.fl_str_mv REBÊLO, Henrique Emanuel Mostaert
contributor_str_mv REBÊLO, Henrique Emanuel Mostaert
dc.subject.por.fl_str_mv DSL
Racket
TDD
JUnit 5
ANTLR4
topic DSL
Racket
TDD
JUnit 5
ANTLR4
description Desenvolver software de qualidade continua sendo um desafio, devido à complexidade dos sistemas, à velocidade de entrega, a equipes desalinhadas, a mudanças frequentes de escopo e outros fatores. Nesse cenário, práticas como o Test-Driven Development (TDD) podem facilitar a implementação de testes e contribuir para a melhoria da qualidade do software. Contudo, sua adoção ainda apresenta limitações, como a complexidade na elaboração e na manutenção manual dos testes à medida que a aplicação cresce, o que exige tempo e esforço consideráveis para sustentar a prática. Para enfrentar essas dificuldades, esta dissertação propõe uma abordagem que simplifica a implementação e manutenção de testes unitários em Java, incentivando a prática do TDD. A solução consiste em uma Domain-Specific Language (DSL) chamada JCheck, inspirada na linguagem Racket e integrada ao framework JUnit 5. O parser da DSL foi gerado com ANother Tool for Language Recognition, versão 4 (ANTLR4) e a DSL foi incorporada em uma anotação Java aplicada a métodos, simplificando a especificação dos casos de teste e integrando-os de forma natural ao processo de desenvolvimento. A abordagem foi validada por meio de uma prova de conceito em um cenário realista, executando testes com diferentes instruções da DSL e avaliando o esforço de escrita da DSL por meio da contagem de linhas de código. Como resultado da prova de conceito, a DSL apresentada atingiu os objetivos da pesquisa, realizando com sucesso testes unitários em Java de acordo com as instruções fornecidas, além de demonstrar, por meio da análise da contagem de linhas de código, que sua utilização pode reduzir o esforço na escrita dos testes unitários. Dessa forma, podemos concluir que a JCheck é uma ferramenta promissora para facilitar a criação de testes unitários em Java. Além disso, por adotar uma abordagem que aproxima a definição dos testes dos próprios métodos, a DSL torna mais fácil a prática do TDD.
publishDate 2025
dc.date.issued.fl_str_mv 2025-08-29
dc.date.accessioned.fl_str_mv 2026-01-14T14:32:34Z
dc.date.available.fl_str_mv 2026-01-14T14:32:34Z
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.citation.fl_str_mv SILVA, Ruan Carlos Alves da. DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket. 2025. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Pernambuco, Recife, 2025.
dc.identifier.uri.fl_str_mv https://repositorio.ufpe.br/handle/123456789/67612
identifier_str_mv SILVA, Ruan Carlos Alves da. DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket. 2025. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Pernambuco, Recife, 2025.
url https://repositorio.ufpe.br/handle/123456789/67612
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv https://creativecommons.org/licenses/by-nc-nd/4.0/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv https://creativecommons.org/licenses/by-nc-nd/4.0/
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Pernambuco
dc.publisher.program.fl_str_mv Programa de Pos Graduacao em Ciencia da Computacao
dc.publisher.initials.fl_str_mv UFPE
dc.publisher.country.fl_str_mv Brasil
publisher.none.fl_str_mv Universidade Federal de Pernambuco
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFPE
instname:Universidade Federal de Pernambuco (UFPE)
instacron:UFPE
instname_str Universidade Federal de Pernambuco (UFPE)
instacron_str UFPE
institution UFPE
reponame_str Repositório Institucional da UFPE
collection Repositório Institucional da UFPE
bitstream.url.fl_str_mv https://repositorio.ufpe.br/bitstream/123456789/67612/1/DISSERTA%c3%87%c3%83O%20Ruan%20Carlos%20Alves%20da%20Silva.pdf
https://repositorio.ufpe.br/bitstream/123456789/67612/3/DISSERTA%c3%87%c3%83O%20Ruan%20Carlos%20Alves%20da%20Silva.pdf.txt
https://repositorio.ufpe.br/bitstream/123456789/67612/4/DISSERTA%c3%87%c3%83O%20Ruan%20Carlos%20Alves%20da%20Silva.pdf.jpg
https://repositorio.ufpe.br/bitstream/123456789/67612/2/license.txt
bitstream.checksum.fl_str_mv 16a1b0cab569aebcdcd9ba4dcb96837c
417c30d0b70453ed96930058a3c2cadd
f88367415d93abdcc5ddaf47bc3c590d
5e89a1613ddc8510c6576f4b23a78973
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)
repository.mail.fl_str_mv attena@ufpe.br
_version_ 1862741650430754816