Volver a Learning
🤖
Handbook 45 min lectura Claude Code Recursos Gratuitos

Claude Code para Testers
Guía Completa y Recursos Gratuitos

Claude Code no es un chatbot. Es un agente de software autónomo que razona, planifica y ejecuta tareas de ingeniería directamente desde tu terminal. Esta guía explica qué es, dónde aprender gratis y cómo transformar tu práctica de testing con IA.

Claude CodeTestingAIQA AutomationPerformanceGratis
Por Rodrigo Campos · 2026-03-09
Tabla de contenidos

1. ¿Qué es Claude Code?

Claude Code es el CLI oficial de Anthropic — la empresa detrás de Claude — que convierte el modelo de IA en un agente de ingeniería de software que opera directamente desde tu terminal. No es autocompletado, no es solo un chat: es un agente que puede leer archivos, escribir código, ejecutar comandos, navegar repositorios y completar tareas complejas de forma autónoma.

Fue lanzado en 2025 y desde entonces ha ganado adopción masiva en equipos de ingeniería por su capacidad de trabajar con contexto completo del codebase, no solo con snippets aislados.

Arquitectura de Claude Code

CLAUDE CODE Agente CLI Autónomo claude-sonnet / claude-opus Tu Terminal Instrucciones en lenguaje natural Tu Codebase Archivos, tests, configs, git Skills / CLAUDE.md Instrucciones especializadas Test Scripts Playwright, Gatling, k6, JMeter Análisis e Informes Resultados, bugs, reportes Acciones Autónomas git, npm, ejecución de tests ENTRADAS SALIDAS
🔍

Lectura de contexto completo

Lee todo tu repositorio — no solo el archivo abierto. Entiende la arquitectura, patrones de test existentes, configuraciones y dependencias.

⚙️

Ejecución de comandos

Ejecuta tests, lee reportes de error, corrige el código y vuelve a ejecutar — todo en un solo flujo sin salir de la terminal.

🧠

Razonamiento multi-paso

No genera código de forma ciega. Planifica, verifica sus supuestos, detecta errores y corrige antes de dar la tarea por terminada.

🎯

Skills especializados

Instala skills de dominio (performance testing, QA, etc.) que se activan automáticamente según el contexto de tu petición.

Instalación (requiere Node.js 18+)

npm install -g @anthropic-ai/claude-code

# Verificar instalación
claude --version

# Iniciar en tu proyecto de testing
cd mi-proyecto-tests
claude

2. Claude Code vs otras herramientas IA

Hay múltiples herramientas de IA para desarrollo. Entender la diferencia es crítico para usarlas correctamente en testing.

Herramienta Tipo Contexto de codebase Ejecuta comandos Ideal para testing
Claude Code Agente CLI Completo Scripts, análisis, refactor
GitHub Copilot Autocompletado IDE Parcial (archivo abierto) No Completar código de tests
ChatGPT / Claude.ai Chat web Solo lo que pegas No Ideas, consultas puntuales
Cursor / Windsurf IDE con IA Completo Limitado Edición con contexto
Gemini Code Assist IDE Plugin Parcial No Sugerencias en IDE

La ventaja clave para testers

Claude Code puede leer tus reportes de error, entender el contexto del test que falló, escribir el fix, ejecutarlo y verificar que pasa — todo en un ciclo autónomo. Ningun otro tool hace esto completo desde la terminal.

3. Cursos gratuitos disponibles

El ecosistema de aprendizaje para Claude Code y IA en testing está creciendo rápido. Aquí los recursos gratuitos más valiosos organizados por tipo.

Ruta de aprendizaje recomendada

1 Fundamentos Docs oficiales Anthropic.com ~2 horas 2 Prompt Engineering DeepLearning.AI Coursera (audit gratis) ~4 horas 3 Claude Code CLI Docs claude.ai/code YouTube Anthropic ~3 horas 4 Testing con Claude Skills + Práctica Este handbook 🎯 ¡Estás aquí!
📚

Documentación Oficial — Claude Code

Gratis 2-3 horas

La fuente primaria. Cubre instalación, comandos, configuración de CLAUDE.md, hooks, permisos y casos de uso. Incluye ejemplos prácticos.

