AGENTIC QA · WORKFLOW SKILL

/test-documentation

El puente entre la QA manual y la automatización: analiza, prioriza con ROI y documenta test cases en el TMS con trazabilidad completa.

Stage 4 — TMS docs + ROI Analyze → Prioritize → Document US↔ATP↔ATR↔TC Candidate · Manual · Deferred
Deck del workflow del skill /test-documentation. Regla de la casa: la mayoría de los escenarios NO se automatizan — el veredicto por defecto es Deferred. Navegación: → avanzar, S presentador, O vista general, N notas.

el mapa completo — índice mental del deck

Del comportamiento validado al repositorio de regression

ENTRADA Story QA Approved (desde /sprint-testing) Bug cerrado con fix verificado Módulo explorado end-to-end Sesión exploratoria terminada (ad-hoc)
G
Preflight Gate

/acli + [TMS_TOOL] operativos

RED bloqueante → STOP
-1
Resume check

.session/…/progress.md

resume · restart · abort
0
Modalidad TMS

gate: ¿Xray licenciado?

jira-xray | jira-native
S
Alcance

module · ticket · bug · ad-hoc

plan.md escrito
1
Analyze

escenarios reales + código

1 (pre+acción) = 1 TC
2
Prioritize

3 filtros + fórmula ROI

C · M · D
3
Document

crear / promover + enlazar

>10 TCs → paralelo
Archive

coverage matrix + sesión

