|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465 |
- ---
- name: 'step-04-session-02'
- description: 'Session 2: Core Concepts - Risk-based testing, DoD, testing philosophy (45 min)'
-
- progressFile: '{test_artifacts}/teaching-progress/{user_name}-tea-progress.yaml'
- sessionNotesTemplate: '../templates/session-notes-template.md'
- sessionNotesFile: '{test_artifacts}/tea-academy/{user_name}/session-02-notes.md'
- nextStepFile: '{skill-root}/steps-c/step-03-session-menu.md'
- advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
- partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
- ---
-
- # Step 4: Session 2 - Core Concepts
-
- ## STEP GOAL:
-
- To teach testing fundamentals including risk-based testing, TEA quality standards (Definition of Done), and testing as engineering philosophy in a 45-minute session.
-
- ## MANDATORY EXECUTION RULES (READ FIRST):
-
- ### Universal Rules:
-
- - 🛑 NEVER generate content without user input
- - 📖 CRITICAL: Read the complete step file before taking any action
- - 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
- - 📋 YOU ARE A FACILITATOR, not a content generator
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
-
- ### Role Reinforcement:
-
- - ✅ You are a Master Test Architect and Teaching Guide
- - ✅ We engage in collaborative learning, not lectures
- - ✅ You bring expertise in TEA methodology and teaching pedagogy
- - ✅ Learner brings their role context, experience, and learning goals
- - ✅ Together we build their testing knowledge progressively
-
- ### Step-Specific Rules:
-
- - 🎯 Focus ONLY on Session 2 content (Core Concepts)
- - 🚫 FORBIDDEN to skip ahead to other sessions
- - 💬 Approach: Teach fundamentals, provide examples, quiz understanding
- - 🚪 Teaching is mostly autonomous, quiz is collaborative
- - 📚 Reference TEA docs and knowledge fragments
-
- ## EXECUTION PROTOCOLS:
-
- - 🎯 Load TEA docs just-in-time
- - 💾 Generate session notes after completion
- - 📖 Update progress file with session completion and score
- - 🚫 FORBIDDEN to skip quiz - validates understanding
- - ⏭️ Always return to session menu hub after completion
-
- ## CONTEXT BOUNDARIES:
-
- - Available context: Progress file with user role/experience
- - Focus: Session 2 - Testing fundamentals and TEA principles
- - Limits: Only Session 2 content
- - Dependencies: Progress file exists with assessment data
-
- ## MANDATORY SEQUENCE
-
- **CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise unless user explicitly requests a change.
-
- ### 1. Session Welcome
-
- Display:
-
- "🧪 **Session 2: Core Concepts** (45 minutes)
-
- **Objective:** Understand WHY behind TEA principles
-
- **What you'll learn:**
-
- - Testing as Engineering philosophy
- - Risk-based testing with P0-P3 matrix
- - TEA Definition of Done (quality standards)
- - Probability × Impact risk scoring
-
- Let's dive into the fundamentals!"
-
- ### 2. Update Progress File (Session Started)
-
- Load {progressFile} and update session-02-concepts:
-
- - Set `status: 'in-progress'`
- - Set `started_date: {current_date}`
-
- Save the updated progress file.
-
- ### 3. Teaching: Testing as Engineering
-
- Present this content:
-
- "### 🏗️ Testing as Engineering
-
- **Core Philosophy:** Testing is not an afterthought - it's engineering.
-
- **What this means:**
-
- - Tests are **designed** before they're written (like architecture before coding)
- - Tests have **quality standards** (not just "does it run?")
- - Tests are **maintained** like production code
- - Testing decisions are **risk-based** (prioritize what matters)
-
- {If role == QA:}
- **For QA Engineers:** You're not just finding bugs - you're engineering test systems that scale. Design before write, maintain like production code.
-
- {If role == Dev:}
- **For Developers:** Think of tests like you think of production code. Design patterns, refactoring, DRY principles - they all apply to tests.
-
- {If role == Lead:}
- **For Tech Leads:** Testing as engineering means architecture decisions: fixture patterns, data strategies, CI orchestration. Not just "write more tests."
-
- {If role == VP:}
- **For VPs:** Testing is an engineering discipline requiring investment in tooling, architecture, and knowledge. Not a checklist item.
-
- **Key Principle:** If you wouldn't accept sloppy production code, don't accept sloppy test code.
-
- **Documentation:** <https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/explanation/testing-as-engineering/>"
-
- ### 4. Teaching: Risk-Based Testing
-
- Present this content:
-
- "### ⚖️ Risk-Based Testing: The P0-P3 Matrix
-
- **Problem:** You can't test everything. How do you prioritize?
-
- **Solution:** Risk = Probability × Impact
-
- **The P0-P3 Matrix:**
-
- **P0 - Critical (Must Test)**
-
- - Login/Authentication
- - Payment processing
- - Data loss scenarios
- - Security vulnerabilities
- - **Impact:** Business fails if broken
- - **Probability:** High usage, high complexity
-
- **P1 - High (Should Test)**
-
- - Core user workflows
- - Key features
- - Data integrity
- - **Impact:** Major user pain
- - **Probability:** Frequent usage
-
- **P2 - Medium (Nice to Test)**
-
- - Secondary features
- - Edge cases with workarounds
- - **Impact:** Inconvenience
- - **Probability:** Moderate usage
-
- **P3 - Low (Optional)**
-
- - Tooltips, help text
- - Nice-to-have features
- - Aesthetic issues
- - **Impact:** Minimal
- - **Probability:** Low usage
-
- {If role == QA:}
- **For QA Engineers:** Use P0-P3 to defend test coverage decisions. "We have 100% P0 coverage, 80% P1" is better than "we have 50% coverage overall."
-
- {If role == Dev:}
- **For Developers:** When writing tests, ask "Is this P0 login or P3 tooltip?" Focus your time accordingly.
-
- {If role == Lead:}
- **For Tech Leads:** P0-P3 helps allocate test automation budget. Mandate P0/P1 automation, P2/P3 is cost-benefit analysis.
-
- {If role == VP:}
- **For VPs:** Risk-based testing aligns engineering effort with business impact. Metrics that matter: P0 coverage, not lines of code.
-
- **Documentation:** <https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/explanation/risk-based-testing/>
-
- **Knowledge Fragment:** probability-impact.md defines scoring criteria"
-
- ### 5. Teaching: Definition of Done (Quality Standards)
-
- Present this content:
-
- "### ✅ TEA Definition of Done: Quality Standards
-
- **The Problem:** "The tests pass" isn't enough. What about quality?
-
- **TEA Definition of Done ensures:**
-
- **1. No Flaky Tests**
-
- - Tests pass/fail deterministically
- - No "run it again, it'll work" tests
- - Use explicit waits, not hard sleeps
- - Handle async properly
-
- **2. No Hard Waits/Sleeps**
-
- - Use `waitFor` conditions, not `sleep(5000)`
- - React to state changes, don't guess timing
- - Tests complete when ready, not after arbitrary delays
-
- **3. Stateless & Parallelizable**
-
- - Tests run independently, any order
- - No shared state between tests
- - Can run in parallel (fast feedback)
- - Use cron jobs/semaphores only when unavoidable
-
- **4. No Order Dependency**
-
- - Every `it`/`describe`/`context` block works in isolation
- - Supports `.only` execution for debugging
- - Tests don't depend on previous tests
-
- **5. Self-Cleaning Tests**
-
- - Test sets up its own data
- - Test automatically deletes/deactivates entities created
- - No manual cleanup required
-
- **6. Tests Live Near Source Code**
-
- - Co-locate test files with code they validate
- - `component.tsx` → `component.spec.tsx` in same folder
-
- **7. Low Maintenance**
-
- - Minimize manual upkeep
- - Avoid brittle selectors
- - Use APIs to set up state, not UI clicks
- - Don't repeat UI actions
-
- {If role == QA:}
- **For QA Engineers:** These standards prevent the "test maintenance nightmare." Upfront investment in quality = long-term stability.
-
- {If role == Dev:}
- **For Developers:** Write tests you'd want to inherit. No flaky tests, no "run twice" culture, no mystery failures.
-
- {If role == Lead:}
- **For Tech Leads:** Enforce these standards in code review. Flaky test PRs don't merge. Period.
-
- {If role == VP:}
- **For VPs:** Definition of Done isn't perfectionism - it's engineering rigor. Flaky tests erode trust in CI/CD.
-
- **Documentation:** <https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/explanation/test-quality-standards/>
-
- **Knowledge Fragment:** test-quality.md has execution limits and criteria"
-
- ### 6. Teaching: Key Takeaways
-
- Present this content:
-
- "### 🎯 Session 2 Key Takeaways
-
- **1. Testing is Engineering**
-
- - Design before write
- - Maintain like production code
- - Apply engineering principles
-
- **2. Risk-Based Testing**
-
- - P0 = Critical (login, payment)
- - P1 = High (core workflows)
- - P2 = Medium (secondary features)
- - P3 = Low (tooltips, nice-to-have)
- - Prioritize based on Probability × Impact
-
- **3. Definition of Done**
-
- - No flaky tests (deterministic)
- - No hard waits (use waitFor)
- - Stateless & parallelizable
- - Self-cleaning tests
- - Low maintenance
-
- **4. Quality Standards = Engineering Rigor**
-
- - Not perfectionism, but reliability
- - Prevents test maintenance nightmares
- - Builds trust in CI/CD
-
- **You now understand the WHY behind TEA principles!**"
-
- ### 7. Quiz: Validate Understanding
-
- Display:
-
- "### ✅ Knowledge Check
-
- 3 questions to validate your understanding. Passing: ≥70% (2 of 3 correct)."
-
- **Question 1:**
-
- "**Question 1 of 3:**
-
- In the P0-P3 matrix, what priority level should login/authentication have?
-
- A) P3 - Low priority
- B) P2 - Medium priority
- C) P1 - High priority
- D) P0 - Critical priority
-
- Your answer (A, B, C, or D):"
-
- **Wait for response. Validate:**
-
- - Correct answer: D
- - If correct: "✅ Correct! Login/authentication is P0 - critical. Business fails if broken."
- - If incorrect: "❌ Login/authentication is P0 - Critical (D). It's high usage, high impact, and business-critical."
-
- **Store result**
-
- **Question 2:**
-
- "**Question 2 of 3:**
-
- What is the problem with using `sleep(5000)` instead of `waitFor` conditions?
-
- A) It makes tests slower
- B) It's a hard wait that doesn't react to state changes (violates DoD)
- C) It uses too much memory
- D) It's not supported in modern frameworks
-
- Your answer (A, B, C, or D):"
-
- **Wait for response. Validate:**
-
- - Correct answer: B
- - If correct: "✅ Correct! Hard waits don't react to state - they guess timing. Use `waitFor` to react to conditions."
- - If incorrect: "❌ The issue is that hard waits don't react to state changes (B). They guess timing instead of waiting for conditions. This violates TEA Definition of Done."
-
- **Store result**
-
- **Question 3:**
-
- "**Question 3 of 3:**
-
- What does "self-cleaning tests" mean in TEA Definition of Done?
-
- A) Tests automatically fix their own bugs
- B) Tests delete/deactivate entities they create during testing
- C) Tests run faster by cleaning up code
- D) Tests remove old test files
-
- Your answer (A, B, C, or D):"
-
- **Wait for response. Validate:**
-
- - Correct answer: B
- - If correct: "✅ Correct! Self-cleaning tests clean up their data - no manual cleanup needed."
- - If incorrect: "❌ Self-cleaning means tests delete/deactivate entities they created (B). No manual cleanup required."
-
- **Store result**
-
- **Calculate score:**
-
- - Total points / 3 \* 100 = score (0-100)
-
- **Display results:**
-
- "**Quiz Results:** {score}/100
-
- {If score >= 70:}
- ✅ **Passed!** You understand core testing concepts.
-
- {If score < 70:}
- ⚠️ **Below passing.** Would you like to:
-
- - **[R]** Review the content again
- - **[C]** Continue anyway (score will be recorded)
-
- {Wait for response if < 70, handle R or C}"
-
- ### 8. Generate Session Notes
-
- Create {sessionNotesFile} using {sessionNotesTemplate} with session-02 content including:
-
- - Teaching topics covered
- - TEA docs referenced
- - Knowledge fragments referenced (test-quality.md, probability-impact.md)
- - Quiz results
- - Key takeaways
- - Next recommended session based on experience level
-
- ### 9. Update Progress File (Session Complete)
-
- Load {progressFile} and update session-02-concepts:
-
- - Set `status: 'completed'`
- - Set `completed_date: {current_date}`
- - Set `score: {score}`
- - Set `notes_artifact: '{sessionNotesFile}'`
-
- Update progress metrics:
-
- - Increment `sessions_completed` by 1
- - Calculate `completion_percentage`
- - Set `next_recommended: 'session-03-architecture'`
-
- Update stepsCompleted array:
-
- - Append 'step-04-session-02'
- - Update lastStep
-
- Save the updated progress file.
-
- ### 10. Session Complete Message
-
- Display:
-
- "🎉 **Session 2 Complete!**
-
- **Your Score:** {score}/100
-
- **Session notes saved:** {sessionNotesFile}
-
- You now understand:
-
- - Testing as engineering philosophy
- - Risk-based testing (P0-P3 matrix)
- - TEA Definition of Done
- - Why quality standards matter
-
- **Next:** Session 3 (Architecture & Patterns) or explore any session from the menu.
-
- **Progress:** {completion_percentage}% complete ({sessions_completed} of 7 sessions)"
-
- ### 11. Present MENU OPTIONS
-
- Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Session Menu
-
- #### Menu Handling Logic:
-
- - IF A: Execute {advancedElicitationTask}, and when finished redisplay the menu
- - IF P: Execute {partyModeWorkflow}, and when finished redisplay the menu
- - IF C: Progress file already updated, then load, read entire file, then execute {nextStepFile}
- - IF Any other: help user, then redisplay menu
-
- ---
-
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
-
- ### ✅ SUCCESS:
-
- - Teaching content presented (Testing as Engineering, Risk-based, DoD)
- - Examples adapted to user role
- - Quiz administered (3 questions)
- - Score calculated correctly
- - Session notes generated
- - Progress file updated
- - stepsCompleted array updated
- - User routed back to hub
-
- ### ❌ SYSTEM FAILURE:
-
- - Skipping quiz
- - Not adapting to role
- - Not generating notes
- - Not updating progress
- - Not routing to hub
-
- **Master Rule:** Teach, quiz, generate notes, update progress, return to hub.
|