docs.anthropic.com/claude-code → Plataforma: Web

🎓

Prompt Engineering for Developers — Anthropic + DeepLearning.AI

Gratis 4 horas

Curso corto pero muy denso. Enseña los principios de prompt engineering con la API de Anthropic. Base esencial para sacarle partido a Claude en cualquier contexto, incluido testing.

deeplearning.ai → Plataforma: Web (100% gratis)

🎯

Generative AI for Everyone — Coursera

Audit gratis 6 horas

Curso de Andrew Ng sobre IA generativa. La opción "audit" es completamente gratuita — sin certificado pero con acceso total al contenido. Excelente para entender las capacidades y limitaciones reales de los LLMs.

coursera.org → Plataforma: Web (audit = gratis)

▶️

Canal oficial de Anthropic en YouTube

Gratis

Demos reales de Claude Code, walkthroughs de features nuevos y casos de uso avanzados. Recomendado: la serie de demos de Claude Code mostrando flujos completos de desarrollo.

youtube.com/@Anthropic → Buscar: "Claude Code"

anthropics/claude-code — Repositorio oficial

Gratis

Repositorio oficial con ejemplos, CLAUDE.md templates, hooks de ejemplo y contribuciones de la comunidad. El lugar más actualizado para patterns y buenas prácticas.

github.com/anthropics/claude-code → Issues y Discussions

🌐

Comunidad y blogs técnicos

Gratis

Dev.to, Medium y Reddit (r/ClaudeAI, r/QualityAssurance) tienen artículos y casos reales de uso en testing. La comunidad comparte patterns, CLAUDE.md templates y flujos completos de automatización.

dev.to, medium.com, reddit.com/r/ClaudeAI

Resumen de recursos por nivel

Principiante

  • ✓ Docs oficiales Claude Code
  • ✓ YouTube Anthropic (demos)
  • ✓ Generative AI for Everyone

Intermedio

  • ✓ Prompt Engineering for Devs
  • ✓ GitHub anthropics/claude-code
  • ✓ Skills especializados

Avanzado

  • ✓ Construir tus propios skills
  • ✓ CLAUDE.md avanzado
  • ✓ Integración CI/CD con IA

4. Casos de uso en testing

Claude Code tiene aplicaciones concretas en todas las fases del ciclo de testing. Aquí el mapa completo de dónde y cómo usarlo.

Áreas de testing donde Claude Code agrega valor

CLAUDE
CODE

Generación de Test Cases

Desde requirements, BDD, edge cases

Tests Unitarios e Integración

Jest, Pytest, JUnit, coverage

E2E / UI Testing

Playwright, Cypress, Selenium + Page Objects

API Testing

REST, GraphQL, contratos, Postman collections

Performance Testing

Gatling, k6, JMeter scripts + análisis de reportes

Análisis y Reportes

Interpretación de fallos, bug reports automáticos

📝

Generación de test cases

Análisis de requirements

Ejemplo de prompt: "Genera casos de prueba para este endpoint de login, incluye edge cases y escenarios negativos"

🤖

Automatización E2E

Playwright / Cypress

Ejemplo de prompt: "Crea un test de Playwright para el flujo de checkout, basándote en la estructura de componentes existente"

Scripts de carga

Gatling / k6 / JMeter

Ejemplo de prompt: "Convierte este JMeter test a Gatling con 500 usuarios, ramp 5 min, y threshold de p95 < 800ms"

🔍

Análisis de fallos

Debug automático

Ejemplo de prompt: "Aquí está el stack trace del test que falló. Identifica la causa raíz y sugiere el fix"

📊

Interpretación de reportes

Performance analysis

Ejemplo de prompt: "Lee este reporte de Gatling y dime si hay regresiones respecto a los SLAs del CLAUDE.md"

🧪

Generación de test data

Data generation

Ejemplo de prompt: "Genera 1000 registros de usuarios con datos realistas en español para pruebas de carga"

5. Generación de test cases con IA

Una de las tareas más tediosas en testing es derivar test cases exhaustivos de un requisito. Claude Code puede hacerlo en segundos, con cobertura de happy paths, edge cases, escenarios negativos y condiciones de frontera.

