agentic-team-templates 0.8.3 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,726 @@
1
+ # QA Engineering Development Guide
2
+
3
+ Principal-level guidelines for building world-class quality assurance programs that enable rapid, confident software delivery.
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ This guide applies to:
10
+
11
+ - Test strategy and planning
12
+ - Test case design and execution
13
+ - Test automation architecture
14
+ - Quality metrics and reporting
15
+ - Release quality gates
16
+ - QA process governance
17
+ - Cross-functional quality collaboration
18
+
19
+ ### Key Principles
20
+
21
+ 1. **Quality is Everyone's Responsibility** - QA enables quality; the whole team owns it
22
+ 2. **Shift Left** - Find defects early when they're cheapest to fix
23
+ 3. **Risk-Based Testing** - Focus effort where failures cost the most
24
+ 4. **Automation as Accelerator** - Automate the repeatable; humans do the creative
25
+ 5. **Continuous Improvement** - Measure, learn, adapt
26
+
27
+ ### Testing Pyramid
28
+
29
+ ```text
30
+ ┌─────────────┐
31
+ │ E2E │ ~10% - Critical user journeys
32
+ │ (Manual │ Slow, expensive, high confidence
33
+ │ + Automated)│
34
+ ├─────────────┤
35
+ │ │
36
+ │ Integration │ ~30% - Component interactions
37
+ │ │ Medium speed, good confidence
38
+ ├─────────────┤
39
+ │ │
40
+ │ Unit │ ~60% - Individual functions
41
+ │ │ Fast, cheap, immediate feedback
42
+ └─────────────┘
43
+ ```
44
+
45
+ ### Technology Stack
46
+
47
+ | Layer | Tools |
48
+ |-------|-------|
49
+ | Unit Testing | Jest, Vitest, pytest, JUnit, Go test |
50
+ | Integration Testing | Supertest, pytest, TestContainers |
51
+ | E2E Testing | Playwright, Cypress, Selenium |
52
+ | API Testing | Postman, REST Assured, k6 |
53
+ | Performance Testing | k6, Gatling, JMeter, Locust |
54
+ | Security Testing | OWASP ZAP, Burp Suite, Snyk |
55
+ | Visual Testing | Percy, Chromatic, Applitools |
56
+ | Test Management | TestRail, Zephyr, qTest |
57
+
58
+ ---
59
+
60
+ ## Test Strategy
61
+
62
+ ### Strategy Document Template
63
+
64
+ ```markdown
65
+ # Test Strategy: [Project/Product Name]
66
+
67
+ ## Scope
68
+
69
+ ### In Scope
70
+ - [Feature/Component 1]
71
+ - [Feature/Component 2]
72
+
73
+ ### Out of Scope
74
+ - [Explicitly excluded items]
75
+
76
+ ## Risk Assessment
77
+
78
+ | Risk Area | Impact | Likelihood | Priority | Testing Focus |
79
+ |-----------|--------|------------|----------|---------------|
80
+ | Payment processing | Critical | Medium | P0 | Extensive |
81
+ | User authentication | Critical | Low | P1 | Comprehensive |
82
+ | Reporting | Medium | Medium | P2 | Standard |
83
+ | Admin settings | Low | Low | P3 | Basic |
84
+
85
+ ## Test Levels
86
+
87
+ | Level | Coverage | Automation | Responsibility |
88
+ |-------|----------|------------|----------------|
89
+ | Unit | 80%+ | 100% | Developers |
90
+ | Integration | Core flows | 90%+ | Dev + QA |
91
+ | E2E | Critical paths | 70%+ | QA |
92
+ | Exploratory | Risk areas | 0% | QA |
93
+
94
+ ## Environment Strategy
95
+
96
+ | Environment | Purpose | Data | Refresh |
97
+ |-------------|---------|------|---------|
98
+ | Local | Development | Mocked | On demand |
99
+ | Dev | Integration | Synthetic | Daily |
100
+ | Staging | Pre-prod validation | Sanitized prod | Weekly |
101
+ | Production | Smoke tests only | Live | N/A |
102
+
103
+ ## Entry/Exit Criteria
104
+
105
+ ### Entry Criteria (Ready for QA)
106
+ - [ ] Code complete and merged
107
+ - [ ] Unit tests passing (80%+ coverage)
108
+ - [ ] Code review approved
109
+ - [ ] Deployment to test environment successful
110
+ - [ ] Test data available
111
+
112
+ ### Exit Criteria (Ready for Release)
113
+ - [ ] All P0/P1 test cases passed
114
+ - [ ] No open P0/P1 defects
115
+ - [ ] Regression suite passing
116
+ - [ ] Performance benchmarks met
117
+ - [ ] Security scan clean
118
+ - [ ] Stakeholder sign-off
119
+
120
+ ## Defect Management
121
+
122
+ | Severity | Definition | Response Time | Resolution |
123
+ |----------|------------|---------------|------------|
124
+ | P0 | System down, data loss | Immediate | Same day |
125
+ | P1 | Major feature broken | < 4 hours | 24-48 hours |
126
+ | P2 | Feature impaired | < 24 hours | Current sprint |
127
+ | P3 | Minor issue | < 48 hours | Next sprint |
128
+ | P4 | Cosmetic | Best effort | Backlog |
129
+
130
+ ## Reporting
131
+
132
+ | Report | Audience | Frequency |
133
+ |--------|----------|-----------|
134
+ | Test Execution | Team | Daily |
135
+ | Quality Dashboard | Leadership | Weekly |
136
+ | Release Readiness | Stakeholders | Per release |
137
+ | Defect Trends | Team | Sprint retrospective |
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Test Design
143
+
144
+ ### Test Case Structure
145
+
146
+ ```markdown
147
+ ## Test Case: [TC-XXX]
148
+
149
+ **Title**: [Clear, concise description]
150
+
151
+ **Priority**: P0 | P1 | P2 | P3
152
+
153
+ **Type**: Functional | Regression | Smoke | Integration | E2E
154
+
155
+ **Preconditions**:
156
+ - [Required state before test]
157
+ - [Required data setup]
158
+
159
+ **Test Steps**:
160
+ | Step | Action | Expected Result |
161
+ |------|--------|-----------------|
162
+ | 1 | [Action] | [Expected outcome] |
163
+ | 2 | [Action] | [Expected outcome] |
164
+ | 3 | [Action] | [Expected outcome] |
165
+
166
+ **Postconditions**:
167
+ - [State after test]
168
+ - [Cleanup required]
169
+
170
+ **Test Data**:
171
+ | Variable | Value |
172
+ |----------|-------|
173
+ | [Input 1] | [Value] |
174
+ | [Input 2] | [Value] |
175
+
176
+ **Traceability**: [Requirement ID / User Story]
177
+ ```
178
+
179
+ ### Equivalence Partitioning
180
+
181
+ Divide inputs into groups that should behave the same:
182
+
183
+ ```text
184
+ Input: Age (valid range 18-120)
185
+
186
+ Partitions:
187
+ ├── Invalid: < 0 (negative)
188
+ ├── Invalid: 0-17 (underage)
189
+ ├── Valid: 18-120 (acceptable)
190
+ └── Invalid: > 120 (unrealistic)
191
+
192
+ Test Cases:
193
+ - Age = -1 → Error: Invalid age
194
+ - Age = 15 → Error: Must be 18+
195
+ - Age = 25 → Success
196
+ - Age = 150 → Error: Invalid age
197
+ ```
198
+
199
+ ### Boundary Value Analysis
200
+
201
+ Test at the edges of valid ranges:
202
+
203
+ ```text
204
+ Input: Quantity (valid range 1-100)
205
+
206
+ Boundaries:
207
+ ├── 0 → Invalid (just below minimum)
208
+ ├── 1 → Valid (minimum)
209
+ ├── 2 → Valid (just above minimum)
210
+ ├── 99 → Valid (just below maximum)
211
+ ├── 100 → Valid (maximum)
212
+ └── 101 → Invalid (just above maximum)
213
+ ```
214
+
215
+ ### State Transition Testing
216
+
217
+ ```text
218
+ Order State Machine:
219
+
220
+ [Created] ──submit──> [Pending] ──approve──> [Approved] ──ship──> [Shipped]
221
+ │ │ │
222
+ │ │──reject──> [Rejected] │
223
+ │ │ │
224
+ └──cancel──> [Cancelled] <──cancel────────────┘
225
+
226
+ Test Cases:
227
+ 1. Created → Pending (valid)
228
+ 2. Pending → Approved (valid)
229
+ 3. Pending → Rejected (valid)
230
+ 4. Created → Approved (invalid - must go through Pending)
231
+ 5. Shipped → Cancelled (invalid - too late to cancel)
232
+ ```
233
+
234
+ ### Decision Table Testing
235
+
236
+ ```text
237
+ Shipping Cost Rules:
238
+
239
+ | Condition | Rule 1 | Rule 2 | Rule 3 | Rule 4 |
240
+ |----------------------|--------|--------|--------|--------|
241
+ | Order > $50 | Y | Y | N | N |
242
+ | Prime Member | Y | N | Y | N |
243
+ | Shipping Cost | Free | Free | $5 | $10 |
244
+
245
+ Test Cases:
246
+ 1. Order $60, Prime → Free shipping
247
+ 2. Order $60, Not Prime → Free shipping
248
+ 3. Order $40, Prime → $5 shipping
249
+ 4. Order $40, Not Prime → $10 shipping
250
+ ```
251
+
252
+ ---
253
+
254
+ ## Test Automation
255
+
256
+ ### Automation Strategy
257
+
258
+ ```text
259
+ Automate:
260
+ ├── Regression tests (high frequency, stable)
261
+ ├── Smoke tests (critical path validation)
262
+ ├── Data-driven tests (many inputs, same flow)
263
+ ├── API tests (fast, reliable)
264
+ └── Performance baselines (measurable thresholds)
265
+
266
+ Keep Manual:
267
+ ├── Exploratory testing (creative, adaptive)
268
+ ├── Usability testing (human judgment)
269
+ ├── Edge cases (rare, complex scenarios)
270
+ ├── New features (still changing)
271
+ └── Visual/UX validation (subjective)
272
+ ```
273
+
274
+ ### Test Automation Pyramid
275
+
276
+ ```javascript
277
+ // Unit Test Example (Base - Most Tests)
278
+ describe('calculateDiscount', () => {
279
+ it('applies 10% discount for orders over $100', () => {
280
+ expect(calculateDiscount(150)).toBe(15);
281
+ });
282
+
283
+ it('returns 0 for orders under $100', () => {
284
+ expect(calculateDiscount(50)).toBe(0);
285
+ });
286
+
287
+ it('handles edge case at exactly $100', () => {
288
+ expect(calculateDiscount(100)).toBe(10);
289
+ });
290
+ });
291
+ ```
292
+
293
+ ```javascript
294
+ // Integration Test Example (Middle Layer)
295
+ describe('Order API', () => {
296
+ it('creates order and applies discount', async () => {
297
+ const response = await request(app)
298
+ .post('/api/orders')
299
+ .send({ items: [{ id: 1, quantity: 2, price: 75 }] })
300
+ .expect(201);
301
+
302
+ expect(response.body.subtotal).toBe(150);
303
+ expect(response.body.discount).toBe(15);
304
+ expect(response.body.total).toBe(135);
305
+ });
306
+ });
307
+ ```
308
+
309
+ ```javascript
310
+ // E2E Test Example (Top - Fewest Tests)
311
+ test('user completes checkout flow', async ({ page }) => {
312
+ await page.goto('/products');
313
+ await page.click('[data-testid="product-1"]');
314
+ await page.click('[data-testid="add-to-cart"]');
315
+ await page.click('[data-testid="checkout"]');
316
+
317
+ await page.fill('[data-testid="email"]', 'test@example.com');
318
+ await page.fill('[data-testid="card-number"]', '4111111111111111');
319
+ await page.click('[data-testid="place-order"]');
320
+
321
+ await expect(page.locator('[data-testid="confirmation"]')).toBeVisible();
322
+ });
323
+ ```
324
+
325
+ ### Page Object Pattern
326
+
327
+ ```javascript
328
+ // pages/LoginPage.js
329
+ class LoginPage {
330
+ constructor(page) {
331
+ this.page = page;
332
+ this.emailInput = page.locator('[data-testid="email"]');
333
+ this.passwordInput = page.locator('[data-testid="password"]');
334
+ this.loginButton = page.locator('[data-testid="login-button"]');
335
+ this.errorMessage = page.locator('[data-testid="error-message"]');
336
+ }
337
+
338
+ async goto() {
339
+ await this.page.goto('/login');
340
+ }
341
+
342
+ async login(email, password) {
343
+ await this.emailInput.fill(email);
344
+ await this.passwordInput.fill(password);
345
+ await this.loginButton.click();
346
+ }
347
+
348
+ async getErrorMessage() {
349
+ return this.errorMessage.textContent();
350
+ }
351
+ }
352
+
353
+ // tests/login.spec.js
354
+ test('shows error for invalid credentials', async ({ page }) => {
355
+ const loginPage = new LoginPage(page);
356
+ await loginPage.goto();
357
+ await loginPage.login('invalid@example.com', 'wrongpassword');
358
+
359
+ const error = await loginPage.getErrorMessage();
360
+ expect(error).toContain('Invalid credentials');
361
+ });
362
+ ```
363
+
364
+ ### Test Data Management
365
+
366
+ ```javascript
367
+ // fixtures/users.js
368
+ export const testUsers = {
369
+ admin: {
370
+ email: 'admin@test.com',
371
+ password: 'AdminPass123!',
372
+ role: 'admin'
373
+ },
374
+ standard: {
375
+ email: 'user@test.com',
376
+ password: 'UserPass123!',
377
+ role: 'user'
378
+ },
379
+ premium: {
380
+ email: 'premium@test.com',
381
+ password: 'PremiumPass123!',
382
+ role: 'premium'
383
+ }
384
+ };
385
+
386
+ // Factory pattern for dynamic data
387
+ export const createTestUser = (overrides = {}) => ({
388
+ email: `test-${Date.now()}@example.com`,
389
+ password: 'TestPass123!',
390
+ firstName: 'Test',
391
+ lastName: 'User',
392
+ ...overrides
393
+ });
394
+ ```
395
+
396
+ ### CI/CD Integration
397
+
398
+ ```yaml
399
+ # .github/workflows/test.yml
400
+ name: Test Suite
401
+
402
+ on: [push, pull_request]
403
+
404
+ jobs:
405
+ unit-tests:
406
+ runs-on: ubuntu-latest
407
+ steps:
408
+ - uses: actions/checkout@v4
409
+ - uses: actions/setup-node@v4
410
+ - run: npm ci
411
+ - run: npm run test:unit -- --coverage
412
+ - uses: codecov/codecov-action@v3
413
+
414
+ integration-tests:
415
+ runs-on: ubuntu-latest
416
+ services:
417
+ postgres:
418
+ image: postgres:15
419
+ env:
420
+ POSTGRES_PASSWORD: test
421
+ steps:
422
+ - uses: actions/checkout@v4
423
+ - run: npm ci
424
+ - run: npm run test:integration
425
+
426
+ e2e-tests:
427
+ runs-on: ubuntu-latest
428
+ steps:
429
+ - uses: actions/checkout@v4
430
+ - run: npm ci
431
+ - run: npx playwright install --with-deps
432
+ - run: npm run test:e2e
433
+ - uses: actions/upload-artifact@v3
434
+ if: failure()
435
+ with:
436
+ name: playwright-report
437
+ path: playwright-report/
438
+ ```
439
+
440
+ ---
441
+
442
+ ## Quality Metrics
443
+
444
+ ### Key QA Metrics
445
+
446
+ | Metric | Formula | Target | Purpose |
447
+ |--------|---------|--------|---------|
448
+ | Defect Density | Defects / KLOC | < 1.0 | Code quality indicator |
449
+ | Defect Escape Rate | Prod Defects / Total Defects | < 5% | Testing effectiveness |
450
+ | Test Coverage | Lines Covered / Total Lines | > 80% | Code coverage |
451
+ | Test Pass Rate | Passed / Total Executed | > 95% | Test health |
452
+ | MTTR | Time to fix defects | < 24h for P1 | Response efficiency |
453
+ | Automation Rate | Automated / Total Tests | > 70% | Automation maturity |
454
+
455
+ ### Defect Metrics
456
+
457
+ ```markdown
458
+ ## Defect Analysis Dashboard
459
+
460
+ ### Defect Density Trend
461
+ | Sprint | New Code (KLOC) | Defects Found | Density |
462
+ |--------|-----------------|---------------|---------|
463
+ | S1 | 5.2 | 3 | 0.58 |
464
+ | S2 | 4.8 | 2 | 0.42 |
465
+ | S3 | 6.1 | 5 | 0.82 |
466
+
467
+ ### Defect Distribution
468
+ | Severity | Open | In Progress | Resolved | Total |
469
+ |----------|------|-------------|----------|-------|
470
+ | P0 | 0 | 0 | 2 | 2 |
471
+ | P1 | 1 | 2 | 8 | 11 |
472
+ | P2 | 5 | 3 | 25 | 33 |
473
+ | P3 | 12 | 1 | 45 | 58 |
474
+
475
+ ### Root Cause Analysis
476
+ | Category | Count | Percentage |
477
+ |-----------------|-------|------------|
478
+ | Requirements | 15 | 25% |
479
+ | Design | 12 | 20% |
480
+ | Coding | 24 | 40% |
481
+ | Environment | 9 | 15% |
482
+ ```
483
+
484
+ ### Defect Removal Efficiency (DRE)
485
+
486
+ ```text
487
+ DRE = (Defects found before release) / (Total defects found) × 100
488
+
489
+ Example:
490
+ - Found in development: 80
491
+ - Found in QA: 40
492
+ - Found in production: 5
493
+ - Total: 125
494
+
495
+ DRE = (80 + 40) / 125 × 100 = 96%
496
+
497
+ Target: > 95%
498
+ ```
499
+
500
+ ### Test Execution Metrics
501
+
502
+ ```markdown
503
+ ## Test Execution Report
504
+
505
+ ### Summary
506
+ | Metric | Value |
507
+ |--------|-------|
508
+ | Total Test Cases | 450 |
509
+ | Executed | 442 |
510
+ | Passed | 425 |
511
+ | Failed | 12 |
512
+ | Blocked | 5 |
513
+ | Pass Rate | 96.2% |
514
+
515
+ ### By Test Type
516
+ | Type | Total | Passed | Failed | Pass Rate |
517
+ |------|-------|--------|--------|-----------|
518
+ | Smoke | 25 | 25 | 0 | 100% |
519
+ | Regression | 300 | 290 | 10 | 96.7% |
520
+ | New Features | 125 | 110 | 15 | 88% |
521
+
522
+ ### Automation Coverage
523
+ | Area | Manual | Automated | Auto Rate |
524
+ |------|--------|-----------|-----------|
525
+ | API | 20 | 180 | 90% |
526
+ | UI | 100 | 100 | 50% |
527
+ | Integration | 30 | 20 | 40% |
528
+ ```
529
+
530
+ ---
531
+
532
+ ## Quality Gates
533
+
534
+ ### Release Readiness Criteria
535
+
536
+ ```markdown
537
+ ## Release Quality Gate: [Version]
538
+
539
+ ### Mandatory (Must Pass)
540
+ - [ ] All P0 test cases passed
541
+ - [ ] No open P0 defects
542
+ - [ ] No open P1 defects (or approved exceptions)
543
+ - [ ] Regression suite > 95% pass rate
544
+ - [ ] Security scan: 0 critical, 0 high
545
+ - [ ] Performance: Response time < 500ms (p95)
546
+ - [ ] Code coverage > 80%
547
+
548
+ ### Conditional (Approve Exceptions)
549
+ - [ ] P2 defects: < 5 open (currently: X)
550
+ - [ ] Known issues documented
551
+ - [ ] Rollback plan tested
552
+
553
+ ### Sign-off
554
+ | Role | Name | Date | Approved |
555
+ |------|------|------|----------|
556
+ | QA Lead | | | ☐ |
557
+ | Dev Lead | | | ☐ |
558
+ | Product | | | ☐ |
559
+ ```
560
+
561
+ ### CI Quality Gates
562
+
563
+ ```yaml
564
+ # Example: SonarQube Quality Gate
565
+ sonar.qualitygate.conditions:
566
+ - metric: new_coverage
567
+ op: LT
568
+ error: 80
569
+ - metric: new_duplicated_lines_density
570
+ op: GT
571
+ error: 3
572
+ - metric: new_bugs
573
+ op: GT
574
+ error: 0
575
+ - metric: new_vulnerabilities
576
+ op: GT
577
+ error: 0
578
+ - metric: new_code_smells
579
+ op: GT
580
+ error: 10
581
+ ```
582
+
583
+ ### Performance Thresholds
584
+
585
+ | Metric | Warning | Critical | Action |
586
+ |--------|---------|----------|--------|
587
+ | Response Time (p50) | > 200ms | > 500ms | Investigate |
588
+ | Response Time (p95) | > 500ms | > 1000ms | Block release |
589
+ | Error Rate | > 0.1% | > 1% | Block release |
590
+ | CPU Usage | > 70% | > 90% | Scale/optimize |
591
+ | Memory Usage | > 80% | > 95% | Investigate leaks |
592
+
593
+ ---
594
+
595
+ ## Exploratory Testing
596
+
597
+ ### Session-Based Testing
598
+
599
+ ```markdown
600
+ ## Exploratory Test Session
601
+
602
+ **Charter**: Explore [feature] with focus on [risk area]
603
+
604
+ **Time Box**: 60 minutes
605
+
606
+ **Tester**: [Name]
607
+
608
+ **Environment**: [Staging/Dev/etc.]
609
+
610
+ ### Session Notes
611
+
612
+ **Setup** (5 min):
613
+ - [Configuration details]
614
+
615
+ **Exploration** (45 min):
616
+ | Time | Action | Observation | Bug? |
617
+ |------|--------|-------------|------|
618
+ | 0:05 | [Action] | [What happened] | No |
619
+ | 0:12 | [Action] | [Unexpected behavior] | Yes - logged |
620
+ | ... | ... | ... | ... |
621
+
622
+ **Debrief** (10 min):
623
+ - Bugs found: [Count]
624
+ - Areas needing more testing: [List]
625
+ - Questions raised: [List]
626
+
627
+ ### Metrics
628
+ - Session duration: 60 min
629
+ - Test design time: 10 min
630
+ - Test execution time: 45 min
631
+ - Bug investigation time: 5 min
632
+ - Bugs found: 3
633
+ ```
634
+
635
+ ### Exploratory Testing Heuristics
636
+
637
+ | Heuristic | Description | Examples |
638
+ |-----------|-------------|----------|
639
+ | CRUD | Create, Read, Update, Delete | Can I create? Edit? Delete? View? |
640
+ | Boundaries | Test at limits | Max length, empty, negative |
641
+ | Goldilocks | Too big, too small, just right | Various valid inputs |
642
+ | Interruptions | Cancel mid-operation | Close browser, lose connection |
643
+ | Time | Date-related edge cases | Leap year, timezone, DST |
644
+ | Stress | Push to limits | Many users, large files |
645
+
646
+ ---
647
+
648
+ ## Definition of Done
649
+
650
+ ### Test Case Done
651
+
652
+ - [ ] Clear title and description
653
+ - [ ] Preconditions documented
654
+ - [ ] Steps are reproducible
655
+ - [ ] Expected results are verifiable
656
+ - [ ] Traceability to requirement
657
+ - [ ] Peer reviewed
658
+
659
+ ### Test Automation Done
660
+
661
+ - [ ] Test passes consistently (no flakiness)
662
+ - [ ] Page objects used appropriately
663
+ - [ ] Test data externalized
664
+ - [ ] Proper assertions and error messages
665
+ - [ ] Runs in CI pipeline
666
+ - [ ] Documentation updated
667
+
668
+ ### Release Testing Done
669
+
670
+ - [ ] Test plan executed
671
+ - [ ] Defects logged and triaged
672
+ - [ ] Regression suite passed
673
+ - [ ] Exploratory testing completed
674
+ - [ ] Quality gate criteria met
675
+ - [ ] Sign-off obtained
676
+
677
+ ---
678
+
679
+ ## Common Pitfalls
680
+
681
+ ### 1. Testing Everything Equally
682
+
683
+ ❌ **Wrong**: Same test depth for all features
684
+
685
+ ✅ **Right**: Risk-based testing - more effort on high-risk areas (payments, auth, data integrity)
686
+
687
+ ### 2. Automating Everything
688
+
689
+ ❌ **Wrong**: 100% automation target for all tests
690
+
691
+ ✅ **Right**: Automate stable, repetitive tests; keep humans on exploratory and edge cases
692
+
693
+ ### 3. Flaky Tests
694
+
695
+ ❌ **Wrong**: Ignoring intermittent failures
696
+
697
+ ✅ **Right**: Fix or quarantine immediately; flaky tests erode confidence
698
+
699
+ ### 4. Testing in Isolation
700
+
701
+ ❌ **Wrong**: QA only tests after development "throws over the wall"
702
+
703
+ ✅ **Right**: QA involved from requirements through deployment
704
+
705
+ ### 5. Measuring Activity, Not Quality
706
+
707
+ ❌ **Wrong**: "We executed 10,000 tests!"
708
+
709
+ ✅ **Right**: "Defect escape rate dropped from 8% to 3%"
710
+
711
+ ### 6. Neglecting Test Maintenance
712
+
713
+ ❌ **Wrong**: Writing tests and forgetting them
714
+
715
+ ✅ **Right**: Regular test suite reviews, removing obsolete tests, updating for product changes
716
+
717
+ ---
718
+
719
+ ## Resources
720
+
721
+ - [Google Testing Blog](https://testing.googleblog.com/)
722
+ - [Ministry of Testing](https://www.ministryoftesting.com/)
723
+ - [Test Automation University](https://testautomationu.applitools.com/)
724
+ - [Agile Testing by Lisa Crispin & Janet Gregory](https://agiletester.ca/)
725
+ - [The Art of Software Testing by Glenford Myers](https://www.wiley.com/en-us/The+Art+of+Software+Testing)
726
+ - [ISTQB Syllabus](https://www.istqb.org/)