Pular para o conteúdo principalMelhorando a cobertura de código com o Devin
A maioria das aplicações em produção não tem 100% de cobertura de código. As equipes de engenharia precisam priorizar de forma rigorosa e tendem a focar em escrever testes para caminhos críticos, para obter o máximo benefício do tempo investido. O Devin pode preencher essa lacuna analisando o estilo da suíte de testes existente da base de código e aumentando a cobertura de funções menos críticas, mas ainda importantes.
Neste exemplo, vamos usar uma aplicação de exemplo open source em TypeScript baseada na especificação RealWorld, que já possui alguns testes, mas não tem cobertura completa: https://github.com/SeuRonao/realworld-express-prisma
Você pode acompanhar o Run completo aqui ou pode ler o restante deste artigo, que destaca cada etapa do processo do Devin. Vamos destacar várias partes do Workspace do Devin, como o Editor e o Shell.
Começamos nosso Run com um prompt simples instruindo Devin a configurar nosso ambiente de desenvolvimento e avaliar a cobertura de código atual da nossa aplicação:
No Shell do Devin, ele primeiro clona nosso repositório do GitHub, analisa o arquivo README e instala as dependências do projeto em seu ambiente local.
Em seguida, Devin usa seu editor integrado para criar nosso arquivo .env, para que a aplicação possa ser executada localmente. Ao trabalhar com Devin, você também pode abrir o VSCode para fazer edições manuais ou revisar os arquivos em que ele está trabalhando.
Estabelecendo uma Linha de Base de Cobertura
Devin então executa a suíte de testes em seu Shell. Um dos principais benefícios do Devin é que ele não só pode modificar ou criar código para sua equipe, como também pode trabalhar diretamente em seu Browser e Terminal para realizar interações de nível mais alto com sua base de código, com o ambiente de desenvolvimento ou até mesmo com sua aplicação em execução.
Podemos ver abaixo como o Devin interpretou e traduziu os resultados de seu Shell em nosso chat, deixando-os mais legíveis e objetivos.
Criando um Plano de Melhoria
Agora podemos avançar para a tarefa em si: aumentar a cobertura de código. Parece que profileViewer.ts é um bom lugar para começar, dado que sua cobertura é basicamente inexistente por padrão. Pedimos ao Devin quais devem ser os próximos passos, e ele nos mantém informados sobre o que está acontecendo ao longo de todo o processo.
Devin consegue ler o arquivo existente, determinar quais casos de teste devemos implementar com base na funcionalidade atual e então escrever os novos testes para nós, sem nenhuma intervenção manual. Após concluir a implementação dos novos casos de teste, Devin nos dá um resumo final das mudanças que fez:
Ele também compartilha o novo arquivo conosco para que possamos baixá-lo e revisá-lo. Alternativamente, poderíamos ter pedido ao Devin para criar um Pull Request diretamente no GitHub com esse novo arquivo, para que ele pudesse ser avaliado como parte do nosso fluxo normal de revisão de código. Decido apenas revisá-lo no editor integrado do Devin para não precisar baixar o arquivo.
De modo geral, as alterações parecem boas, mas queremos garantir que não haja bugs em tempo de execução que tenhamos deixado passar, então pedimos ao Devin para executar novamente a suíte de testes e nos retornar o resultado.
A suíte é executada conforme o esperado e aumentamos nossa cobertura geral de 28,57% das funções para 57,14% das funções, que é exatamente o que queríamos atingir. Todo o processo levou menos de 10 minutos de tempo de trabalho do Devin para ser implementado, mesmo tendo feito uma pausa no meio antes de passar o próximo conjunto de instruções. Você pode aumentar a cobertura de testes e remover uma tarefa tediosa do backlog da sua equipe de engenharia simplesmente delegando-a ao Devin.
Se você notar que está recorrendo com frequência ao Devin para aumentar a cobertura de código, pode até transformar esse prompt em um Playbook detalhado para iniciar facilmente novas Runs para diferentes partes da sua aplicação. Se quiser aprender mais sobre quais tipos de prompts funcionam bem com o Devin, consulte alguns dos nossos exemplos na documentação.