PROMPT Petición al agente
Lee el archivo src/auth/login.service.ts y genera:
1. Feature file BDD en Gherkin para login
2. Incluye: happy path, contraseña incorrecta,
   usuario no existe, cuenta bloqueada, rate limiting
3. Formato Cucumber compatible con nuestro setup
OUTPUT Resultado generado
Feature: User Authentication - Login
  As a registered user
  I want to log in to the platform
  So that I can access my account

  Background:
    Given the application is running
    And the database is seeded with test users

  Scenario: Successful login with valid credentials
    Given I am on the login page
    When I enter valid email "user@test.com"
    And I enter valid password "SecurePass123!"
    And I click the login button
    Then I should be redirected to the dashboard
    And I should see a welcome message

  Scenario: Failed login with incorrect password
    Given I am on the login page
    When I enter valid email "user@test.com"
    And I enter incorrect password "WrongPass"
    And I click the login button
    Then I should see error "Invalid credentials"
    And I should remain on the login page
    And the failed attempt should be logged

  Scenario: Failed login with non-existent user
    Given I am on the login page
    When I enter non-existent email "ghost@test.com"
    And I enter any password "AnyPass123"
    And I click the login button
    Then I should see error "Invalid credentials"
    And the response time should be similar to valid user (anti-enumeration)

  Scenario: Login blocked after 5 failed attempts
    Given I am on the login page
    And I have failed login 4 times with email "user@test.com"
    When I fail a 5th login attempt
    Then I should see error "Account temporarily locked"
    And I should not be able to attempt login for 15 minutes

  Scenario Outline: Rate limiting on login endpoint
    Given I am on the login page
    When I make <attempts> login attempts in <seconds> seconds
    Then I should receive a 429 Too Many Requests response
    Examples:
      | attempts | seconds |
      | 10       | 60      |
      | 5        | 10      |

Tips para mejores resultados

  • ✓ Apunta al archivo fuente: Lee src/auth/login.service.ts y genera...
  • ✓ Especifica el formato de salida: Gherkin / Jest / Pytest
  • ✓ Menciona el contexto de negocio: reglas de validación, SLAs esperados
  • ✓ Pide edge cases explícitamente: incluye SQL injection, XSS, valores null

6. Automatización de scripts de testing

Claude Code puede generar, depurar y refactorizar scripts de automatización — Playwright, Cypress, Selenium — con conocimiento completo de tu proyecto: configuración, helpers existentes, Page Objects, variables de entorno.

Ejemplo: Playwright E2E desde cero

Tenemos un flujo de checkout en React. Lee los componentes
en src/pages/checkout/ y genera un test Playwright E2E que:
- Navegue al carrito con 2 productos
- Complete el formulario de envío
- Ingrese datos de tarjeta de prueba (Stripe test mode)
- Verifique confirmación y número de orden
Usa los helpers que ya existen en tests/helpers/
import { test, expect } from '@playwright/test';
import { CartHelper, CheckoutHelper } from '../helpers';
import { TEST_CARDS } from '../fixtures/payment';

test.describe('Checkout Flow - E2E', () => {
  test.beforeEach(async ({ page }) => {
    await page.goto('/');
    await CartHelper.addProducts(page, [
      { sku: 'PROD-001', qty: 1 },
      { sku: 'PROD-002', qty: 2 }
    ]);
  });

  test('complete checkout with Stripe test card', async ({ page }) => {
    // Navigate to checkout
    await page.goto('/checkout');
    await expect(page.getByTestId('checkout-title')).toBeVisible();
    await expect(page.getByTestId('order-items')).toContainText('3 productos');

    // Fill shipping form
    await CheckoutHelper.fillShipping(page, {
      name: 'Test User',
      address: 'Calle Test 123',
      city: 'Buenos Aires',
      zip: '1000',
      country: 'AR'
    });

    // Payment with Stripe test card
    const stripeFrame = page.frameLocator('[name="stripe-card-element"]');
    await stripeFrame.locator('[placeholder="Número de tarjeta"]').fill(TEST_CARDS.visa);
    await stripeFrame.locator('[placeholder="MM / AA"]').fill('12/27');
    await stripeFrame.locator('[placeholder="CVC"]').fill('123');

    // Place order
    await page.getByRole('button', { name: 'Confirmar pedido' }).click();

    // Verify confirmation
    await expect(page).toHaveURL(/\/orders\/\d+\/confirmation/);
    const orderNumber = await page.getByTestId('order-number').textContent();
    expect(orderNumber).toMatch(/^ORD-\d{8}$/);
    await expect(page.getByTestId('success-message')).toBeVisible();
  });
});

