
01 de abril de 2026
IA Generativa na Escrita de Testes Unitários: Protótipo e Ganhos
Augusto Martins; Gabriel Gomes de Oliveira
Resumo elaborado pela ferramenta ResumeAI, solução de inteligência artificial desenvolvida pelo Instituto Pecege voltada à síntese e redação.
A necessidade de testes de software é um fato consolidado entre profissionais da área de tecnologia, uma vez que os impactos decorrentes de falhas podem comprometer significativamente os lucros de uma organização e gerar consequências negativas para a sociedade (Aniche, 2022). No âmbito das categorias de teste, destaca-se o teste unitário, caracterizado como uma rotina automatizada que visa validar pequenas porções de código de maneira isolada e célere. A literatura sugere que uma proporção ideal para projetos de software situa-se entre 1:1 e 1:3, indicando que para cada linha de código em produção devem existir entre uma e três linhas de código de teste unitário (Khorikov, 2020). Além da quantidade, a qualidade desses testes é determinante para o crescimento sustentável de um projeto. Entretanto, existe um consenso entre desenvolvedores de que a produção de testes unitários é uma tarefa dispendiosa e, por vezes, tediosa (Aniche, 2022). Diante desse cenário, observa-se um esforço considerável da indústria para suprir a demanda por códigos de teste que sejam volumosos e de alta qualidade.
O advento da Inteligência Artificial Generativa tem facilitado a criação de dados e fomentado a inovação tecnológica. Esta vertente da inteligência artificial compreende um subconjunto de modelos que visam a criação de novos dados a partir da análise de padrões em bases preexistentes. Tal tecnologia apresenta um potencial elevado para a automatização de tarefas repetitivas no desenvolvimento de software. Paralelamente, emergiu a disciplina de Engenharia de Prompt, que se dedica ao estudo e à criação de comandos de texto mais eficientes para extrair respostas precisas de modelos generativos. Essas inovações podem ser aplicadas diretamente na geração de código, incluindo a escrita de testes unitários (Campesato, 2024). Embora diversas técnicas tenham sido sugeridas anteriormente para automatizar essa geração com o intuito de aumentar a cobertura e reduzir o tempo investido, as abordagens tradicionais frequentemente resultam em testes de difícil compreensão quando comparados aos escritos por humanos (Bhatia et al., 2024).
A legibilidade dos testes gerados automaticamente é um fator crítico para sua adoção prática. Técnicas anteriores muitas vezes produziam variáveis pouco intuitivas, o que dificultava a compreensão e a aplicação direta no código oficial, servindo apenas como inspiração (Schäfer et al., 2023). Com os avanços recentes, como o desenvolvimento de modelos de linguagem de larga escala capazes de rivalizar com a assertividade humana, torna-se viável explorar a geração de testes de maior qualidade. O objetivo central reside na confecção de um protótipo que utilize Inteligência Artificial Generativa e Engenharia de Prompt para auxiliar desenvolvedores na criação de testes unitários de fácil compreensão, visando a redução do tempo de desenvolvimento e o incremento da qualidade do produto final. Para fundamentar essa ferramenta, características ideais são elencadas a partir da realidade operacional de empresas do segmento de tecnologia, permitindo uma análise qualitativa dos ganhos observados.
A metodologia adotada para a construção da solução baseia-se nos princípios da Engenharia de Software, que orienta a construção de sistemas de forma sistemática e quantificável (Valente, 2020). O processo foi executado de maneira sequencial, permitindo revisões e ajustes ao longo das etapas de requisitos, projeto, implementação e testes. Embora o desenvolvimento de software possa ocorrer em ciclos curtos e iterativos, este estudo concentrou-se em uma iteração principal para o desenvolvimento dos requisitos mais críticos do protótipo. Na fase inicial de análise de requisitos, foram definidos os aspectos funcionais, que determinam as capacidades do sistema, e os não funcionais, que estabelecem restrições de performance e segurança. Entre os requisitos funcionais básicos, estabeleceu-se a necessidade de gerar testes unitários a partir de entradas de código, a capacidade de parametrizar características como linguagem de programação e frameworks, e a disponibilização de uma interface de linha de comando simples.
Para adequar o software às necessidades reais, foram aplicados questionários em uma empresa de tecnologia, utilizando-os como instrumentos de coleta de dados para pesquisa qualitativa (Bortolozzi, 2020). Na etapa de projeto do sistema, utilizou-se a modelagem com Linguagem de Modelagem Unificada para representar graficamente a arquitetura e facilitar o entendimento dos componentes. A arquitetura foi estruturada de forma macro, focando em módulos e serviços (Valente, 2020). O fluxo operacional inicia-se com a interação do usuário via interface de linha de comando, onde um comando é selecionado. O módulo de comandos processa a solicitação e encaminha os dados para um solucionador de prompts, que aplica técnicas de Engenharia de Prompt. O prompt resultante é enviado a uma camada de conectores que gerencia a comunicação com diferentes assistentes de inteligência artificial, como OpenAI ou Ollama. Por fim, a resposta gerada é salva em um arquivo no sistema local do usuário.
O detalhamento do funcionamento interno foi documentado por meio de diagramas de sequência, mapeando os objetos e métodos executados. Em uma das funcionalidades, o usuário fornece o código em formato de texto, o sistema recupera as configurações de usuário, interage com o assistente de inteligência artificial e armazena o resultado. Em outra funcionalidade, o sistema analisa um arquivo de código completo, identifica métodos demarcados como testáveis e os encaminha para o processamento. Complementarmente, diagramas de atividade foram utilizados para ilustrar o fluxo de ações em alto nível, destacando decisões e junções no processo (Valente, 2020). O protótipo também incluiu uma funcionalidade de configuração de parâmetros para salvar opções de linguagem e frameworks, que servem como informações complementares para a geração dos testes.
A implementação da ferramenta utilizou Javascript como linguagem de programação principal. Originalmente desenvolvida para navegadores, esta linguagem teve suas capacidades expandidas com o surgimento do Node.js, permitindo o desenvolvimento de ferramentas de linha de comando robustas e a utilização de diversas bibliotecas de código aberto (Haverbeke, 2024). Para a inteligência artificial, optou-se pelos Modelos de Linguagem de Larga Escala devido à sua competência no processamento de linguagem natural e escrita de código (Campesato, 2024). A obtenção de respostas desses modelos ocorre através de prompts, que são transformados em unidades menores chamadas tokens, convertidos em vetores numéricos e processados para gerar uma saída textual (Vurukonda e Srivastava, 2025). Um desafio inerente a esses modelos é a ocorrência de alucinações, onde são geradas respostas incorretas com alta confiança; para mitigar esse problema, a Engenharia de Prompt é empregada para maximizar a precisão e a relevância (Campesato, 2024).
A estrutura de prompt desenvolvida neste estudo baseia-se em elementos centrais: instrução, contexto, formato e exemplos. As instruções fornecem diretrizes claras sobre a tarefa, enquanto o contexto oferece informações suplementares sobre o ambiente de execução. As entradas são dados dinâmicos que variam conforme o código a ser testado, como a linguagem de programação e o framework de testes utilizado. A definição de restrições é fundamental para evitar que o modelo adicione informações desnecessárias à saída, garantindo que apenas o código do teste seja retornado. Além disso, o uso de um tom específico e de estilos de saída contribui para a legibilidade e consistência do código gerado (Davies, 2025; Vurukonda e Srivastava, 2025). A segurança de dados foi uma preocupação central, visto que modelos generativos podem armazenar informações do usuário para treinamento futuro (Campesato, 2024). Para mitigar riscos de exposição de código proprietário, implementou-se a possibilidade de execução local de modelos.
Para a execução local, utilizou-se a aplicação Ollama, que permite interagir com modelos armazenados no computador do usuário sem necessidade de conexão com a internet, garantindo maior proteção aos dados (Lozzia, 2025). Os modelos selecionados para os testes locais foram o Qwen2.5-coder em versões de 3 bilhões e 7 bilhões de parâmetros. Como alternativa remota, utilizou-se o modelo GPT-4.1 mini da OpenAI, acessado via interface de programação de aplicações, apresentando um custo associado ao volume de tokens processados. A ferramenta também explorou o conceito de múltiplos turnos, permitindo que o usuário solicite ajustes adicionais mantendo o contexto da conversa, técnica comum na construção de assistentes interativos (Bahree, 2025).
Os resultados e a discussão subsequente baseiam-se inicialmente no levantamento de requisitos realizado com 15 desenvolvedores. Verificou-se que 27% dos participantes escrevem testes unitários diariamente, 40% semanalmente e 33% ocasionalmente. O benefício mais esperado de uma ferramenta de inteligência artificial foi a economia de tempo, citada por todos os respondentes, seguida pelo aumento da cobertura de testes e melhoria na qualidade. Entre os requisitos funcionais julgados mais importantes, destacaram-se a integração com frameworks existentes, a sugestão de melhorias para testes atuais e a possibilidade de iterar sobre arquivos de código fonte. No que tange aos requisitos não funcionais, a segurança emergiu como a preocupação predominante, dada a necessidade de ler códigos internos da empresa sem expô-los a terceiros. As tecnologias mais utilizadas pelos entrevistados foram Java e Javascript, incluindo frameworks como Typescript, React e Angular, o que direcionou o foco inicial do protótipo.
A fase de testes do protótipo avaliou a capacidade de criar testes legíveis e o impacto na cobertura de linhas. A cobertura por linha é um critério que determina se uma instrução foi executada ao menos uma vez pelo teste, sem considerar complexidades de decisão (Aniche, 2022). Os experimentos foram conduzidos em um ambiente com processador de 13ª geração, 16 GB de memória RAM e placa de vídeo dedicada. Foram testados três arquivos diferentes utilizando os modelos Qwen2.5-coder e GPT-4.1 mini. No primeiro arquivo, o modelo local de 3 bilhões de parâmetros atingiu 55% de cobertura, exigindo ajustes significativos em 56 linhas. A versão de 7 bilhões de parâmetros elevou a cobertura para 70% com apenas seis linhas de ajuste. O modelo remoto GPT-4.1 mini alcançou 100% de cobertura com ajustes mínimos.
No segundo arquivo analisado, os desempenhos foram superiores: o modelo de 3 bilhões atingiu 86% de cobertura, o de 7 bilhões chegou a 93% e o modelo remoto manteve os 100%. No terceiro arquivo, o modelo menor falhou em gerar cobertura útil, enquanto a versão de 7 bilhões atingiu 78% e o modelo remoto novamente alcançou a totalidade da cobertura. Observou-se que o modelo Qwen2.5-coder de 3 bilhões apresentou o desempenho mais modesto, porém com a vantagem de exigir menor poder computacional. A versão de 7 bilhões mostrou-se mais satisfatória para uso local. O modelo GPT-4.1 mini demonstrou performance excelente, embora sua execução em ambiente externo exija cautela quanto à segurança e custos.
A introdução de parâmetros de contexto adicional, como definições de estruturas de dados e serviços específicos, resultou em melhorias notáveis. No primeiro arquivo, a cobertura do modelo de 7 bilhões manteve-se em 70%, mas com redução drástica na necessidade de ajustes manuais. No segundo arquivo, a cobertura subiu para 96%. Entretanto, notou-se que o excesso de contexto pode, em certos casos, confundir o modelo; no segundo arquivo, o desempenho do modelo remoto caiu de 100% para 72% com a adição de contexto, sugerindo a ocorrência de alucinações por sobrecarga de informação. O uso de múltiplos turnos de interação permitiu refinar os resultados até atingir a cobertura completa em todos os cenários com os melhores modelos.
A apresentação do protótipo aos desenvolvedores revelou um alto índice de satisfação. Os participantes confirmaram que a ferramenta auxilia de forma efetiva na criação de testes, é de fácil compreensão e contribui para a agilidade do processo. Diferente de estudos anteriores que apontavam dificuldades na legibilidade de testes automatizados (Bhatia et al., 2024), os testes gerados por esta abordagem foram classificados como legíveis e facilmente modificáveis. A comparação com trabalhos relacionados, como o TestGen-LLM, reforça que o uso de modelos de linguagem para automação de testes é uma tendência crescente, onde a métrica de cobertura de código permanece como o principal indicador de eficácia (Alshahwan et al., 2024). A principal evolução observada neste estudo foi a superação da barreira da legibilidade, permitindo que o código gerado seja integrado mais facilmente ao fluxo de trabalho humano.
As considerações sobre a viabilidade da ferramenta indicam que, embora os avanços na Engenharia de Prompt tornem a geração de testes uma tarefa viável, limitações de hardware para execução local e riscos de segurança em execuções remotas são fatores determinantes. A execução local demanda recursos computacionais significativos que podem não estar disponíveis em todas as estações de trabalho. Por outro lado, o uso de serviços em nuvem expõe o código a terceiros e gera custos variáveis. Apesar desses desafios, o valor agregado para o desenvolvedor é evidente, permitindo que o tempo economizado na escrita de testes repetitivos seja realocado para tarefas de maior complexidade lógica no ciclo de desenvolvimento. A estruturação adequada dos prompts demonstrou ser a chave para extrair a capacidade máxima dos modelos de linguagem.
Perspectivas futuras para o aprimoramento da ferramenta incluem a exploração de técnicas de Geração Aumentada por Recuperação para melhorar a precisão dos modelos. Como o conhecimento dos modelos de inteligência artificial é limitado aos dados de seu treinamento original, a capacidade de recuperar informações de códigos externos ao escopo imediato da função pode reduzir ainda mais as alucinações e aumentar a precisão dos testes gerados (Vurukonda e Srivastava, 2025). A integração de mecanismos que busquem automaticamente dependências e contextos relevantes promete elevar o nível de automação e assertividade da solução proposta.
Conclui-se que o objetivo foi atingido, uma vez que o protótipo desenvolvido demonstrou ser capaz de acelerar a produção de testes unitários mantendo um alto padrão de legibilidade e qualidade. A integração de técnicas de Engenharia de Prompt com modelos de linguagem de larga escala provou ser uma abordagem eficaz para mitigar o caráter tedioso da escrita de testes, permitindo que desenvolvedores alcancem níveis elevados de cobertura de código com menor esforço manual. A dualidade entre a execução local, focada em segurança, e a execução remota, focada em performance, oferece flexibilidade para diferentes cenários corporativos, consolidando a inteligência artificial generativa como uma aliada indispensável na garantia da qualidade de software moderno.
Referências Bibliográficas:
Aniche, M. 2022. Effective Software Testing: A developer’s guide. 1ed. Manning Publications Co. Shelter Island, NY, EUA.
Bhatia, S.; Gandhi, T.; Kumar, D.; Jalote P. Unit Test Generation Using Generative AI: A Comparative Performance Analysis of Autogeneration Tools. In: IEEE/ACM International Workshop on Large Language Models for Code (LLM4Code), 2024, Lisbon, Portugal. Anais… p. 54-61.
Bortolozzi, A. C. 2020. Questionário e Entrevista na Pesquisa Qualitativa. 1ed. Pedro & João Editores. São Carlos, SP, BR.
Campesato, O. 2024. Large Language Models: An Introducation. 1 ed. Mercury Learning and Information. Boston, MA, EUA.
Davies, R. AI Engineering in Practice. Meap versão 2. Manning Publications Co. Shelter Island, NY, EUA. Disponível em: < https://livebook.manning.com/book/ai-engineering-in-practice>. Acesso em: 02 set. 2025.
Haverbeke, M. 2024. Eloquent Javascript. 4ed. No Starch Press. Disponível em: <https://eloquentjavascript.net/>. Acesso em 25 jun. 2025.
Khorikov, V. 2020. Unit Tests: Principles, Practices and Patterns. 1ed. Manning Publications Co. Shelter Insland, NY, EUA.
Lozzia, G; Domain-Specific Small Language Models. Meap Versão 6. Manning Publications Co. Shelter Island, NY, EUA. Disponível em: <https://livebook.manning.com/book/domain-specific-small-language-models>. Acesso em: 03 set. 2025.
Schäfer, M.; Nadi, S.; Eghbali, A.; Tip F. 2023. An Empirical Evaluation of Using Large Language Models for Automated Unit Test Generation. IEEE Transactions on Software Engineering 50(1): 85-100.
Srivastada, S; Vurukonda N; Prompt Engineering for AI Systems. Meap Versão 5. Manning Publications Co. Shelter Island, NY, EUA. Disponível em: <https://livebook.manning.com/book/prompt-engineering-for-ai-systems>. Acesso em: 02 set. 2025.
Valente, M. T. 2020. Engenharia de Software Moderna. Princípios e Práticas para Desenvolvimento de Software com Produtividade. 1ed. Independente. Disponível em: < https://engsoftmoderna.info/>. Acesso em: 25 jun. 2025.
Resumo executivo oriundo de Trabalho de Conclusão de Curso de Especialização em Engenharia de Software do MBA USP/Esalq
Saiba mais sobre o curso; clique aqui:






































