Módulo 6 · Engenharia de Software · ES06 · Aula 7 de 10
Orientação a objetos
com TDD
Testes como barreira arquitetural · AIOX · Skills QA e Dev · ciclo curto
🏗️ Modelagem é o Contrato
🔴 Red · Humano escreve o teste
🤖 AIOX QA · Avalia a base
🟢 AIOX Dev · Escreve o código
🛠️ TDD estrito com co-pilot
DAILY · 15 MIN
15:00
🧱 1 regra de negócio vital que teme quebrar
🧪 1 dúvida sobre o padrão AAA
🤖 1 receio sobre usar IA para codar backend
🤝 Preciso de ajuda?
Cada aluno em 1 minuto · ordem alfabética
Autoestudos · Pré-aula 📚
3 tarefas individuais para chegar pronto + leituras sugeridas
📖
Tarefa 1 · Leitura
Material da Aula 7
Leitura completa do material — chegue com o vocabulário do dia: SUT, AAA, Red/Green/Refactor, mock vs stub, Regra dos 3 de Beck.
📖 Material da aula
🛠️
Tarefa 2 · Setup
xUnit + Moq rodando
No projeto: garantir que dotnet test roda verde com 1 teste exemplo. Pacotes xunit, Moq, coverlet.collector.
💻 dotnet test verde
🤖
Tarefa 3 · Pesquisa
AIOX e IA Generativa
Descubra como ferramentas CLI baseadas em LLM estão acelerando o fluxo de testes. Anote 1 dúvida real para o daily.
Pesquisar Node CLI AI ↗

📚 Leituras sugeridas

📌 Material de chegada: projeto com dotnet test verde + 1 dúvida concreta sobre TDD. Esses 2 itens alimentam o daily de abertura.

Agenda da Aula
2 horas · teoria + live coding TDD + atividade prática em sala (sem ponderada)
⏱️ 40 min
TEORIA + LIVE

🎓 POO · SOLID · Guardrails · AIOX

Fundamentos de Orientação a Objetos e SOLID, e como garantir a modelagem do diagrama de classes usando TDD como guardrail.

  • Pilares POO e princípios SOLID
  • Testes xUnit travando o modelo OO
  • AIOX Skill QA e Dev
  • Live: classe codada por IA
⏱️ 65 min
PRÁTICA · EM PARES

🧪 TDD + IA em pares · CalculadoraScore

Codificar a modelagem como teste em xUnit (Red) e usar as skills QA e Dev do AIOX para a implementação.

  • ≥ 5 testes (Guardrails criados por você)
  • AIOX gera o código produtivo
  • Integração SOA via injeção de dependência

🎯 Saída do dia: Merge Request no repositório do grupo com 5+ commits seguindo Red/Green/Refactor e dotnet test verde. Sem ponderada — atividade boa em sala que prepara a aula 8 (Testes de Integração ponderada).

POO, SOLID e o Contrato do TDD
Como a teoria de objetos se conecta com os testes para conter a IA.
🏛️
O que é POO?
Paradigma baseado em objetos que combinam dados (estado) e métodos (comportamento). Usa Abstração, Encapsulamento, Herança e Polimorfismo.
O que é SOLID?
5 princípios (SRP, OCP, LSP, ISP, DIP) para software coeso, fracamente acoplado e testável. Sem SOLID, a arquitetura SOA colapsa.
📜
Diagrama de Classes
A modelagem estática (UML) define as classes, seus métodos e dependências. É o contrato arquitetural que precisamos garantir no código.
🤖
TDD Garantindo a OO
Ao escrever os testes (TDD), traduzimos as interfaces do diagrama em código rigoroso, forçando a IA a respeitar a modelagem OO.

💡 Ponte para TDD: Se deixarmos a IA gerar classes livremente, ela ignorará o SOLID. O Teste Unitário é o "Guardrail" que trava as dependências e métodos exatos que projetamos no diagrama de classes.

TDD como Guardrail para IA
Não deixe o LLM codar solto. Use os testes como barreira (guardrail).
1
Contrato Rigoroso
O teste unitário define a assinatura das classes, métodos e injeção de dependências.
Se a IA tentar "pular" o repositório e ir direto ao banco, o teste quebra.
2
Regras de Negócio
As métricas vitais da sua aplicação (Score, Juros, Permissões) ficam protegidas.
O Assert valida o Output Exato. Alucinações matemáticas da IA são pegas na hora.
3
Desenvolvimento Direcionado
Ao invés de pedir: "Faça um recomendador", você pede: "Faça o teste passar".
O escopo da IA diminui absurdamente. Ela fica focada no *Green*.
4
Barra Verde Contínua
Se o AIOX quebrar algo do SOA durante a geração, você faz revert na hora.
git reset --hard é seu melhor amigo.

🧠 O novo fluxo de Engenharia: O humano faz o trabalho nobre (Pensar a modelagem e definir os contratos/testes). A IA faz o trabalho braçal (Escrever o miolo da classe para os testes passarem).

TDD · Ciclo Red → Green → Refactor
Kent Beck (2003) · "nunca escreva uma linha de produção sem teste falhando antes"
🔴
RED
🟢
GREEN
🔵
REFACTOR