mem_session_summary
Gates. Preflight con RED bloqueante → STOP; la modalidad se auto-resuelve en 3 sondeos y solo pregunta si los tres fallan.
Fallbacks. Sin work type Test Plan/Test Execution → ATP/ATR como campos de la Story; campo ausente → comment estructurado.
Loops. Bulk create interrumpido → resume despacha solo los chunks faltantes; rework de TC vía back_from_<state>.
Handoffs. Candidate → /test-automation · Manual → suite manual · Deferred → solo reporte (terminal).
SALIDA TCs trazables US↔ATP↔ATR↔TC test-cases/*.md (caché local) coverage matrix en .context/reports/ veredicto por TC: C / M / D
Este mapa es el índice del deck: cada nodo del camino principal es una sección que sigue. Camino principal: Gate → Resume → Modalidad → Alcance → Analyze → Prioritize → Document → Archive. Los caminos adyacentes (gates, fallbacks, loops, handoffs) están en la franja inferior.

antes de la fase 1 — tres candados

Nada se documenta sin pasar los gates

Prerrequisito duro

Solo comportamiento ya validado: Story QA Approved, bug cerrado, o sesión exploratoria terminada. El TMS documenta y protege regression — no es una herramienta de exploración (explorar es de /sprint-testing).

Preflight Gate

REQUIRED: issue-tracker operativo (/acli, valida con bun run jira:check) + modalidad TMS resoluble (jira-xray → /xray-cli + creds XRAY_*). OPTIONAL: repos fuente legibles. No toca entorno vivo → sin probes de DB/API/browser. Gaps → UNA checklist; RED bloqueante → STOP.

Fase -1 · Resume check

Lee .session/test-documentation/<scope>/progress.md. Si existe: muestra scope, modalidad, última fase completada y chunks pendientes → ofrece resume / restart / abort (restart archiva primero).

El caso de resume que más importa

Bulk create de la Fase 3 interrumpido a mitad de lote: progress.md registra cada chunk completado (uno por subagente), así que resume salta los TCs ya creados y despacha solo los chunks faltantes.

Los tres candados corren en orden: prerequisito de comportamiento validado (conceptual), preflight de capacidades (mecánico: acli + TMS), y resume de sesión. El skill no ejecuta contra un sistema vivo — su gate se centra en poder ESCRIBIR en el TMS.

fase 0 — gate obligatorio, se resuelve UNA vez

¿Xray licenciado? Mismos conceptos, distintos contenedores

1

Config

{{TMS_CLI}} = bun xray → jira-xray; acli-solo o sin definir → jira-native.

2

Master Test Plan

Línea TMS: Xray on Jira o TMS: Jira native en .context/master-test-plan.md.

3

Issue types

¿Existen Test Plan / Test Execution / Test Set / Pre-Condition? Sí → jira-xray; no → jira-native.

4

Preguntar

Solo si los tres sondeos fallan. Persistir en plan.md; sticky — drift a mitad de sesión → STOP y pregunta.

Artefactojira-xrayjira-native (sin Xray)
ATPIssue Test Plan «ATP: {STORY}: {título}»Mismo issue Test Plan por excelencia; fallback: campo de la Story → comment
ATRIssue Test Execution con Test Runs por TCMismo issue Test Execution; fallback: campo de la Story → comment
TCXray Test (Manual / Cucumber / Generic)Issue type Test nativo; la Description lleva el template completo
Test Set / Pre-ConditionFirst-classNo existen → labels + agrupación por Epic
Result sync (CI)Import Results JUnit/Cucumber → runs autoScript actualiza Test Status + comment por build
Items-first en AMBAS modalidades: Test Plan y Test Execution son work types nativos de Jira, independientes de Xray — el campo de la Story es un fallback degradado solo cuando el work type no existe en la instancia. Nunca mezclar modalidades dentro de una misma Story (anti-patrón D5).

elige el alcance por la ENTRADA, no por la salida

Cuatro alcances, un solo pipeline

AlcanceEntradaVolumen típicoSesgo por defecto
Module-drivenun módulo explorado de punta a punta20-100+ escenariosla mayoría terminará Deferred
Ticket-drivenuna Story QA Approved del sprint3-8 escenariosATP/ATR por Story
Bug-drivenun bug cerrado con fix verificado0-2 escenariosROI sesgado ARRIBA — «falló una vez, puede fallar de nuevo»
Ad-hoc / Exploratoryescenarios nuevos de exploración1-10 escenariosaplica los 3 filtros con dureza

Al confirmar el alcance, la IA escribe el plan

<scope> = <JIRA-KEY> (ticket/bug) · <module-slug> · <YYYY-MM-DD>-adhoc. Escribe .session/test-documentation/<scope>/plan.md: goal (scope + modalidad + nº de TCs esperados), inputs (PBI, ATP, bugs previos), fases, riesgos y checklist de verificación — y registra el checkpoint en progress.md.

Un ID de Story → ticket-driven · un ID de bug → bug-driven · un nombre de módulo → module-driven · notas de sesión → ad-hoc.

Los cuatro alcances comparten el pipeline Analyze → Prioritize → Document; solo cambian la fuente de entrada y los defaults. El plan-first es obligatorio (contrato de sesión): nada se crea en el TMS sin plan.md escrito.

alcance bug-driven — la regla que vale oro

Un bug importante DEBE terminar con un Test

1

¿Es candidato de regression?

Aplica los filtros de la Fase 0 + ROI (el bug previo sesga hacia arriba). NO → trátalo como un test fallido: el fix ya se verificó en sprint-testing → Deferred, sin Test nuevo. → paso 2.

2

¿Vino de un Test ya ejecutado que falló?

REUTILIZA ese Test: enlázalo al bug (tests / is tested by) y promuévelo a regression — nunca dupliques. NOCREA + diseña el Test (native: issue Test; xray: Xray Test + Test Plan / Test Set).

Anula «el bug es el test case»

Esa frase de /sprint-testing cubre solo el retest inmediato del sprint — NO la regression futura. Esta regla decide si debe existir un Test persistente para que el bug nunca regrese en silencio.

Nunca reabras un bug cerrado (D8)

La historia del bug es inmutable. Crea el TC nuevo y enlázalo vía tests / is tested by — no adjuntes regression reabriendo el issue.

Un bug cerrado es evidencia empírica fuerte de que el área regresa: la mayoría califica y se inclina a Candidate — pero no todos (un typo puntual en un área estable se difiere). La decisión reuse-or-create evita duplicar Tests que ya existen en el set.

fase 1 — analyze · qué entra

Reúne las fuentes — y luego lee el código

FuenteQué se leePor qué
Story / Epiccarpeta sincronizada completa: story.md, acceptance-criteria.md, scope, business rules, comments.mdidentificar escenarios + señales de riesgo
Bugs cerrados enlazadossummary, causa raíz, área del fixregla de priorización por bug previo
ATP / ATR existenteslectura modality-aware vía bun run jira:sync-issues get <KEY> --include-comments → leer el .md sincronizadoescenarios y resultados que ya existen — no reinventar ni re-ejecutar
Implementation plan + códigoarchivos reales, APIs, test IDsvalidar diseño vs implementación
domain-glossary.mdnombres canónicos de entidades y procesosvocabulario de títulos, pasos y precondiciones

Validación contra código fuente — obligatoria antes de documentar

El ATP se escribió ANTES de que el código existiera. Grep a data-testid=, route handlers, rutas de API y formatos de texto; toda divergencia va a una sección Refinement Notes del TC. Saltarse este paso es la causa nº1 de tests automatizados inválidos después.

Lecturas detalladas SIEMPRE por el script de sync (acli view devuelve null en custom fields). Discrepancias típicas: una API asumida que en realidad es SSR/DB directa; "based on N reviews" vs el real "(N reviews)"; IDs hardcodeados vs patrón de variable.

fase 1 — analyze · las dos reglas portantes

Una (Precondición + Acción) = un TC

✓ MISMO TC — 5 aserciones

  • pre credenciales válidas, acción enviar login
  • redirección + token + perfil vía /auth/me + cookie + bienvenida
  • todas las validaciones viven en UN TC — dividir «panel A / B / C» es el antipatrón más diagnosticado

✓ TC DISTINTOS — la precondición difiere

  • credenciales válidas → éxito (TC-A)
  • cuenta bloqueada → 423 (TC-B)
  • credenciales inválidas → 401 (TC-C)
Cross-cutting (NO es un TC)Se valida…
Responsive · XSS · performance · a11y · contrato de API · «manejo de errores» genéricodentro de cada test (viewport móvil, datos con caracteres especiales, aserciones de tiempo/a11y/schema) o en una suite a nivel de app
Deferral ≠ omissionmover un rasgo transversal fuera del alcance es un handoff explícito: nombra la suite receptora o registra el gap (TC Deferred o nota en el ATR) — nunca se evapora
Un escenario real es un flujo de usuario: objetivo de negocio claro, precondición + acción concretas, resultado verificable. Los rasgos transversales se prueban DENTRO de otros tests o en suites app-level — promover "prevención XSS" a TC propio es error clásico.

fase 1 — analyze · doctrina de diseño (test-design-doctrine.md)

Un AC → N candidatos, elegidos por la forma del AC

Disparador en el ACTécnica (obligatoria)Qué produce
Cualquier input (siempre)Equivalence Partitioningmismo output → UN TC parametrizado (Scenario Outline + Examples); output distinto → TCs separados
Rango / límite / longitud / ventana de fechaBoundary Value Analysismin-1 · min · min+1 … max-1 · max · max+1 + cero / vacío / null / overflow
Campo de estado / ciclo de vidaState-Transitionun TC por transición válida + por transición inválida
2+ condiciones que interactúanDecision Tableenumera combos, colapsa equivalentes, un TC por regla sobreviviente
3+ factores combinablesPairwiseconjunto all-pairs (registra la reducción)

Candidatos ≠ items del TMS

Derivar amplio es gratis; persistir está gateado por ROI (Fase 2). Colapsar un AC a un solo TC exige justificación escrita «trivially atomic». El mapa AC→TC es el piso, no la cobertura.

Improvement bridge

Un test-beyond-AC expone un gap porque el AC estaba infra-especificado → el artefacto correcto es un issue Improvement (doctrina de defect-management) — NO un TC de regression ni ensanchar los ACs de la Story después del hecho.

EP sin BVA pierde el off-by-one. La regla de identidad (pre+acción) solo fusiona DENTRO de una partición — nunca a través de particiones, límites o estados. Canon: agentic-qa-core/references/test-design-doctrine.md.

fase 2 — prioritize · el gate que nunca se salta

Tres filtros, luego la fórmula

F1

¿Protege contra regressions futuras?

Typo puntual en un área estable → No → Deferred.

F2

¿Bugs previos en esta área?

Sí → prioriza aun con ROI moderado: «falló una vez, puede fallar de nuevo».

F3

¿Nivel de app o de feature?

XSS / a11y / perf / responsive → suites APP-level → Deferred desde este alcance.

Falla cualquier filtro → Deferred

Los tres filtros matan a la mayoría antes de hacer aritmética.

ROI = (Frequency × Impact × Stability) ───────────────────────────────── (Effort × Dependencies) Component Value = ROI × (1 + 0.2 × N) N = flujos E2E que reutilizan el TC
Factor (1-5)15
Frequencyanualcada PR / commit
Impactcosméticoingresos / core
Stabilitymuy volátilmeses sin cambios
Effort (÷)trivialsemana+
Dependencies (÷)ningunaexternos complejos
Effort y Dependencies son DIVISORES: un "flujo crítico" caro y acoplado DEBE puntuar bajo — es la fórmula funcionando, no un bug. Component Value rescata átomos reutilizables: authenticateSuccessfully con ROI 1.5 reutilizado en 5 flujos → 1.5 × 2.0 = 3.0 → Candidate.

fase 2 — prioritize · exactamente uno de tres, no hay cuarto

Candidate · Manual · Deferred — la modalidad cambia el verbo

VeredictoLo disparaA dónde vaFase 3: jira-nativeFase 3: jira-xray
CandidateROI > 3.0 · O 1.5-3.0 + bug previo · O happy path críticoalimenta /test-automationse CREA el work item Test (solo C + M)el Test ya existe (Stage 1 de sprint-testing) → se PROMUEVE al Regression Test Plan + Test Set, label regression-candidate, y se ENRIQUECE (Gherkin rico, parametrización, edge cases)
ManualROI 0.5-1.5 y no automatizable, o solo-manual explícitosuite de regression manual (terminal)
DeferredROI < 0.5 · O falló un filtro · O validación one-timefuera de regression (terminal, revisitable)NO se crea — queda solo en el reporteel Test de sprint queda sin promover — no se borra

Tres capas, tres conteos — la forma saludable

analizados 80 → documentados 12 → automatizados 8. Un test entra al repositorio porque será re-ejecutado, nunca para alcanzar un conteo. Si >50% termina Candidate/Manual → reaplica los filtros con más rigor: la mayoría debe ser Deferred.

El veredicto (aritmética) es idéntico en ambas modalidades; lo que cambia es el verbo de la Fase 3: CREAR (native) vs PROMOVER + ENRIQUECER (xray). Deferred nunca es un borrado. Anti-patrón D4: nunca saltarse el scoring de ROI.

fase 3 — document · preflight de contenedores

Epic · Test Set · Test Plan — tres cosas distintas

Regression Epic

= el epic de proceso «QA Test Repository». Resolver found-or-created por JQL (type = Epic AND summary ~ "QA Test Repository"); si falta, pregunta antes de crear y cachea la key en .agents/project.yaml. Todo TC documentado se parenta aquí — nunca a un epic de producto.

paraguas del repositorio

Test Set solo xray

Agrupación por feature, 1:1 con el Epic: Test Set: <EPIC_KEY> <feature>. Se crea lazy en esta fase solo si una promoción lo necesita — preguntando primero. Solo entran los Tests promovidos (C/M). Native: no existe → label de feature/Epic (epic-<KEY>).

feature

Test Plan

Alcance de ejecución / regression — el conjunto de Tests que corre para un release o ciclo. El ATP en jira-xray ES un issue Test Plan (parent: epic «QA Master Test Plan»).

ejecución

Modelo de tres ejes (defect-management-doctrine.md)

Parent = bucket de proceso QA (Test → «QA Test Repository» · ATP → «QA Master Test Plan» · ATR → «QA Test Artifacts») · issue-link = la Story origen · components = el módulo de producto afectado. Tres ejes separados — el parent nunca lleva la traza de producto.

La gente fusiona estos contenedores rutinariamente. Epic = repositorio completo; Test Set = los Tests de regression de UNA feature; Test Plan = alcance de ejecución. En jira-native no hay entidad Test Set: la misma agrupación se logra con el Regression Epic + un label.

fase 3 — document · el orden no es opcional

ATP → ATR → enlazar → recién entonces cada TC

1 Create ATP → link a la US («is tested by») 2 Create ATR → link a la US («is tested by») 3 Update ATP → link al ATR (plan/results, 1:1) 4 por cada TC: Create TC → «is designed by» ATP → «is executed by» ATR xray: el TC NO se enlaza a la Story (agrega vía ATP/ATR; evita ruido) native: Story↔TC es el edge disponible 5 por cada TC PROMOVIDO: xray → Test Set + Regression Test Plan + label regression-candidate native→ label de feature/Epic
EntidadNaming
ATPATP: {STORY-KEY}: {story title}
ATRATR: {STORY-KEY}: Story Testing
TC{US_ID}: TC#: should <outcome> [when <condition>] [given <pre>] — prefijo SIEMPRE el US key, en toda modalidad
AgrupaciónValidate <feature> reservado para el nivel de grupo (Test Set / describe())

Crear TCs primero = huérfanos

Si el TC nace antes del ATP/ATR quedan referencias rotas y /fix-traceability es la única salida. D7: un ATR nunca se enlaza a dos ATPs (1:1). Rechaza títulos «Login test», «Login - error», «TC1: Test form».

El modelo de trazabilidad jira-xray: la Story se enlaza SOLO a su ATP y ATR; los TCs agregan a través de ellos (el ATP "diseña" los TCs, el ATR los "ejecuta"). La cobertura AC→TC se registra en la matriz del ATP, no como issuelink Story↔TC. En native, sin issue ATP/ATR de por medio, Story↔TC sí es el edge de trazabilidad.

fase 3 — document · el verbo por modalidad, TC por TC

Crear los TCs — matriz por modalidad

StackTest manualCandidate (automatizable)
Xray on JiraDos pasos: (1) Create Test type=Manual SIN steps inline — Xray Cloud los descarta en silencio — (2) Add Test Step uno a uno (verifica con Get Test), luego Update Issue con la Description completaCreate Test type=Cucumber gherkin=… + Update Issue con el template de Description
Jira nativeCreate Issue issueType=Test, Description = tabla de pasosCreate Issue issueType=Test, Description = Gherkin + template completo

La regla de las dos llamadas de Xray

Una Create Test (registra en Xray) + una Update Issue (pega la Description). Saltarse la segunda deja un TC sin documentación legible en Jira — el fallo silencioso más común.

Anti-patrones D1 · D6

Nunca escribas ADF JSON a mano (usa la ruta md→ADF de /acli). Nunca fabriques customfield_NNNNN: corre bun run jira:sync-fields --force y resuelve por {{jira.<slug>}}.

Description siempre con el template completo: Related Story · Priority · ROI · Prior bugs · Test Design (gherkin/steps) · Variables · Implementation Code · Architecture · Test IDs · Preconditions · Expected Results.

La dispatch de esta fase es la única paralela: N > 10 TCs → subagentes en chunks de 5-10 (ver slide de orquestación). Cada subagente carga /xray-cli o /acli según modalidad y corre este flujo serial para su chunk.

fase 3 — document · el artefacto que viaja a automatización

Gherkin de alta calidad: variables, nunca datos duros

TC — UPEX-101.feature
@critical @regression @automation-candidate @UPEX-101
Scenario Outline: should show auth error when password is incorrect
  """  Bugs covered: UPEX-202 · Related Story: UPEX-101 · ROI: 4.0  """
  # === PRECONDITIONS ===
  Given a verified user exists with {email}
  # === ACTION ===
  When the user submits login with {email} and {wrong_password}
  # === VALIDATIONS ===
  Then a 401 error is returned with "<message>"
  # === EQUIVALENT PARTITIONS ===
  Examples: Wrong password | Empty password | Unknown email
  • Variables, nunca hardcode. {mentor_id}, no 550e8400-…. Tabla de Variables con cómo obtener cada valor en runtime.
  • Tags siempre: prioridad (@critical…@low) + suite (@regression, @smoke si ruta crítica) + @automation-candidate + @{US_ID}.
  • Comentarios estructurados — PRECONDITIONS / ACTION / VALIDATIONS / EQUIVALENT PARTITIONS.
  • Docstring con metadata: story, bugs cubiertos, ROI.
  • Parametriza por partición: variantes de mismo comportamiento → UN Test con Examples, no N Tests.
Los datos de staging cambian con los años: un UUID o email literal pudre el test. Cada variable lleva su query de obtención ({email} → SELECT email FROM users WHERE active=true LIMIT 1). Este Gherkin es exactamente lo que /test-automation consumirá.

fase 3 — document · workflow del TC y cierre limpio

Cómo un TC recorre su vida — sin saltarse estados

Draft ──start_design──▶ In Design ──ready_to_run──▶ Ready ──┬── for_manual ─────────────────▶ Manual (terminal) └── automation_review_from_ready ▶ In Review ──approve_to_automate──▶ Candidate → /test-automation
Dos campos independientes: Test Status (workflow — dónde está en su vida) vs Execution Status (la última run). "Candidate" con última run FAIL es una combinación válida. La coverage matrix queda en .context/reports/ como entregable comprometido.

quién hace qué — centro de comando + subagentes

El hilo principal decide; los subagentes escriben

Inline (orquestador)

Fases -1, 0, 1 y 2: resume, modalidad, análisis y veredictos viven en el hilo principal — planificar y decidir no se delega.

criterio

Paralelo (Fase 3, N > 10)

Chunks de ~5-10 TCs por subagente, cap = 10 subagentes (Jira/Xray throttlean ~10 writes/seg → 429s). Cada subagente carga /xray-cli o /acli. N ≤ 10 → inline.

fan-out

Error protocol

Fallo de subagente → STOP, reporta el estado parcial (qué TCs aterrizaron, cuáles no, con keys/errores) y ofrece retry / skip / abort. Sin auto-fix, sin rollback.

seguridad
NecesidadHerramientaNota
Lecturas detalladas (custom fields, ACs, ATP/ATR, comments)bun run jira:sync-issues get <KEY> --include-commentsleer el .md sincronizado — acli view devuelve null en custom fields
Escrituras TMS (Test / Plan / Execution / link / transición)/xray-cli (jira-xray) · /acli (jira-native + Jira genérico)cargar el skill ANTES de invocar el binario
IDs de campos / workflowsbun run jira:sync-fields + {{jira.<slug>}}anti-patrón D6
Validación de código fuenteGrep / Read sobre el reposin entorno vivo — solo lectura de código
La división es deliberada: el criterio queda en el centro de comando; las escrituras crudas de API se reparten con tope de concurrencia. El enlazado de trazabilidad y la matriz de cobertura corren inline al final porque necesitan el estado agregado de todo lo creado.

todo el mapa, en una invocación bug-driven

Una corrida de documentación, de punta a punta

claude-code
> /test-documentation — turn closed bug UPEX-202 into a regression test

[Preflight] acli OK (bun run jira:check) · modalidad resoluble → GREEN
[Fase -1]   Sin sesión previa para UPEX-202 — empezando de cero.
[Fase 0]    Modalidad: jira-native (sin issue types de Xray). Sticky en plan.md.
[Alcance]   bug-driven · plan.md escrito en .session/test-documentation/UPEX-202/
[Fase 1]    jira:sync-issues get UPEX-202 + Story UPEX-101 (--include-comments).
            Grep: data-testid="login-error" confirmado · ruta /api/auth/login.
[Fase 2]    Filtro F2: bug previo = SÍ. ROI = (4×5×4)/(2×1) = 40 → CANDIDATE.
            Regla de oro: sin Test fallido de origen → CREAR uno.
[Fase 3]    Regression Epic «QA Test Repository» (UPEX-9) encontrado.
            Plan: crear UPEX-540 «UPEX-101: TC2: should show auth error when
            password is incorrect» · links is tested by → UPEX-101, tests → UPEX-202
            · labels regression, automation-candidate, epic-UPEX-3. ¿Procedo?
> y
  Hecho. 1 Candidate · transiciones Draft→…→Candidate · caché test-cases/ escrito.
Cada regla del deck es visible aquí: preflight, resume, gate de modalidad, plan-first, lectura por sync script, grep de código, regla del bug previo, aritmética de ROI, regla de oro reuse-or-create, naming, parenting al Regression Epic, enlazado, labels y caché local — todo detrás de una confirmación antes de escribir.

cierre — dónde encaja y cómo se invoca

Deriva amplio · documenta lo repetible · automatiza los pocos

Cómo invocarlo

/test-documentation o frases naturales: «document tests», «ROI analysis», «which tests to automate», «Candidate vs Manual», «turn this bug into a regression test», «stage 4».

Handoffs en el pipeline

Entra desde /sprint-testing (Story QA Approved, bug cerrado). Sale hacia /test-automation, que re-alcanza los Candidates: module → Macro · ticket → Medium · bug → Micro (ad-hoc entra donde encaje). Manual y Deferred son terminales.

Artefactos que deja

TCs enlazados US↔ATP↔ATR↔TC en el TMS · Test Set / labels de feature · coverage matrix en .context/reports/ · un md por TC en test-cases/ · sesión archivada en .session/.archive/.

Las tres reglas para llevar

1. Por defecto, Deferred — 3 filtros + ROI = (F×I×S)/(E×D). 2. Una (precondición + acción) = un TC; los rasgos transversales viven dentro de los tests. 3. ATP → ATR → enlazar → TC, y un bug importante siempre termina con un Test.

Cierre: Stage 4 es el puente entre la QA manual (Stages 1-3) y la automatización (Stage 5). La IA acelera el oficio — el criterio y las confirmaciones siguen siendo del humano.
← → navegar · O resumen · S presentador · N notas · F pantalla completa