Tutorials

IA para PHP: como automatizar testes de unidade usando o AI Assistant

Read this post in other languages:

Testes. Se você for como eu, concordará que eles são importantes, mas ainda assim muito chatos. É uma daquelas coisas que não é muito divertida de fazer, mas que você sabe que vai compensar mais tarde.

Mas o que torna os testes tão desagradáveis?

Para mim, o maior obstáculo é a sobrecarga que acompanha a configuração inicial. Sei que, depois de implementar um teste, ficarei feliz em fazer alterações e ajustes durante a vida útil do projeto. Mas, meu maior obstáculo é começar.

E se essa configuração inicial de escrever um teste pudesse ser simplificada? E se pudéssemos obter gratuitamente um esboço de teste, usá-lo como ponto de partida e simplesmente ajustá-lo conforme necessário? E se pudéssemos nos concentrar nas partes divertidas e deixar um computador fazer as coisas chatas?

É aqui que a IA pode nos ajudar.

Recentemente, introduzimos uma ferramenta poderosa em todos os nossos IDEs, incluindo o PhpStorm: o JetBrains AI Assistant. Neste post do nosso blog, quero ver como podemos usar o AI Assistant para automatizar as partes chatas da programação, para que possamos nos concentrar nas partes mais interessantes dos testes.

Testes de unidade automatizados com o AI Assistant

A geração de testes de unidade é um exemplo perfeito de onde o AI Assistant pode nos ajudar. Vamos considerar o seguinte snippet de código:

Este é um trecho retirado de um projeto chamado RFC Vote, que é open-source. Você pode encontrar o código-fonte completo aqui. Este projeto permite que a comunidade PHP discuta RFCs abertas. As pessoas podem argumentar sobre os prós e os contras e ter discussões perspicazes sobre a evolução do PHP.

Essa classe específica é responsável por criar um comentário sobre um argumento existente. Um comentário pertence a um usuário, tem uma referência a um argumento e tem um corpo. Por fim, sempre que um comentário é escrito, notificações devem ser enviadas a todos os usuários que seguem um argumento específico.

Vamos usar o AI Assistant para criar um teste para nós e ver o que ele pode fazer.

Comece colocando o cursor no corpo deste método __invoke, pressione Alt+Enter e selecione AI Actions | Generate Unit Tests no menu de contexto.

O AI Assistant agora escreverá uma versão preliminar de um teste para essa classe para você. Se quiser saber como o AI Assistant faz tudo isso, leia este post. Quando o AI Assistant terminar, você verá uma versão de rascunho como esta:

A ação mais direta é pressionar o botão Accept all, que criará um novo arquivo de teste no local correto e copiará esse rascunho de implementação para o arquivo de teste real. No entanto, você também pode pressionar o botão Refresh para gerar uma implementação totalmente nova, caso detecte algum problema imediato.

No meu caso, atualizei uma ou duas vezes, pressionei Accept all e executei meu teste.

Muito legal, não é?

Agora, espere um pouco. Há algumas outras coisas para destacar.

Em primeiro lugar, nem todas as gerações funcionarão diretamente sem problemas. Por exemplo, algumas versões incluíam a característica RefreshDatabase, uma prática comum em testes Laravel. No entanto, neste projeto, tenho os testes de banco de dados configurados de maneira um pouco diferente, então tive que fazer um pequeno ajuste na saída gerada. Às vezes, o AI Assistant também gera código que não se alinha totalmente ao seu estilo de código. Ele faz o possível para levar em consideração as configurações de estilo de código, mas alguns detalhes são difíceis de acertar.

Apesar de algumas deficiências, tenha em mente que nosso objetivo não é gerar o teste perfeito, e sim ter uma estrutura sobre a qual possamos construir. O AI Assistant é incrivelmente bom em entender o contexto do que queremos testar e faz muitas coisas certas. Isso economiza tempo e nos permite focar nas partes mais interessantes do teste.

Automação em Pest

2023 mostrou um crescimento significativo para o relativamente novo framework de teste Pest. A equipe do PhpStorm assumiu o desenvolvimento do plug-in Pest no ano passado também. No momento, o suporte do AI Assistant para Pest é um trabalho em andamento e estará disponível na próxima versão principal, o PhpStorm 2024.1. Fique ligado – definitivamente demonstraremos como os usuários do Pest podem se beneficiar do AI Assistant nos próximos posts do nosso blog.

Conclusão

Ser capaz de criar testes de unidade automaticamente – com o mínimo de trabalho manual – já é bastante impressionante, mas ainda há mais alguns ajustes a serem feitos.

Explore o próximo post desta série no nosso blog, no qual analisamos mais de perto como podemos ajustar a geração de testes do JetBrains AI Assistant para economizar ainda mais tempo. Assine nosso blog na seção de assinatura abaixo e não perca nossas novidades!

Links úteis

Materiais:


Vídeos:

Artigo original em inglês por:

Brent Roose

Brent Roose

image description

Discover more