Playwright

TypeScript / Python / Java

E2E, cross-browser

Cypress

JavaScript / TypeScript

E2E, component tests

Selenium

Java / Python / C#

Legacy, cross-browser

Jest / Vitest

JavaScript / TypeScript

Unit, integration

7. Performance testing con Claude Code

El performance testing es donde Claude Code brilla especialmente porque los scripts son complejos, la sintaxis varía por herramienta y los patrones de carga (ramp-up, steady state, spike) requieren razonamiento estructurado.

Flujo de performance testing con Claude Code

Definir escenario

Usuarios, ramp, thresholds

Generar script

Gatling / k6 / JMeter

Ejecutar test

Claude corre el comando

Analizar reporte

Leer HTML / JSON

Fix & iterar

Ajustar y repetir

● Todo autónomo

Ejemplo: script k6 generado

Genera un test de k6 para la API /api/search:
- 0 → 100 VU en 2 min (ramp-up)
- Steady state: 100 VU por 5 min
- Ramp-down: 100 → 0 en 1 min
- Threshold: p95 < 500ms, error rate < 1%
- Headers de autenticación JWT del .env
import http from 'k6/http';
import { check, sleep } from 'k6';
import { Trend, Rate } from 'k6/metrics';

const searchDuration = new Trend('search_duration');
const errorRate = new Rate('error_rate');

export const options = {
  stages: [
    { duration: '2m', target: 100 },  // ramp-up
    { duration: '5m', target: 100 },  // steady state
    { duration: '1m', target: 0 },    // ramp-down
  ],
  thresholds: {
    'search_duration': ['p(95)<500'],
    'error_rate': ['rate<0.01'],
    'http_req_duration': ['p(95)<500'],
  },
};

const BASE_URL = __ENV.API_BASE_URL || 'https://api.example.com';
const JWT_TOKEN = __ENV.JWT_TOKEN;

const searchTerms = ['laptop', 'smartphone', 'tablet', 'headphones'];

export default function () {
  const term = searchTerms[Math.floor(Math.random() * searchTerms.length)];

  const res = http.get(`${BASE_URL}/api/search?q=${term}&limit=20`, {
    headers: {
      'Authorization': `Bearer ${JWT_TOKEN}`,
      'Content-Type': 'application/json',
    },
  });

  const success = check(res, {
    'status is 200': (r) => r.status === 200,
    'has results': (r) => JSON.parse(r.body).results?.length > 0,
    'response time OK': (r) => r.timings.duration < 500,
  });

  searchDuration.add(res.timings.duration);
  errorRate.add(!success);

  sleep(1);
}

¿Usas Gatling? Tenemos un skill dedicado

El skill performance-testing-skills se instala localmente y se activa automáticamente cuando describes tareas de load testing con Gatling. Cubre Java, Kotlin, Scala, TypeScript y JavaScript.

Ver Performance Testing Skills →

8. Análisis de resultados con Claude Code

Los reportes de testing (Gatling HTML, JUnit XML, JSON de k6, logs de Playwright) contienen información valiosa pero difícil de interpretar rápidamente. Claude Code puede leerlos, identificar patrones y generar resúmenes ejecutivos.

1

Leer el reporte de Gatling

Lee el archivo target/gatling/simulation-20260309/simulation.log
y dime:
1. ¿Cuáles requests superaron el SLA de 800ms p95?
2. ¿Hay errores > 1% en algún endpoint?
3. ¿En qué minuto se observó el pico de latencia?
2

Comparar dos ejecuciones

Tengo dos reportes: baseline.json y after-deploy.json
Compara p50, p95, p99 y error rate entre ambos.
¿Hay regresión de performance en el deploy?
Genera tabla comparativa y recomendación.
3

Generar bug report automático