🔴 Red · escreva o teste primeiro

Teste deve falhar. Se passa de cara, é teste tautológico ou código já existia. Failure message tem que ser claro.

🟢 Green · código mínimo para passar

Use o caminho mais ridículo possível. Hard-code, return fixo, "fake it till you make it" — tudo permitido. Só não pode quebrar a barra verde.

🔵 Refactor · limpe sem quebrar

Renomear, extrair método, remover duplicação. dotnet test deve continuar verde após cada mudança micro.

📐 Regra dos 3 (Beck)

Tolere duplicação até a 3ª ocorrência — aí extraia. Antes disso, é cedo demais para abstrair.

xUnit · Anatomia de um teste · AAA
Arrange · Act · Assert — 1 cenário por teste, nome que vira documentação

🎯 Arrange (Monta o Palco)

Obriga a IA a usar as dependências certas. Ex: Injeção de repositórios Mock.

⚡ Act (Ação)

Define a assinatura do método. A IA não pode inventar rotas alternativas.

🛡️ Assert (A Trava)

Garante a regra de negócio exata. É o guardrail que impede lógicas quebradas.

🔴 Red · O humano escreve o Contrato
A IA não cria a regra. VOCÊ traduz o modelo para um teste vermelho (xUnit).
🟡 Avaliação · Instalação e Skill QA
O AIOX lê o teste que você fez e inspeciona o repositório em busca das interfaces e dependências necessárias.
🟢 Green & Refactor · AIOX Dev Action
A IA gera a implementação baseada puramente nos testes e na arquitetura SOA mapeada.

🤖 IA Focada

Como o escopo foi fechado pelo teste, a IA não tenta reinventar a roda ou mudar a arquitetura.

🔌 Inversão de dep.

O AIOX lê que o teste usou mock e já sabe que deve injetar via construtor.

🟢 Barra verde

O ciclo só para quando o dotnet test roda limpo e a IA finaliza o trabalho sozinha.

📚 Red → AIOX → Green: A refatoração contínua é delegada, mas os contratos e arquitetura são definidos por VOCÊ.

Mocks · Stubs · Fakes
Os 3 dublês de teste · em C#: Moq e NSubstitute resolvem 95% dos casos
🎭 Mock

Espia se um método foi chamado e como. Verifica comportamento (interação).

Use quando: side-effect importa (envio de email, log).
📥 Stub

Devolve resposta pré-fabricada. Alimenta o SUT sem verificar nada.

Use quando: você só precisa de um dado de entrada.
🪛 Fake

Implementação real, mas leve. Ex.: repositório em memória que substitui o banco.

Use quando: integração precisa de comportamento, não só retorno fixo.
Atividade Prática · CalculadoraScoreUsuario 🧪
90 min · em pares · TDD guiando a IA · Avaliado via MR · sem ponderada
TAREFA
🎯

Classe CalculadoraScoreUsuario

Recebe lista de Interacao (Like, View, Compra com pesos diferentes) e devolve um score em float. Pesos: View=1, Like=3, Compra=10.

TESTES
🧪

≥ 5 testes xUnit

Cobrindo: histórico vazio · só views · só likes · mix dos 3 · peso de compra > outros. Cada [Fact] = 1 guardrail.

AIOX
🤖

Humano Red, AIOX Green

A dupla foca 100% em criar a suíte de testes perfeita (Contrato). A skill dev do AIOX deve rodar para passar o teste.

📋 Restrição: a IA não pode tocar nas classes existentes do projeto. Crie testes que forcem injeção de dependência via interfaces se precisar.

📦 Entrega: Merge Request no repositório do grupo. Deve conter os logs da interação com o AIOX QA e AIOX Dev no descritivo.

⭐ Excelência: cobertura > 90% medida com coverlet, screenshot anexado no MR. Bônus para par que entregar com [Theory] + [InlineData] bem usado.

🛠️
Mão na massa · 90 min · em pares
Vocês têm 90 min para entregar a CalculadoraScoreUsuario com IA via guardrails xUnit.
1️⃣ Branch feat/score-usuario-aiox
2️⃣ Pasta tests/CalculadoraScoreTests/
3️⃣ Vocês codam Teste 1 (vazio) · commit red
4️⃣ Rodam aiox run qa para validar contrato
5️⃣ Rodam aiox run dev · commit green
6️⃣ Repetir para cenários 2 a 5
7️⃣ MR com logs da IA no descritivo
💡 Estratégia: cenário mais simples primeiro. Deixe o AIOX construir a classe um teste por vez.
🎯
A aula 7 me ensinou que...
TDD não é "escrever testes depois" — é uma forma de pensar o design. Próxima aula sobe para Testes de Integração (PONDERADA): testar o fluxo inteiro de um endpoint da API.
✅ Modelagem Estática e Dinâmica
✅ Testes como Guardrails
✅ Ciclo AAA para IA
✅ AIOX Instalação e Setup
✅ Skill QA na Prática
✅ Skill Dev automatizando o Green
✅ Commits baseados em IA
✅ SOA Preservada
✅ Ponte para integração · aula 8
Módulo 6 · Engenharia de Software · Aula 7 de 10