DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem Racket
| Ano de defesa: | 2025 |
|---|---|
| Autor(a) principal: | |
| Orientador(a): | |
| Banca de defesa: | |
| Tipo de documento: | Dissertação |
| Tipo de acesso: | Acesso aberto |
| Idioma: | por |
| Instituição de defesa: |
Universidade Federal de Pernambuco
UFPE Brasil Programa de Pos Graduacao em Ciencia da Computacao |
| Programa de Pós-Graduação: |
Não Informado pela instituição
|
| Departamento: |
Não Informado pela instituição
|
| País: |
Não Informado pela instituição
|
| Palavras-chave em Português: | |
| 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 |
DSL para criação de testes unitários em Java: uma abordagem inspirada na linguagem RacketDSLRacketTDDJUnit 5ANTLR4Desenvolver 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.Universidade Federal de PernambucoUFPEBrasilPrograma de Pos Graduacao em Ciencia da ComputacaoREBÊLO, Henrique Emanuel Mostaerthttp://lattes.cnpq.br/9815464113475846http://lattes.cnpq.br/2340616806258461https://orcid.org/0000-0002-1932-8706SILVA, Ruan Carlos Alves da2026-01-14T14:32:34Z2026-01-14T14:32:34Z2025-08-29info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfSILVA, 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/67612porhttps://creativecommons.org/licenses/by-nc-nd/4.0/info:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPE2026-01-18T19:52:20Zoai:repositorio.ufpe.br:123456789/67612Repositó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.none.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.none.fl_str_mv |
REBÊLO, Henrique Emanuel Mostaert http://lattes.cnpq.br/9815464113475846 http://lattes.cnpq.br/2340616806258461 https://orcid.org/0000-0002-1932-8706 |
| dc.contributor.author.fl_str_mv |
SILVA, Ruan Carlos Alves da |
| 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.none.fl_str_mv |
2025-08-29 2026-01-14T14:32:34Z 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.uri.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. 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.format.none.fl_str_mv |
application/pdf |
| dc.publisher.none.fl_str_mv |
Universidade Federal de Pernambuco UFPE Brasil Programa de Pos Graduacao em Ciencia da Computacao |
| publisher.none.fl_str_mv |
Universidade Federal de Pernambuco UFPE Brasil Programa de Pos Graduacao em Ciencia da Computacao |
| 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 |
| repository.name.fl_str_mv |
Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE) |
| repository.mail.fl_str_mv |
attena@ufpe.br |
| _version_ |
1856041883860467712 |