Este es el stack trace del test que falló en CI.
Lee también el código en src/services/payment.service.ts
Genera un bug report Markdown listo para Jira con:
- Descripción, pasos para reproducir, logs relevantes

Ejemplo de análisis generado

🔴

SLA violation detectado

POST /api/checkout → p95: 1.247ms (SLA: 800ms) | Error rate: 2.3% (SLA: 1%)

🟡

Pico detectado en minuto 7

Coincide con el ramp-up máximo. Posible saturación del connection pool en la DB.

🟢

Endpoints dentro de SLA

GET /api/products, GET /api/search, GET /api/user — todos bajo 300ms p95

9. Skills para testing

Los Claude Code Skills son archivos Markdown que instalas una vez en ~/.claude/skills/ o en .claude/skills/ del proyecto. Contienen instrucciones especializadas que el agente aplica automáticamente cuando el contexto lo requiere.

Estructura de un skill

# Instalar skill desde GitHub
git clone https://github.com/rcampos09/performance-testing-skills
cp performance-testing-skills/.claude/skills/* ~/.claude/skills/

# O crear tu propio skill
mkdir -p ~/.claude/skills
cat > ~/.claude/skills/qa-testing.md << 'EOF'
# QA Testing Expert
Trigger: cuando el usuario mencione "test", "QA", "testing", "automatización"
...instrucciones especializadas...
EOF

performance-testing-skills

Skill especializado en Gatling para Java, Kotlin, Scala, TypeScript y JavaScript. Patrón de 5 bloques, 7 errores críticos a evitar, templates listos.

GatlingLoad TestingMITOpen Source
Ver documentación →
🧪

Crea tus propios skills de QA

Puedes crear skills propios para tu stack: Playwright + TypeScript, Cypress + React, API testing con Pactflow, etc. Solo requiere un archivo Markdown con instrucciones.

PlaywrightCypressPactRestAssured

Template CLAUDE.md para proyectos de testing

# CLAUDE.md — Proyecto de Testing

## Stack de testing
- Framework: Playwright + TypeScript
- Unit tests: Jest + Testing Library
- Performance: Gatling (Java DSL)
- Reports: Allure + HTML reports en /reports/

## Convenciones
- Page Objects en tests/pages/
- Fixtures en tests/fixtures/
- Helpers en tests/helpers/
- Nunca generar datos hardcodeados, usar faker

## SLAs de performance
- p95 < 500ms para APIs
- p95 < 2000ms para flujos E2E
- Error rate < 0.5%

## Comandos
- npm test → Jest unit tests
- npm run e2e → Playwright
- mvn gatling:test → Performance tests

10. Workflow práctico diario

Así luce un día típico de un tester que integra Claude Code en su workflow. El objetivo no es reemplazar criterio profesional — es eliminar el trabajo mecánico y enfocarse en lo que realmente importa.

🌅
Mañana

Review de nuevas features en desarrollo

  1. 1. claude → "Lee los PRs merged ayer y genera test cases para los endpoints nuevos"
  2. 2. Claude lee el diff, entiende los cambios y genera test cases en Gherkin o directamente en tu framework
  3. 3. Revisas y ajustas los casos críticos de negocio
💻
Trabajo

Implementación de tests automatizados

  1. 1. claude → "Implementa los test cases en Playwright para el módulo de pagos"
  2. 2. Claude crea los Page Objects, fixtures y scripts completos
  3. 3. Ejecuta los tests, lee los errores y los corrige automáticamente
🔄
CI/CD

Análisis de fallos en pipeline

  1. 1. claude → "El test de checkout falló en CI. Lee los logs y el código afectado"
  2. 2. Claude analiza el stack trace, identifica la causa raíz y propone el fix
  3. 3. Genera el bug report para Jira si el fallo es del código productivo
📊
Cierre

Análisis de resultados del día

  1. 1. claude → "Resume los resultados de testing del día y genera el reporte para el equipo"
  2. 2. Claude consolida coverage, tests pasados/fallados, nuevos bugs encontrados
  3. 3. Exporta resumen ejecutivo listo para compartir en Slack o correo

Impacto estimado en tiempo por tarea

Sin Claude Code
Con Claude Code

Generar test cases (10 req.)

3 h
15 min

Script load testing Gatling

2 h
10 min

Análisis reporte performance

60 min
5 min

Script Playwright E2E

90 min
12 min

Bug report documentado

30 min
3 min

Estimaciones aproximadas basadas en experiencia real. Los tiempos varían según complejidad del proyecto.

11. Biblioteca de prompts para testers

Los prompts que realmente funcionan — probados en proyectos reales

La diferencia entre un tester que "prueba" Claude Code y uno que lo integra como herramienta profesional está en la calidad del prompt. Aquí los patrones que producen resultados de alta calidad, organizados por contexto. Cópialos, adáptalos a tu stack.

La regla de oro del prompting para testing

Un buen prompt de testing siempre responde tres preguntas: ¿Qué archivo o contexto leer?¿Qué producir exactamente?¿Con qué restricciones/convenciones?. Sin estas tres partes, el output es genérico e inútil.

Análisis de requisitos
De historia de usuario a test cases Prompt
Lee el archivo docs/stories/US-142-checkout.md.
Genera test cases en Gherkin cubriendo:
- Happy path completo
- Validaciones de formulario (campos vacíos, formatos inválidos)
- Casos de borde (carrito vacío, stock insuficiente, producto discontinuado)
- Escenarios de error de red y timeout
Formato: un Feature file por módulo funcional.
Idioma: español.

Por qué funciona: Especificar el archivo fuente + los tipos de escenarios + formato/idioma elimina la ambigüedad y produce output directamente usable.

Análisis de cobertura de tests existentes Prompt
Lee todos los archivos en tests/e2e/ y tests/unit/.
Compara contra los requisitos en docs/requirements.md.
Genera un reporte de coverage cualitativo que identifique:
1. Funcionalidades no cubiertas o parcialmente cubiertas
2. Test cases redundantes (mismo escenario en varios tests)
3. Prioridad de qué implementar primero según riesgo de negocio

Por qué funciona: Pedir análisis cualitativo de coverage va más allá de las métricas de cobertura de código — identifica gaps reales de negocio.

Automatización E2E
Page Object desde componente React
Lee el componente src/pages/LoginPage.tsx.
Crea un Page Object para Playwright en TypeScript siguiendo el patrón
de los Page Objects existentes en tests/pages/.
Incluye métodos para:
- navigate(), fillEmail(), fillPassword(), submit(), getErrorMessage()
- waitForNavigation() post-login exitoso
No uses selectores CSS frágiles; prioriza data-testid > role > text.

Por qué funciona: Apuntar a los POs existentes hace que Claude siga TUS convenciones, no las suyas. El resultado es coherente con el proyecto.

Test E2E completo con fixtures
Usando el Page Object en tests/pages/CheckoutPage.ts,
genera un test Playwright completo para el flujo de compra.
Usa los fixtures de usuario en tests/fixtures/users.json.
El test debe:
- Ser independiente (no depender de estado previo)
- Limpiar datos después de ejecutarse
- Tener assertions en cada paso crítico
- Seguir el patrón AAA (Arrange, Act, Assert)

Por qué funciona: Mencionar independencia, cleanup y AAA produce tests de verdad mantenibles, no scripts frágiles de happy-path.

Debug de test flaky
Este test falla intermitentemente en CI pero pasa en local.
Aquí el log de la última falla: [pega el log]
Aquí el test: [pega el código]
Analiza causas posibles de flakiness:
- Race conditions / timing issues
- Dependencias de estado externo
- Selectores no estables
Propone el fix y explica el trade-off de cada opción.

Por qué funciona: Pedir análisis de causas + trade-offs obliga a Claude a razonar, no solo aplicar un parche superficial.

Performance Testing
Script de carga desde OpenAPI spec
Lee el archivo docs/api/openapi.yaml.
Genera un test de Gatling en Java DSL para los endpoints del módulo /api/orders.
Patrón de carga: ramp 0→200 VU en 3 min, steady 5 min, ramp-down 2 min.
Thresholds definidos en CLAUDE.md.
Incluye:
- Feeders con datos de prueba realistas (CSV)
- Checks de status code y tiempo de respuesta
- Autenticación JWT usando variable de entorno PERF_TOKEN

Por qué funciona: Leer el OpenAPI spec garantiza que los endpoints, parámetros y payloads son correctos — sin adivinanzas.

Análisis de regresión de performance
Tengo dos archivos JSON de resultados de k6:
- baseline.json (antes del deploy)
- current.json (después del deploy)
Compara p50, p95, p99 y error rate para cada endpoint.
Genera:
1. Tabla comparativa Markdown
2. Lista de endpoints con regresión > 20%
3. Recomendación: ¿bloquear el deploy o permitirlo con monitoreo?
Basa la recomendación en los SLAs de CLAUDE.md

Por qué funciona: Pedir una recomendación accionable (bloquear/permitir) fuerza a Claude a interpretar los datos en contexto de negocio.

API Testing
Contrato de API con validación de esquema
Lee el archivo src/api/routes/payments.ts.
Genera tests de contrato usando Pact (consumer-driven) para el endpoint POST /api/payments.
Incluye:
- Casos de pago exitoso, fondos insuficientes, tarjeta inválida
- Validación de esquema JSON de respuesta
- Headers requeridos (Content-Type, X-Request-ID)
Guarda el contrato en tests/contracts/payments.pact.json

Por qué funciona: Contract testing con Claude Code es extremadamente potente porque lee el código fuente real del endpoint, no la documentación desactualizada.

Generación de colección Postman
Lee el OpenAPI spec en docs/api/openapi.yaml.
Genera una colección Postman v2.1 con:
- Variables de entorno para baseUrl, token, userId
- Pre-request scripts para generar tokens JWT de prueba
- Tests de validación en cada request (status, schema, tiempo)
- Orden lógico de ejecución para el flujo completo de órdenes
Exporta como orders-collection.json en docs/postman/

Por qué funciona: Especificar el formato de exportación y el orden de ejecución produce una colección lista para CI/CD, no solo documentación.

Test Data
Generar datos de prueba realistas
Lee el schema de base de datos en src/db/schema.sql,
específicamente las tablas users, orders y products.
Genera un script SQL de seed con:
- 500 usuarios con datos demográficos realistas para Argentina
- 2000 órdenes distribuidas en los últimos 6 meses
- Incluir casos edge: usuarios sin órdenes, órdenes sin items, estados en conflicto
- Respetar todas las constraints de FK del schema
Guarda en tests/fixtures/seed-perf.sql

Por qué funciona: Leer el schema real previene violaciones de FK y genera datos coherentes con la estructura real de la base de datos.

12. Errores comunes al usar Claude Code en testing

Los anti-patrones que arruinan la calidad de los tests generados

Después de usar Claude Code en proyectos reales de testing, estos son los errores que se repiten. No son fallas de la IA — son fallas en la forma de usarla. Identificarlos temprano te ahorra horas de deuda técnica de tests.

ERROR 01

Tests que siempre pasan (assertions débiles)

Lo que pasa

Claude genera tests con assertions demasiado amplias que nunca pueden fallar:

// ❌ Assertion inútil
expect(response.status).toBeDefined();
expect(response.body).not.toBeNull();
expect(data.length).toBeGreaterThan(-1);

Cómo evitarlo

Pide assertions específicas sobre el dominio:

// ✅ Assertions con valor
expect(response.status).toBe(201);
expect(data.orderId).toMatch(/^ORD-\d{8}$/);
expect(data.total).toBe(199.99);
expect(data.items).toHaveLength(2);

Agrega en tu prompt: "Las assertions deben validar valores concretos, no solo existencia o tipos."

ERROR 02

Tests con dependencias ocultas entre sí

Sin instrucción explícita, Claude puede generar una suite de tests donde el test 3 depende del estado que dejó el test 1. Pasan en orden pero fallan en paralelo o en orden aleatorio.

# Señales de alerta

• Tests que usan variables globales compartidas

• beforeAll que crea datos que múltiples tests consumen

• Tests que funcionan "solo si se ejecutan juntos"

Fix en el prompt: "Cada test debe ser completamente independiente. Usar beforeEach para setup y afterEach para cleanup. No compartir estado entre tests."

ERROR 03

Selectores CSS frágiles en tests de UI

Frágil — rompe con cualquier refactor de CSS

// ❌ Selector frágil
await page.click('.btn.btn-primary.checkout');
await page.fill('input:nth-child(3)', email);
await page.click('#app > div > main > form > button');

Robusto — sobrevive a cambios de UI

// ✅ Selector robusto
await page.getByTestId('checkout-btn').click();
await page.getByLabel('Email').fill(email);
await page.getByRole('button', { name: 'Pagar' }).click();

Fix en el prompt: "Priorizar selectores en este orden: data-testid > aria-role > aria-label > texto visible. Nunca usar selectores CSS con clases de estilos."

ERROR 04

Scripts de performance sin thresholds explícitos

Claude genera scripts de k6 o Gatling funcionales pero sin thresholds que causen falla del pipeline. Un test de performance que nunca falla aunque p95 sea 10 segundos no aporta valor.

Fix: Define los SLAs en tu CLAUDE.md y referencialos: "Los thresholds deben fallar el test si p95 > 500ms o error rate > 1%, como está definido en CLAUDE.md"

ERROR 05

Confiar en coverage de código como proxy de calidad

Claude puede generar tests que alcancen 95% de coverage de código pero que no testean los casos de negocio críticos. El coverage de código mide líneas ejecutadas, no comportamiento verificado.

Regla práctica

Al evaluar tests generados, pregunta: "Si este test pasa, ¿puedo confiar en desplegar a producción esta funcionalidad?". Si la respuesta es "no del todo", el test tiene coverage pero no valor real.

ERROR 06

No verificar el código generado antes de commitear

Claude Code es un agente autónomo que toma decisiones. A veces toma decisiones incorrectas: importa una librería que no existe en el proyecto, usa una API que fue deprecada, o genera un helper que ya existe con otro nombre.

# Checklist mínimo antes de commitear tests generados

□ El test compila/parsea sin errores de TypeScript

□ Ejecutar el test al menos una vez (debe poder pasar Y fallar)

□ Las importaciones existen en el proyecto

□ Los selectores/endpoints coinciden con el código real

□ Las assertions tienen valores específicos (no solo existencia)

13. Buenas prácticas

Hacer

  • Apuntar a archivos concretos: Lee src/auth/login.ts y genera...
  • Incluir el CLAUDE.md con convenciones del proyecto, stack y SLAs
  • Revisar el código generado antes de commitear — Claude Code no es infalible
  • Pedir explicaciones cuando algo no sea claro: ¿Por qué usaste esta estructura?
  • Iterar sobre los resultados: el primer output raramente es el final

Evitar

  • Prompts vagos: "genera tests" sin contexto produce código genérico e inútil
  • Commitear código generado sin ejecutarlo — verifica siempre que funciona
  • Compartir credenciales, tokens o secrets en el prompt
  • Esperar perfección al primer intento en sistemas complejos
  • Usar para sustituir criterio de testing — la IA no conoce el negocio como tú
🧠

Claude Code amplifica, no reemplaza

El criterio de un tester senior — saber qué testear, cuándo un bug es crítico, cómo diseñar una estrategia de testing alineada al negocio — no puede automatizarse. Claude Code elimina el trabajo mecánico (escribir scripts repetitivos, formatear reportes, generar datos de prueba) para que el tester se enfoque en análisis de riesgo, exploración y estrategia.

14. Recursos y referencias

Documentación oficial

  • Claude Code — Docs oficiales docs.anthropic.com/claude-code
  • Anthropic — Model docs docs.anthropic.com
  • Claude Code — GitHub Issues github.com/anthropics/claude-code

Cursos gratuitos

  • Prompt Engineering for Devs deeplearning.ai
  • Generative AI for Everyone (Coursera) coursera.org
  • YouTube — Canal Anthropic youtube.com/@Anthropic

Testing & herramientas

  • Playwright — playwright.dev playwright.dev
  • k6 — k6.io/docs k6.io/docs
  • Gatling — gatling.io/docs gatling.io/docs

🚀

¿Listo para aplicar Claude Code en tus tests?

Empieza con la documentación oficial, instala el skill de performance testing y abre tu proyecto de tests. En menos de una hora verás el impacto real.