Pular para o conteúdo
Skillpedia
Agentes280 mil · #137

ai-regression-testing

Ajuda seu agente a realizar testes de regressão em código gerado por IA, evitando pontos cegos.

O que ela faz

Esta ferramenta ajuda a testar seu código automaticamente, especialmente quando a inteligência artificial (IA) o escreveu e revisou. Ela garante que correções de bugs não introduzam novos problemas, focando em testar sem depender de bancos de dados.

Quando usar

  • ✓Quando a IA modifica partes importantes do código (rotas de API, lógica de backend).
  • ✓Após corrigir um bug, para ter certeza de que ele não voltará.
  • ✓Quando você usa um modo de 'sandbox' ou 'simulação' para testar sem usar o banco de dados real.

Exemplo do que pedir para a IA

“Teste se a minha API de perfil de usuário retorna todos os campos necessários, incluindo 'notification_settings'.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/affaan-m/ECC/blob/main/skills/ai-regression-testing/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/skills/ai-regression-testing/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela funciona configurando um ambiente de teste rápido que simula seu aplicativo sem precisar de um banco de dados. Em seguida, escreve testes específicos para verificar se as correções de bugs não quebraram outras partes do código, especialmente em diferentes modos de operação (como sandbox vs. produção).

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add affaan-m/ECC --skill ai-regression-testing

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/skills/ai-regression-testing/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Testes de Regressão de IA

Testes com padrões especificamente projetados para desenvolvimento assistido por IA, onde o mesmo modelo escreve código e o revisa — criando pontos cegos sistemáticos que apenas testes automatizados podem detectar.

Quando Ativar

  • Agente de IA (Claude Code, Cursor, Codex) modificou rotas de API ou lógica de backend
  • Um bug foi encontrado e corrigido — é preciso evitar sua reintrodução
  • O projeto possui um modo sandbox/mock que pode ser aproveitado para testes sem banco de dados
  • Executando /bug-check ou comandos de revisão similares após alterações de código
  • Existem múltiplos caminhos de código (sandbox vs produção, flags de recursos, etc.)

O Problema Central

Quando uma IA escreve código e depois revisa seu próprio trabalho, ela carrega as mesmas suposições em ambas as etapas. Isso cria um padrão de falha previsível:

AI writes fix → AI reviews fix → AI says "looks correct" → Bug still exists

Exemplo do mundo real (observado em produção):

Fix 1: Added notification_settings to API response
  → Forgot to add it to the SELECT query
  → AI reviewed and missed it (same blind spot)

Fix 2: Added it to SELECT query
  → TypeScript build error (column not in generated types)
  → AI reviewed Fix 1 but didn't catch the SELECT issue

Fix 3: Changed to SELECT *
  → Fixed production path, forgot sandbox path
  → AI reviewed and missed it AGAIN (4th occurrence)

Fix 4: Test caught it instantly on first run PASS:

O padrão: inconsistência entre os caminhos sandbox/produção é a principal regressão introduzida por IA.

Testes de API em Modo Sandbox

A maioria dos projetos com arquitetura amigável para IA possui um modo sandbox/mock. Esta é a chave para testes de API rápidos e sem banco de dados.

Configuração (Vitest + Next.js App Router)

// vitest.config.ts
import { defineConfig } from "vitest/config";
import path from "path";

export default defineConfig({
  test: {
    environment: "node",
    globals: true,
    include: ["__tests__/**/*.test.ts"],
    setupFiles: ["__tests__/setup.ts"],
  },
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "."),
    },
  },
});
// __tests__/setup.ts
// Force sandbox mode — no database needed
process.env.SANDBOX_MODE = "true";
process.env.NEXT_PUBLIC_SUPABASE_URL = "";
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY = "";

Auxiliar de Teste para Rotas de API do Next.js

// __tests__/helpers.ts
import { NextRequest } from "next/server";

export function createTestRequest(
  url: string,
  options?: {
    method?: string;
    body?: Record<string, unknown>;
    headers?: Record<string, string>;
    sandboxUserId?: string;
  },
): NextRequest {
  const { method = "GET", body, headers = {}, sandboxUserId } = options || {};
  const fullUrl = url.startsWith("http") ? url : `http://localhost:3000${url}`;
  const reqHeaders: Record<string, string> = { ...headers };

  if (sandboxUserId) {
    reqHeaders["x-sandbox-user-id"] = sandboxUserId;
  }

  const init: { method: string; headers: Record<string, string>; body?: string } = {
    method,
    headers: reqHeaders,
  };

  if (body) {
    init.body = JSON.stringify(body);
    reqHeaders["content-type"] = "application/json";
  }

  return new NextRequest(fullUrl, init);
}

export async function parseResponse(response: Response) {
  const json = await response.json();
  return { status: response.status, json };
}

Escrevendo Testes de Regressão

O princípio chave: escreva testes para bugs que foram encontrados, não para código que funciona.

// __tests__/api/user/profile.test.ts
import { describe, it, expect } from "vitest";
import { createTestRequest, parseResponse } from "../../helpers";
import { GET, PATCH } from "@/app/api/user/profile/route";

// Define o contrato — quais campos DEVEM estar na resposta
const REQUIRED_FIELDS = [
  "id",
  "email",
  "full_name",
  "phone",
  "role",
  "created_at",
  "avatar_url",
  "notification_settings",  // ← Adicionado após um bug indicar que estava faltando
];

describe("GET /api/user/profile", () => {
  it("retorna todos os campos obrigatórios", async () => {
    const req = createTestRequest("/api/user/profile");
    const res = await GET(req);
    const { status, json } = await parseResponse(res);

    expect(status).toBe(200);
    for (const field of REQUIRED_FIELDS) {
      expect(json.data).toHaveProperty(field);
    }
  });

  // Teste de regressão — este bug exato foi introduzido por IA 4 vezes
  it("notification_settings não é undefined (regressão BUG-R1)", async () => {
    const req = createTestRequest("/api/user/profile");
    const res = await GET(req);

…
Perguntas frequentes

Por que testar quando a IA escreve e revisa o código?

Quando a mesma IA escreve e revisa o código, ela pode ter os mesmos 'pontos cegos', esquecendo de verificar algo importante em ambos os processos. Testes automatizados pegam esses erros.

O que é 'sandbox mode'?

É um modo de teste que simula o funcionamento do seu aplicativo sem se conectar a um banco de dados real. Isso torna os testes mais rápidos e fáceis de configurar.

Qual o tipo de erro mais comum que essa ferramenta ajuda a evitar?

O erro mais comum é quando uma correção funciona em um ambiente (como o de produção) mas quebra em outro (como o de sandbox), ou vice-versa. Essa ferramenta verifica essas inconsistências.

Detalhes

Descrição original do autor

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

repo: affaan-m/ECC

Popularidade

Estrelas no GitHub
280 mil
Posição no ranking
#137
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas