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): Não Informado pela instituição
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
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:
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 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