Geração, revisão, documentação, depuração e testes com IA
Do zero
Pense na IA como um colega muito rápido, que escreve rascunhos em segundos, mas que às vezes erra com toda a segurança. Ele ajuda em cinco trabalhos do dia a dia:
- Gerar código: escrever a função a partir do pedido.
- Revisar código: ler uma mudança e apontar erros, riscos e trechos confusos.
- Documentar: escrever comentários, explicações de funções e o README.
- Depurar: ler a mensagem de erro, levantar hipóteses e achar a causa.
- Gerar testes: propor os casos que provam que o código funciona, inclusive os de canto.
A regra de ouro vale para os cinco: a IA faz o rascunho, a pessoa é a editora responsável. Rascunho bom economiza tempo; rascunho aceito sem leitura vira defeito em produção.
Frase para guardar: IA gera, revisa, documenta, depura e testa; a pessoa confere, decide e responde pelo resultado.
Em 1 minuto
- Geração: pedidos pequenos, com critério de pronto; ler o diff inteiro; desconfiar de bibliotecas e funções que você não conhece (podem não existir); conferir segurança (validação de entrada, consultas parametrizadas, segredos fora do código).
- Revisão assistida: a IA faz uma primeira passada no pull request (defeitos, riscos, legibilidade), com o requisito e o padrão do projeto no contexto. Ela erra para os dois lados (aponta falsos problemas e deixa passar reais); a aprovação é humana.
- Documentação: comentários que explicam o porquê (o como está no código), docstrings, README e registros de decisão de arquitetura (ADR). A documentação gerada precisa ser conferida contra o código: o modelo pode descrever o que parece plausível, e não o que o código faz.
- Depuração: dar a mensagem de erro completa, a pilha de chamadas (stack trace), os passos para reproduzir e o que já se tentou; pedir hipóteses e um teste que reproduza o erro antes da correção; corrigir a causa, não o sintoma.
- Testes: casos normais, valores-limite e erros; testes escritos a partir do requisito, não do código que se quer testar; testes de caracterização antes de refatorar código legado; teste de mutação para medir se os testes pegam defeitos. Cobertura alta não garante testes bons.
Exemplo concreto: a depuração do relatório de diárias
O sistema falha em produção:
Traceback (most recent call last):
File "src/relatorios/diarias.py", line 42, in total_por_servidor
total += diaria.valor
TypeError: unsupported operand type(s) for +=: 'float' and 'decimal.Decimal'
O pedido à IA, com tudo o que ela precisa: a mensagem completa acima, a função total_por_servidor, e a instrução “explique a causa provável, escreva um teste que reproduza o erro e só então proponha a correção”.
A resposta, conferida pela pessoa:
- Causa: a função começa com
total = 0.0(um float), e os valores das diárias sãoDecimal. Python não soma os dois tipos diretamente. - Teste que reproduz: calcular o total de duas diárias de
Decimal("800.00")e esperarDecimal("1600.00"). O teste falha com o mesmo erro: a causa está confirmada. - Correção:
total = Decimal("0"). O teste passa, e os outros continuam passando.
Repare que a correção “fácil” seria converter tudo para float. Isso faria o erro sumir (o sintoma), mas traria imprecisão de centavos, e o projeto exige Decimal para dinheiro. Por isso a pessoa revisa a proposta à luz das regras do projeto.
E os testes gerados, são bons? Na função de multa por atraso (0,33% ao dia, teto de 20%), a IA gerou testes para 0 e 10 dias de atraso, com cobertura de 100% das linhas. A equipe roda um teste de mutação: a ferramenta troca o teto de 0,20 por 0,25 e roda os testes de novo. Todos passam, ou seja, o mutante sobreviveu, porque nenhum teste chega ao teto. Falta o caso de 61 dias. Cobertura de 100%, e ainda assim um buraco.
Comparação: os usos e os cuidados
| Uso | A IA ajuda a | O cuidado humano |
|---|---|---|
| Gerar código | Escrever rapidamente a primeira versão | Ler o diff, conferir requisitos, segurança e dependências |
| Revisar código | Fazer a primeira passada no pull request | Decidir; a aprovação é de quem revisa |
| Documentar | Rascunhar docstrings, README e ADRs | Conferir se a documentação bate com o código |
| Depurar | Ler o erro, levantar hipóteses | Exigir o teste que reproduz e corrigir a causa |
| Gerar testes | Propor casos normais, de limite e de erro | Derivar do requisito e medir com teste de mutação |
| Tipo de teste | Para quê |
|---|---|
| Unitário | Uma função ou classe isolada |
| De caracterização | Registrar o comportamento atual de código legado antes de mexer nele |
| De valor-limite | Os pontos onde a regra muda (60 e 61 dias de atraso) |
| Baseado em propriedades | Gerar muitas entradas e conferir uma regra geral (a multa nunca passa de 20%) |
| De mutação | Alterar o código de propósito e ver se os testes percebem |
| Métrica | O que diz | O que não diz |
|---|---|---|
| Cobertura de linhas | Que linhas foram executadas pelos testes | Se os testes conferem o resultado certo |
| Escore de mutação | Quantos defeitos artificiais os testes pegaram | Se o requisito foi entendido corretamente |
Como a FCC cobra
O papel da IA como apoio (e não substituto) na revisão de código, as boas práticas de depuração assistida (erro completo, reprodução, causa) e a qualidade dos testes gerados (requisito, valores-limite, cobertura × mutação).
- Documentação gerada e a necessidade de conferi-la.
- Testes de caracterização antes de refatorar código legado.
- Teste de mutação e cobertura de código.
- Responsabilidade de quem aprova o código.
Pegadinhas
- “Se a IA revisou o pull request, a revisão humana é dispensável.” Falso: a IA faz a primeira passada; a aprovação e a responsabilidade são humanas.
- “Cobertura de 100% garante que os testes pegam qualquer defeito.” Falso: cobertura mede linhas executadas, não se o resultado foi conferido; o teste de mutação mostra isso melhor.
- “Na depuração, basta aplicar a primeira correção que faz o erro sumir.” Falso: pode tratar só o sintoma; reproduza o erro com um teste e corrija a causa.
- “Testes gerados a partir do próprio código conferem se ele atende ao requisito.” Falso: tendem a confirmar o que o código faz, inclusive os erros; derive-os do requisito.
- “Documentação gerada por IA não precisa de revisão, porque não altera o sistema.” Falso: documentação errada induz a erros quem a lê; confira-a contra o código.
Explique com suas palavras
Explique a um colega por que testes com cobertura de 100% ainda podem deixar passar um erro, usando a função de multa e o teste de mutação.
- Escreva sem olhar a lição, com frases curtas e um exemplo seu.
- Onde travar ou precisar de jargão, há uma lacuna: releia só essa parte.
- Compare com a explicação-modelo e reescreva o que faltou.
Fica salva neste navegador.
Comparar com uma explicação-modelo
Cobertura de 100% quer dizer que os testes passaram por todas as linhas do código, não que conferiram todas as regras. Na multa, os testes de 0 e 10 dias de atraso passam pela linha do teto de 20%, mas nenhum deles chega perto do teto. Se alguém trocasse 20% por 25%, nenhum teste reclamaria.
O teste de mutação faz exatamente essa troca de propósito: muda pequenos pedaços do código e roda os testes de novo. Se os testes continuam passando com o código estragado, eles não estão protegendo aquele ponto. Aí se acrescenta o caso que faltava, como 61 dias de atraso, que precisa dar exatamente 20%.
Teste-se
Eng. de Software com IA e agentes · Código e testes com IA · Inédita, estilo FCC
Questão 1 de 3
Sobre o uso de ferramentas de IA na revisão de código, é correto afirmar que elas
A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.
Toque longo numa alternativa para riscá-la.
Eng. de Software com IA e agentes · Código e testes com IA · Inédita, estilo FCC
Questão 2 de 3
Para depurar com o apoio de IA um erro que ocorre em produção, o procedimento mais adequado é
A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.
Toque longo numa alternativa para riscá-la.
Eng. de Software com IA e agentes · Código e testes com IA · Inédita, estilo FCC
Questão 3 de 3
Para avaliar se os testes gerados por IA realmente detectam defeitos, a equipe passou a introduzir automaticamente pequenas alterações no código, como trocar < por <=, e a verificar se os testes falhavam. Essa técnica é o
A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.
Toque longo numa alternativa para riscá-la.
Mais duas questões deste tópico estão em Questões.
Flashcards gerados
| Frente | Verso |
|---|---|
| Cobertura de código garante testes bons? | Não. A cobertura mostra as linhas executadas, não se os testes conferem o resultado certo. |
| ADR (registro de decisão de arquitetura) | Documento curto que registra uma decisão técnica, o contexto, as alternativas e as consequências. |
| O que um bom comentário explica? | O porquê de uma decisão ou de uma regra; o como já está no código. |
| Teste baseado em propriedades | Gera muitas entradas automaticamente e confere uma regra geral que deve valer para todas. Exemplo: A multa por atraso nunca passa de 20% do valor. |
| Causa × sintoma na depuração | Fazer o erro sumir não basta; é preciso entender e corrigir a causa, confirmada por um teste que reproduz o problema. |
Ligação com o estudo de caso
Num caso sobre a adoção de IA pela equipe de desenvolvimento, defina um fluxo: a IA gera e faz a primeira revisão, mas todo pull request tem revisão humana; depuração com reprodução por teste antes da correção; testes derivados dos requisitos, com casos de limite, e acompanhamento por teste de mutação, não só por cobertura; documentação gerada revisada junto com o código. A lição de riscos e qualidade complementa com segurança e responsabilidade.
Fontes da lição
- Edital nº 01/2026, Anexo II, Engenharia de Software Assistida por IA e Sistemas Agentivos (fontes/edital-01-2026.txt).
- Michael Feathers, Working Effectively with Legacy Code (testes de caracterização).
- Yue Jia e Mark Harman, “An Analysis and Survey of the Development of Mutation Testing” (2011).
- Documentação do Python: módulo decimal.
Claude explica
Tire dúvidas sobre este tema no Claude: o site copia o pedido com a lição e abre uma conversa nova, na sua conta. Confira na fonte qualquer fato de lei ou de norma.
Pratique fora do site
Faça questões da FCC sobre este tópico no QConcursos ou no Gran e registre aqui quantas fez: elas contam na meta da semana e no status do tópico.