agentic-qe 3.6.4 → 3.6.5
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.
- package/.claude/helpers/v3/product-factors/sfdipot-reference-template.html +958 -0
- package/.claude/helpers/v3/quality-criteria/evidence-classification.md +116 -0
- package/.claude/helpers/v3/quality-criteria/htsm-categories.md +139 -0
- package/.claude/helpers/v3/quality-criteria/quality-criteria-reference-template.html +811 -0
- package/.claude/helpers/v3/quality-criteria/validate-quality-criteria.ts +167 -0
- package/.claude/skills/README.md +21 -8
- package/.claude/skills/skills-manifest.json +1 -1
- package/README.md +45 -49
- package/package.json +1 -1
- package/v3/CHANGELOG.md +13 -0
- package/v3/assets/agents/v3/README.md +9 -70
- package/v3/assets/agents/v3/qe-accessibility-auditor.md +8 -7
- package/v3/assets/agents/v3/qe-bdd-generator.md +8 -7
- package/v3/assets/agents/v3/qe-chaos-engineer.md +9 -8
- package/v3/assets/agents/v3/qe-code-complexity.md +8 -7
- package/v3/assets/agents/v3/qe-code-intelligence.md +8 -7
- package/v3/assets/agents/v3/qe-contract-validator.md +8 -7
- package/v3/assets/agents/v3/qe-coverage-specialist.md +8 -7
- package/v3/assets/agents/v3/qe-defect-predictor.md +8 -7
- package/v3/assets/agents/v3/qe-dependency-mapper.md +8 -7
- package/v3/assets/agents/v3/qe-deployment-advisor.md +8 -7
- package/v3/assets/agents/v3/qe-flaky-hunter.md +8 -7
- package/v3/assets/agents/v3/qe-fleet-commander.md +8 -7
- package/v3/assets/agents/v3/qe-gap-detector.md +8 -7
- package/v3/assets/agents/v3/qe-graphql-tester.md +8 -7
- package/v3/assets/agents/v3/qe-impact-analyzer.md +8 -7
- package/v3/assets/agents/v3/qe-kg-builder.md +8 -7
- package/v3/assets/agents/v3/qe-load-tester.md +8 -7
- package/v3/assets/agents/v3/qe-message-broker-tester.md +15 -10
- package/v3/assets/agents/v3/qe-metrics-optimizer.md +8 -7
- package/v3/assets/agents/v3/qe-middleware-validator.md +15 -10
- package/v3/assets/agents/v3/qe-mutation-tester.md +8 -7
- package/v3/assets/agents/v3/qe-odata-contract-tester.md +17 -12
- package/v3/assets/agents/v3/qe-performance-tester.md +8 -7
- package/v3/assets/agents/v3/qe-property-tester.md +8 -7
- package/v3/assets/agents/v3/qe-qx-partner.md +74 -14
- package/v3/assets/agents/v3/qe-regression-analyzer.md +8 -7
- package/v3/assets/agents/v3/qe-requirements-validator.md +8 -7
- package/v3/assets/agents/v3/qe-responsive-tester.md +8 -7
- package/v3/assets/agents/v3/qe-retry-handler.md +8 -7
- package/v3/assets/agents/v3/qe-risk-assessor.md +8 -7
- package/v3/assets/agents/v3/qe-root-cause-analyzer.md +8 -7
- package/v3/assets/agents/v3/qe-sap-idoc-tester.md +16 -11
- package/v3/assets/agents/v3/qe-sap-rfc-tester.md +15 -10
- package/v3/assets/agents/v3/qe-security-auditor.md +12 -7
- package/v3/assets/agents/v3/qe-security-scanner.md +9 -8
- package/v3/assets/agents/v3/qe-soap-tester.md +15 -10
- package/v3/assets/agents/v3/qe-sod-analyzer.md +17 -12
- package/v3/assets/agents/v3/qe-test-architect.md +8 -7
- package/v3/assets/agents/v3/qe-transfer-specialist.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-code-reviewer.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-integration-reviewer.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-performance-reviewer.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-security-reviewer.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-tdd-green.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-tdd-red.md +8 -7
- package/v3/assets/agents/v3/subagents/qe-tdd-refactor.md +8 -7
- package/v3/assets/agents/v3/templates/qx-report-template.html +26 -22
- package/v3/dist/cli/bundle.js +97 -19
- package/v3/dist/init/phases/11-claude-md.d.ts.map +1 -1
- package/v3/dist/init/phases/11-claude-md.js +94 -16
- package/v3/dist/init/phases/11-claude-md.js.map +1 -1
- package/v3/dist/kernel/constants.d.ts +1 -1
- package/v3/dist/kernel/constants.js +1 -1
- package/v3/dist/learning/qe-unified-memory.d.ts.map +1 -1
- package/v3/dist/learning/qe-unified-memory.js +8 -7
- package/v3/dist/learning/qe-unified-memory.js.map +1 -1
- package/v3/dist/mcp/bundle.js +80 -1
- package/v3/package.json +2 -2
|
@@ -0,0 +1,958 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Product Factors assessment of: Sample Epic - E-Commerce Platform Feature</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--primary: #1e3a5f;
|
|
10
|
+
--primary-dark: #0f2744;
|
|
11
|
+
--primary-light: #2d5a8a;
|
|
12
|
+
--accent: #0066cc;
|
|
13
|
+
--success: #0d7a3f;
|
|
14
|
+
--warning: #b45309;
|
|
15
|
+
--danger: #b91c1c;
|
|
16
|
+
--info: #0369a1;
|
|
17
|
+
--bg-light: #f5f7fa;
|
|
18
|
+
--bg-white: #ffffff;
|
|
19
|
+
--text-dark: #1a1a2e;
|
|
20
|
+
--text-muted: #5c6370;
|
|
21
|
+
--border: #d1d5db;
|
|
22
|
+
--border-light: #e5e7eb;
|
|
23
|
+
--purple: #7c3aed;
|
|
24
|
+
}
|
|
25
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
26
|
+
body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg-light); color: var(--text-dark); line-height: 1.6; font-size: 14px; }
|
|
27
|
+
.container { max-width: 1400px; margin: 0 auto; padding: 24px; }
|
|
28
|
+
header { background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); color: white; padding: 32px 28px; margin-bottom: 24px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12); }
|
|
29
|
+
header h1 { font-size: 1.75rem; margin-bottom: 8px; font-weight: 600; }
|
|
30
|
+
.section { background: var(--bg-white); border-radius: 8px; padding: 20px 24px; margin-bottom: 16px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); border: 1px solid var(--border-light); }
|
|
31
|
+
.section h2 { color: var(--primary); font-size: 1.1rem; margin-bottom: 16px; padding-bottom: 8px; border-bottom: 2px solid var(--primary); font-weight: 600; }
|
|
32
|
+
table { width: 100%; border-collapse: collapse; margin-top: 12px; font-size: 0.85rem; }
|
|
33
|
+
.filterable-table { table-layout: fixed; }
|
|
34
|
+
.filterable-table th:nth-child(1), .filterable-table td:nth-child(1) { width: 100px; overflow: hidden; text-overflow: ellipsis; }
|
|
35
|
+
.filterable-table th:nth-child(2), .filterable-table td:nth-child(2) { width: 70px; }
|
|
36
|
+
.filterable-table th:nth-child(3), .filterable-table td:nth-child(3) { width: 120px; }
|
|
37
|
+
.filterable-table th:nth-child(4), .filterable-table td:nth-child(4) { width: auto; }
|
|
38
|
+
.filterable-table th:nth-child(5), .filterable-table td:nth-child(5) { width: 180px; }
|
|
39
|
+
th { background: var(--bg-light); padding: 10px 12px; text-align: left; font-weight: 600; border-bottom: 2px solid var(--border); font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.3px; color: var(--text-muted); }
|
|
40
|
+
td { padding: 10px 12px; border-bottom: 1px solid var(--border-light); vertical-align: top; word-wrap: break-word; }
|
|
41
|
+
tr:hover { background: #fafbfc; }
|
|
42
|
+
.priority { display: inline-block; padding: 4px 10px; border-radius: 4px; font-weight: 600; font-size: 0.8rem; text-transform: uppercase; }
|
|
43
|
+
.priority-p0 { background: #fef2f2; color: var(--danger); border: 1px solid #fecaca; }
|
|
44
|
+
.priority-p1 { background: #fefce8; color: var(--warning); border: 1px solid #fef08a; }
|
|
45
|
+
.priority-p2 { background: #f0fdf4; color: var(--success); border: 1px solid #bbf7d0; }
|
|
46
|
+
.priority-p3 { background: #f0f9ff; color: var(--info); border: 1px solid #bae6fd; }
|
|
47
|
+
.subcategory { display: inline-block; background: #eff6ff; color: var(--primary); padding: 3px 8px; border-radius: 4px; font-size: 0.8rem; }
|
|
48
|
+
.automation { display: inline-block; padding: 4px 10px; border-radius: 4px; font-size: 0.8rem; font-weight: 500; }
|
|
49
|
+
.automation-api { background: #dbeafe; color: #1e40af; }
|
|
50
|
+
.automation-e2e { background: #fce7f3; color: #9d174d; }
|
|
51
|
+
.automation-integration { background: #d1fae5; color: #065f46; }
|
|
52
|
+
.automation-human { background: #f3e8ff; color: var(--purple); font-weight: 600; }
|
|
53
|
+
.automation-performance { background: #fef3c7; color: #92400e; }
|
|
54
|
+
.automation-security { background: #fee2e2; color: #991b1b; }
|
|
55
|
+
.automation-concurrency { background: #ffedd5; color: #9a3412; }
|
|
56
|
+
.human-reason { font-size: 0.75rem; margin-top: 4px; padding: 4px 8px; background: rgba(124, 58, 237, 0.1); border-radius: 4px; color: #5b21b6; }
|
|
57
|
+
.clarifying-questions { background: #fefce8; border: 1px solid #fef08a; border-radius: 8px; padding: 20px 25px; margin-top: 20px; }
|
|
58
|
+
.clarifying-questions h4 { color: #854d0e; margin-bottom: 16px; font-size: 1.1rem; border-bottom: 2px solid #fef08a; padding-bottom: 10px; }
|
|
59
|
+
.clarifying-intro { background: #fef9c3; border-radius: 6px; padding: 12px 16px; margin-bottom: 20px; }
|
|
60
|
+
.clarifying-intro .preamble { color: #713f12; font-size: 0.9rem; line-height: 1.5; margin: 0; }
|
|
61
|
+
.subcategory-questions { background: white; border: 1px solid #fef08a; border-radius: 6px; padding: 15px; margin-bottom: 15px; }
|
|
62
|
+
.subcategory-questions h5 { color: #854d0e; font-size: 0.95rem; margin-bottom: 8px; font-weight: 700; }
|
|
63
|
+
.subcategory-questions .rationale { color: #92400e; font-size: 0.85rem; margin-bottom: 12px; padding: 8px 12px; background: #fef3c7; border-radius: 4px; border-left: 3px solid #f59e0b; }
|
|
64
|
+
.clarifying-questions ul { list-style: none; margin: 0; padding: 0; }
|
|
65
|
+
.clarifying-questions li { padding: 8px 0 8px 20px; position: relative; border-bottom: 1px dashed #fef08a; color: var(--text-dark); font-size: 0.9rem; }
|
|
66
|
+
.clarifying-questions li:before { content: "?"; position: absolute; left: 0; color: #f59e0b; font-weight: bold; }
|
|
67
|
+
.clarifying-questions li:last-child { border-bottom: none; }
|
|
68
|
+
.charts-container { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
|
|
69
|
+
.chart-panel { background: var(--bg-white); border-radius: 12px; padding: 20px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); }
|
|
70
|
+
.chart-panel h3 { font-size: 1.1rem; color: var(--text-dark); margin-bottom: 15px; padding-bottom: 8px; border-bottom: 2px solid var(--border); }
|
|
71
|
+
.bar-chart { display: flex; flex-direction: column; gap: 8px; }
|
|
72
|
+
.bar-row { display: flex; align-items: center; gap: 10px; }
|
|
73
|
+
.bar-label { width: 90px; font-size: 0.8rem; font-weight: 600; color: var(--text-dark); text-align: right; flex-shrink: 0; }
|
|
74
|
+
.bar-track { flex: 1; height: 24px; background: var(--bg-light); border-radius: 4px; overflow: hidden; }
|
|
75
|
+
.bar-fill { height: 100%; border-radius: 4px; display: flex; align-items: center; justify-content: flex-end; padding-right: 8px; font-size: 0.75rem; font-weight: 600; color: white; min-width: 35px; }
|
|
76
|
+
.bar-value { width: 45px; font-size: 0.85rem; font-weight: 700; color: var(--text-dark); text-align: right; flex-shrink: 0; }
|
|
77
|
+
.bar-structure { background: linear-gradient(90deg, #3b82f6, #2563eb); }
|
|
78
|
+
.bar-function { background: linear-gradient(90deg, #8b5cf6, #7c3aed); }
|
|
79
|
+
.bar-data { background: linear-gradient(90deg, #06b6d4, #0891b2); }
|
|
80
|
+
.bar-interfaces { background: linear-gradient(90deg, #10b981, #059669); }
|
|
81
|
+
.bar-platform { background: linear-gradient(90deg, #f59e0b, #d97706); }
|
|
82
|
+
.bar-operations { background: linear-gradient(90deg, #ec4899, #db2777); }
|
|
83
|
+
.bar-time { background: linear-gradient(90deg, #6366f1, #4f46e5); }
|
|
84
|
+
.bar-p0 { background: linear-gradient(90deg, #ef4444, #dc2626); }
|
|
85
|
+
.bar-p1 { background: linear-gradient(90deg, #f59e0b, #d97706); }
|
|
86
|
+
.bar-p2 { background: linear-gradient(90deg, #22c55e, #16a34a); }
|
|
87
|
+
.bar-p3 { background: linear-gradient(90deg, #06b6d4, #0891b2); }
|
|
88
|
+
.toc-nav { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
|
|
89
|
+
.toc-nav a { color: var(--primary); text-decoration: none; padding: 6px 12px; border-radius: 4px; font-size: 0.8rem; font-weight: 500; background: var(--bg-light); border: 1px solid var(--border-light); }
|
|
90
|
+
.toc-nav a:hover { background: var(--primary); color: white; }
|
|
91
|
+
.toc-nav .count { background: var(--primary); color: white; padding: 1px 6px; border-radius: 3px; font-size: 0.7rem; font-weight: 600; }
|
|
92
|
+
.toc-divider { color: var(--border); margin: 0 4px; }
|
|
93
|
+
.category-section { border-radius: 8px; margin-bottom: 16px; overflow: hidden; border-left: 4px solid var(--border-light); box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
|
|
94
|
+
.category-header { padding: 14px 18px; cursor: pointer; display: flex; align-items: center; justify-content: space-between; }
|
|
95
|
+
.category-header h3 { margin: 0; font-size: 0.95rem; display: flex; align-items: center; gap: 10px; font-weight: 600; }
|
|
96
|
+
.category-header .badge { font-size: 0.7rem; padding: 3px 10px; border-radius: 12px; font-weight: 600; }
|
|
97
|
+
.category-content { padding: 16px; }
|
|
98
|
+
.category-section.cat-structure { border-left-color: #3b82f6; }
|
|
99
|
+
.category-section.cat-structure .category-header { background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%); }
|
|
100
|
+
.category-section.cat-structure .category-content { background: #f8faff; }
|
|
101
|
+
.category-section.cat-structure .badge { background: #3b82f6; color: white; }
|
|
102
|
+
.category-section.cat-function { border-left-color: #10b981; }
|
|
103
|
+
.category-section.cat-function .category-header { background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%); }
|
|
104
|
+
.category-section.cat-function .category-content { background: #f8fdfb; }
|
|
105
|
+
.category-section.cat-function .badge { background: #10b981; color: white; }
|
|
106
|
+
.category-section.cat-data { border-left-color: #f59e0b; }
|
|
107
|
+
.category-section.cat-data .category-header { background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%); }
|
|
108
|
+
.category-section.cat-data .category-content { background: #fffdf8; }
|
|
109
|
+
.category-section.cat-data .badge { background: #f59e0b; color: white; }
|
|
110
|
+
.category-section.cat-interfaces { border-left-color: #8b5cf6; }
|
|
111
|
+
.category-section.cat-interfaces .category-header { background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%); }
|
|
112
|
+
.category-section.cat-interfaces .category-content { background: #faf9ff; }
|
|
113
|
+
.category-section.cat-interfaces .badge { background: #8b5cf6; color: white; }
|
|
114
|
+
.category-section.cat-platform { border-left-color: #14b8a6; }
|
|
115
|
+
.category-section.cat-platform .category-header { background: linear-gradient(135deg, #f0fdfa 0%, #ccfbf1 100%); }
|
|
116
|
+
.category-section.cat-platform .category-content { background: #f8fefd; }
|
|
117
|
+
.category-section.cat-platform .badge { background: #14b8a6; color: white; }
|
|
118
|
+
.category-section.cat-operations { border-left-color: #6366f1; }
|
|
119
|
+
.category-section.cat-operations .category-header { background: linear-gradient(135deg, #eef2ff 0%, #e0e7ff 100%); }
|
|
120
|
+
.category-section.cat-operations .category-content { background: #f8f9ff; }
|
|
121
|
+
.category-section.cat-operations .badge { background: #6366f1; color: white; }
|
|
122
|
+
.category-section.cat-time { border-left-color: #ec4899; }
|
|
123
|
+
.category-section.cat-time .category-header { background: linear-gradient(135deg, #fdf2f8 0%, #fce7f3 100%); }
|
|
124
|
+
.category-section.cat-time .category-content { background: #fefafc; }
|
|
125
|
+
.category-section.cat-time .badge { background: #ec4899; color: white; }
|
|
126
|
+
.collapsed .category-content { display: none; }
|
|
127
|
+
.collapse-icon { transition: transform 0.2s; font-size: 0.8rem; color: var(--text-muted); }
|
|
128
|
+
.collapsed .collapse-icon { transform: rotate(-90deg); }
|
|
129
|
+
.filter-row td { padding: 6px 8px; background: #f8fafc; }
|
|
130
|
+
.filter-input, .filter-select { width: 100%; padding: 4px 8px; border: 1px solid var(--border); border-radius: 4px; font-size: 0.75rem; background: white; }
|
|
131
|
+
.test-id { font-family: 'SF Mono', 'Consolas', monospace; font-size: 0.8rem; color: var(--text-muted); white-space: nowrap; }
|
|
132
|
+
.info-section .info-content { overflow: hidden; transition: max-height 0.3s ease-out; max-height: 1000px; }
|
|
133
|
+
.info-section.collapsed .info-content { max-height: 0 !important; padding-top: 0 !important; padding-bottom: 0 !important; }
|
|
134
|
+
.info-section.collapsed .collapse-icon { transform: rotate(-90deg); }
|
|
135
|
+
@media (max-width: 900px) { .charts-container { grid-template-columns: 1fr; } }
|
|
136
|
+
</style>
|
|
137
|
+
</head>
|
|
138
|
+
<body>
|
|
139
|
+
<div class="container">
|
|
140
|
+
<header>
|
|
141
|
+
<h1>Product Factors assessment of: Sample Epic - E-Commerce Platform Feature</h1>
|
|
142
|
+
<div class="meta-inline" style="margin-top: 15px; padding: 10px 0; border-top: 1px solid rgba(255,255,255,0.2); font-size: 0.9rem; opacity: 0.9;">
|
|
143
|
+
<span>Report generated on <strong>2026-01-01</strong></span>
|
|
144
|
+
<span style="margin: 0 15px; opacity: 0.5;">|</span>
|
|
145
|
+
<span>Total Test Ideas: <strong>140</strong></span>
|
|
146
|
+
<span style="margin: 0 15px; opacity: 0.5;">|</span>
|
|
147
|
+
<span>Product Factors covered: <strong>7/7</strong></span>
|
|
148
|
+
</div>
|
|
149
|
+
<nav class="toc" style="margin-top: 15px;">
|
|
150
|
+
<div style="color: rgba(255,255,255,0.8); font-size: 0.85em; font-weight: 600; margin-bottom: 8px;">Quick Navigation</div>
|
|
151
|
+
<div class="toc-nav">
|
|
152
|
+
<a href="#risk" style="background: rgba(255,255,255,0.15); color: white; border-color: rgba(255,255,255,0.3);">Prioritization</a>
|
|
153
|
+
<a href="#charts" style="background: rgba(255,255,255,0.15); color: white; border-color: rgba(255,255,255,0.3);">Overview</a>
|
|
154
|
+
<span class="toc-divider" style="color: rgba(255,255,255,0.4);">|</span>
|
|
155
|
+
<span style="color: rgba(255,255,255,0.8); font-size: 0.85em; font-weight: 500;">Test Ideas:</span>
|
|
156
|
+
<a href="#structure" style="background: rgba(255,255,255,0.15); color: white; border-color: rgba(255,255,255,0.3);">Structure <span class="count">25</span></a>
|
|
157
|
+
<a href="#function" style="background: rgba(255,255,255,0.15); color: white; border-color: rgba(255,255,255,0.3);">Function <span class="count">35</span></a>
|
|
158
|
+
<a href="#data" style="background: rgba(255,255,255,0.15); color: white; border-color: rgba(255,255,255,0.3);">Data <span class="count">22</span></a>
|
|
159
|
+
<a href="#interfaces" style="background: rgba(255,255,255,0.15); color: white; border-color: rgba(255,255,255,0.3);">Interfaces <span class="count">26</span></a>
|
|
160
|
+
<a href="#platform" style="background: rgba(255,255,255,0.15); color: white; border-color: rgba(255,255,255,0.3);">Platform <span class="count">14</span></a>
|
|
161
|
+
<a href="#operations" style="background: rgba(255,255,255,0.15); color: white; border-color: rgba(255,255,255,0.3);">Operations <span class="count">10</span></a>
|
|
162
|
+
<a href="#time" style="background: rgba(255,255,255,0.15); color: white; border-color: rgba(255,255,255,0.3);">Time <span class="count">8</span></a>
|
|
163
|
+
</div>
|
|
164
|
+
</nav>
|
|
165
|
+
|
|
166
|
+
<div class="info-section collapsed" style="background: rgba(255,255,255,0.1); border-radius: 8px; margin-top: 15px;">
|
|
167
|
+
<div class="info-header" onclick="this.parentElement.classList.toggle('collapsed')" style="padding: 15px 20px; cursor: pointer; display: flex; justify-content: space-between; align-items: center;">
|
|
168
|
+
<h3 style="margin: 0; font-size: 1.1rem; opacity: 0.95;">How can this report help you?</h3>
|
|
169
|
+
<span class="collapse-icon" style="transition: transform 0.2s;">▼</span>
|
|
170
|
+
</div>
|
|
171
|
+
<div class="info-content" style="padding: 0 20px 20px 20px;">
|
|
172
|
+
<blockquote style="margin: 0 0 15px 0; padding: 12px 15px; border-left: 3px solid rgba(255,255,255,0.4); font-style: italic; opacity: 0.9;">
|
|
173
|
+
"Requirements are not an end in themselves, but a means to an end - the end of providing value to some person(s)." <span style="opacity: 0.7;">- Jerry Weinberg</span>
|
|
174
|
+
</blockquote>
|
|
175
|
+
<p style="margin: 0 0 12px 0; opacity: 0.9; line-height: 1.7;">In the <a href="https://talesoftesting.com/wp-content/uploads/2022/10/Lalitkumar-Bhamare-Quality-Conscious-Software-Delivery-eBook.pdf" style="color: #93c5fd; text-decoration: underline;">QCSD framework</a>, it is recommended to conduct Product Coverage Sessions or Requirements Engineering Sessions on a regular basis. These sessions can be carried out at the epic level or for complex feature requests and user stories. Testers in the team can analyze the epic or feature story using SFDIPOT (a product factors checklist from <a href="https://www.satisfice.com/download/heuristic-test-strategy-model" style="color: #93c5fd; text-decoration: underline;">Heuristic Test Strategy Model</a> by James Bach) and come up with test ideas, questions about risks, missing information, unconsidered dependencies, identified risks, and more.</p>
|
|
176
|
+
<p style="margin: 0 0 12px 0; opacity: 0.9; line-height: 1.7;">A guided discussion based on this analysis can help teams uncover hidden risks, assess the completeness of the requirements, create a clearer development plan, identify gaps and dependencies, improve estimation with better information at hand, and most importantly - avoid rework caused by discovering issues halfway through development.</p>
|
|
177
|
+
<p style="margin: 0; opacity: 0.9; line-height: 1.7;">If we want to save time and cost while still delivering quality software, it is always cheaper to do things right the first time. The purpose of this report is to facilitate Product Coverage Sessions and help teams achieve exactly that: doing things right the first time.</p>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
|
|
181
|
+
<div class="info-section collapsed" style="background: rgba(255,255,255,0.1); border-radius: 8px; margin-top: 10px;">
|
|
182
|
+
<div class="info-header" onclick="this.parentElement.classList.toggle('collapsed')" style="padding: 15px 20px; cursor: pointer; display: flex; justify-content: space-between; align-items: center;">
|
|
183
|
+
<h3 style="margin: 0; font-size: 1.1rem; opacity: 0.95;">When to generate this report?</h3>
|
|
184
|
+
<span class="collapse-icon" style="transition: transform 0.2s;">▼</span>
|
|
185
|
+
</div>
|
|
186
|
+
<div class="info-content" style="padding: 0 20px 20px 20px;">
|
|
187
|
+
<p style="margin: 0; opacity: 0.9; line-height: 1.7;">The sooner the better! As soon as testers can access Epic/User Stories or any project artifact they use for test design, this report should be generated. Generate this report and organize "Product Coverage Session" discussion with relevant stakeholders such as programmers, Product Owners, Designers, Architects etc.</p>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
|
|
191
|
+
<div class="info-section collapsed" style="background: rgba(255,255,255,0.1); border-radius: 8px; margin-top: 10px;">
|
|
192
|
+
<div class="info-header" onclick="this.parentElement.classList.toggle('collapsed')" style="padding: 15px 20px; cursor: pointer; display: flex; justify-content: space-between; align-items: center;">
|
|
193
|
+
<h3 style="margin: 0; font-size: 1.1rem; opacity: 0.95;">How to use this report?</h3>
|
|
194
|
+
<span class="collapse-icon" style="transition: transform 0.2s;">▼</span>
|
|
195
|
+
</div>
|
|
196
|
+
<div class="info-content" style="padding: 0 20px 20px 20px;">
|
|
197
|
+
<p style="margin: 0 0 12px 0; opacity: 0.9;">In this report you will find:</p>
|
|
198
|
+
<div style="margin-left: 5px; line-height: 1.8;">
|
|
199
|
+
<div style="margin-bottom: 8px;">☐ <strong>The Test Ideas</strong> generated for each product factor based on applicable subcategories. Review these test ideas carefully for context relevance, applicability and then derive specific test cases where needed.</div>
|
|
200
|
+
<div style="margin-bottom: 8px;">☐ <strong>Automation Fitness</strong> recommendations against each test idea that can help for drafting suitable automation strategy.</div>
|
|
201
|
+
<div style="margin-bottom: 8px;">☐ <strong>Recommended Exploratory Testing Charters</strong> - structured session-based testing charters for each SFDIPOT category. These charters define time-boxed exploration missions with specific personas, activities, and observation points. Use these to conduct focused exploratory testing sessions that uncover issues automation cannot detect. Each charter includes: Mission statement, Time box (30-60 min), Target personas, Session activities, What to look for, and Expected deliverables.</div>
|
|
202
|
+
<div style="margin-bottom: 8px;">☐ <strong>Recommended Test Data</strong> - per-category test data generation strategies including data types, generation approaches, volume recommendations, and privacy considerations for each SFDIPOT category.</div>
|
|
203
|
+
<div>☐ <strong>The Clarifying Questions</strong> - that surface "unknown unknowns" by systematically checking which Product Factors (SFDIPOT) subcategories lack test coverage. Ensure that Epics, User Stories, Acceptance Criteria etc. are readily updated based on answers derived for each clarifying question listed.</div>
|
|
204
|
+
</div>
|
|
205
|
+
<p style="margin: 15px 0 0 0; padding-top: 12px; border-top: 1px solid rgba(255,255,255,0.2); opacity: 0.9; font-size: 0.95rem;">All in all, this report represents important and unique elements to be considered in the test strategy. <strong>Rebuild this report if there are updates made in Epics, User Stories, Acceptance Criteria etc.</strong></p>
|
|
206
|
+
<p style="margin: 10px 0 0 0; opacity: 0.85; font-style: italic; font-size: 0.9rem;">Testers are advised to carefully evaluate all the information using critical thinking and context awareness.</p>
|
|
207
|
+
</div>
|
|
208
|
+
</div>
|
|
209
|
+
</header>
|
|
210
|
+
|
|
211
|
+
<section class="section" id="risk">
|
|
212
|
+
<h2>Risk-Based Prioritization</h2>
|
|
213
|
+
<p style="margin-bottom: 15px;">Test ideas are prioritized using a <strong>risk-based approach</strong> that considers:</p>
|
|
214
|
+
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px; margin-bottom: 20px;">
|
|
215
|
+
<div style="background: var(--bg-light); padding: 15px; border-radius: 8px; border-left: 4px solid var(--primary);"><strong style="color: var(--primary);">Business Impact</strong><br>Potential revenue loss, customer trust damage, or regulatory penalties</div>
|
|
216
|
+
<div style="background: var(--bg-light); padding: 15px; border-radius: 8px; border-left: 4px solid var(--primary);"><strong style="color: var(--primary);">Likelihood of Failure</strong><br>Complexity of implementation, external dependencies, new technology</div>
|
|
217
|
+
<div style="background: var(--bg-light); padding: 15px; border-radius: 8px; border-left: 4px solid var(--primary);"><strong style="color: var(--primary);">User Exposure</strong><br>Number of users affected and frequency of feature usage</div>
|
|
218
|
+
<div style="background: var(--bg-light); padding: 15px; border-radius: 8px; border-left: 4px solid var(--primary);"><strong style="color: var(--primary);">Security & Compliance</strong><br>Data protection requirements, legal obligations, industry regulations</div>
|
|
219
|
+
</div>
|
|
220
|
+
<h3>Priority Legend</h3>
|
|
221
|
+
<div style="background: #fef3c7; border: 1px solid #f59e0b; border-radius: 8px; padding: 12px 16px; margin-bottom: 16px;">
|
|
222
|
+
<p style="margin: 0; color: #92400e; font-size: 0.9rem;">
|
|
223
|
+
<strong>⚠ Human SME Review Required:</strong> Priority levels assigned by this AI agent are <em>recommendations based on general risk heuristics</em>.
|
|
224
|
+
A Domain Expert or Subject Matter Expert (SME) must review and adjust priorities based on actual business context, regulatory requirements,
|
|
225
|
+
and organizational risk tolerance. The agent cannot fully understand business-specific nuances that affect priority decisions.
|
|
226
|
+
</p>
|
|
227
|
+
</div>
|
|
228
|
+
<table>
|
|
229
|
+
<thead>
|
|
230
|
+
<tr><th>Priority</th><th>Risk Level</th><th>Description</th><th>Examples</th></tr>
|
|
231
|
+
</thead>
|
|
232
|
+
<tbody>
|
|
233
|
+
<tr><td><span class="priority priority-p0">P0</span></td><td><strong>Critical</strong></td><td>Security vulnerabilities, regulatory compliance failures, or core functionality that could cause legal liability, data breach, or complete service failure.</td><td>Authentication bypass, payment processing failures, GDPR violations, data corruption</td></tr>
|
|
234
|
+
<tr><td><span class="priority priority-p1">P1</span></td><td><strong>High</strong></td><td>Core business flows and features essential for user trust. Failures would significantly impact user experience or business operations.</td><td>Checkout flow, user registration, search functionality, order processing</td></tr>
|
|
235
|
+
<tr><td><span class="priority priority-p2">P2</span></td><td><strong>Medium</strong></td><td>Important features that support the core experience. Failures would cause inconvenience but workarounds exist.</td><td>Wishlist functionality, email notifications, export features, filtering options</td></tr>
|
|
236
|
+
<tr><td><span class="priority priority-p3">P3</span></td><td><strong>Low</strong></td><td>Edge cases, cosmetic issues, or rarely used features. Failures have minimal business impact.</td><td>Animation smoothness, rare timezone edge cases, optional notifications</td></tr>
|
|
237
|
+
</tbody>
|
|
238
|
+
</table>
|
|
239
|
+
</section>
|
|
240
|
+
|
|
241
|
+
<section class="section" id="charts">
|
|
242
|
+
<h2>Test Ideas Overview</h2>
|
|
243
|
+
<div class="charts-container">
|
|
244
|
+
<div class="chart-panel">
|
|
245
|
+
<h3>Test Ideas by Product Factor (SFDIPOT)</h3>
|
|
246
|
+
<div class="bar-chart">
|
|
247
|
+
<div class="bar-row"><div class="bar-label">Structure</div><div class="bar-track"><div class="bar-fill bar-structure" style="width: 71.4%"></div></div><div class="bar-value">25</div></div>
|
|
248
|
+
<div class="bar-row"><div class="bar-label">Function</div><div class="bar-track"><div class="bar-fill bar-function" style="width: 100%"></div></div><div class="bar-value">35</div></div>
|
|
249
|
+
<div class="bar-row"><div class="bar-label">Data</div><div class="bar-track"><div class="bar-fill bar-data" style="width: 62.9%"></div></div><div class="bar-value">22</div></div>
|
|
250
|
+
<div class="bar-row"><div class="bar-label">Interfaces</div><div class="bar-track"><div class="bar-fill bar-interfaces" style="width: 74.3%"></div></div><div class="bar-value">26</div></div>
|
|
251
|
+
<div class="bar-row"><div class="bar-label">Platform</div><div class="bar-track"><div class="bar-fill bar-platform" style="width: 40%"></div></div><div class="bar-value">14</div></div>
|
|
252
|
+
<div class="bar-row"><div class="bar-label">Operations</div><div class="bar-track"><div class="bar-fill bar-operations" style="width: 28.6%"></div></div><div class="bar-value">10</div></div>
|
|
253
|
+
<div class="bar-row"><div class="bar-label">Time</div><div class="bar-track"><div class="bar-fill bar-time" style="width: 22.9%"></div></div><div class="bar-value">8</div></div>
|
|
254
|
+
</div>
|
|
255
|
+
<div style="margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border); display: flex; justify-content: space-between; font-size: 0.9rem;">
|
|
256
|
+
<span style="color: var(--text-muted);">Product Factors: 7/7</span>
|
|
257
|
+
<span style="font-weight: 700; color: var(--primary);">140 Test Ideas</span>
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
<div class="chart-panel">
|
|
261
|
+
<h3>Test Ideas by Priority</h3>
|
|
262
|
+
<div class="bar-chart">
|
|
263
|
+
<div class="bar-row"><div class="bar-label">P0 - Critical</div><div class="bar-track"><div class="bar-fill bar-p0" style="width: 30%"></div></div><div class="bar-value">15</div></div>
|
|
264
|
+
<div class="bar-row"><div class="bar-label">P1 - High</div><div class="bar-track"><div class="bar-fill bar-p1" style="width: 100%"></div></div><div class="bar-value">50</div></div>
|
|
265
|
+
<div class="bar-row"><div class="bar-label">P2 - Medium</div><div class="bar-track"><div class="bar-fill bar-p2" style="width: 80%"></div></div><div class="bar-value">40</div></div>
|
|
266
|
+
<div class="bar-row"><div class="bar-label">P3 - Low</div><div class="bar-track"><div class="bar-fill bar-p3" style="width: 70%"></div></div><div class="bar-value">35</div></div>
|
|
267
|
+
</div>
|
|
268
|
+
<h4 style="font-size: 0.85rem; color: var(--text-dark); margin: 14px 0 8px 0; padding-top: 12px; border-top: 1px solid var(--border); font-weight: 600;">Test Ideas by Automation Fitness</h4>
|
|
269
|
+
<div class="bar-chart" style="font-size: 0.85rem;">
|
|
270
|
+
<div class="bar-row" style="margin-bottom: 4px;"><div class="bar-label" style="min-width: 100px; font-size: 0.8rem;">API level</div><div class="bar-track" style="height: 14px;"><div class="bar-fill" style="width: 100%; background: linear-gradient(90deg, #6366f1, #8b5cf6);"></div></div><div class="bar-value" style="font-size: 0.8rem;">42</div></div>
|
|
271
|
+
<div class="bar-row" style="margin-bottom: 4px;"><div class="bar-label" style="min-width: 100px; font-size: 0.8rem;">E2E level</div><div class="bar-track" style="height: 14px;"><div class="bar-fill" style="width: 85.7%; background: linear-gradient(90deg, #6366f1, #8b5cf6);"></div></div><div class="bar-value" style="font-size: 0.8rem;">36</div></div>
|
|
272
|
+
<div class="bar-row" style="margin-bottom: 4px;"><div class="bar-label" style="min-width: 100px; font-size: 0.8rem;">Integration</div><div class="bar-track" style="height: 14px;"><div class="bar-fill" style="width: 57.1%; background: linear-gradient(90deg, #6366f1, #8b5cf6);"></div></div><div class="bar-value" style="font-size: 0.8rem;">24</div></div>
|
|
273
|
+
<div class="bar-row" style="margin-bottom: 4px;"><div class="bar-label" style="min-width: 100px; font-size: 0.8rem;">Security</div><div class="bar-track" style="height: 14px;"><div class="bar-fill" style="width: 28.6%; background: linear-gradient(90deg, #ef4444, #dc2626);"></div></div><div class="bar-value" style="font-size: 0.8rem;">12</div></div>
|
|
274
|
+
<div class="bar-row" style="margin-bottom: 4px;"><div class="bar-label" style="min-width: 100px; font-size: 0.8rem;">Performance</div><div class="bar-track" style="height: 14px;"><div class="bar-fill" style="width: 23.8%; background: linear-gradient(90deg, #f59e0b, #d97706);"></div></div><div class="bar-value" style="font-size: 0.8rem;">10</div></div>
|
|
275
|
+
</div>
|
|
276
|
+
</div>
|
|
277
|
+
</div>
|
|
278
|
+
</section>
|
|
279
|
+
|
|
280
|
+
<section class="section" id="test-ideas">
|
|
281
|
+
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; padding-bottom: 8px; border-bottom: 2px solid var(--primary);">
|
|
282
|
+
<h2 style="margin: 0; border: none; padding: 0;">Test Ideas by Product Factor</h2>
|
|
283
|
+
<button onclick="toggleAllSections()" id="toggle-all-btn" style="background: var(--bg-light); border: 1px solid var(--border); padding: 6px 14px; border-radius: 4px; font-size: 0.8rem; cursor: pointer; font-weight: 500; color: var(--text-dark);">Collapse All</button>
|
|
284
|
+
</div>
|
|
285
|
+
<script>
|
|
286
|
+
function toggleAllSections() {
|
|
287
|
+
var sections = document.querySelectorAll('.category-section');
|
|
288
|
+
var btn = document.getElementById('toggle-all-btn');
|
|
289
|
+
var shouldCollapse = btn.textContent === 'Collapse All';
|
|
290
|
+
sections.forEach(function(s) { if (shouldCollapse) { s.classList.add('collapsed'); } else { s.classList.remove('collapsed'); } });
|
|
291
|
+
btn.textContent = shouldCollapse ? 'Expand All' : 'Collapse All';
|
|
292
|
+
}
|
|
293
|
+
function filterTable(tableId) {
|
|
294
|
+
var table = document.getElementById(tableId);
|
|
295
|
+
var filters = table.querySelectorAll('.filter-input, .filter-select');
|
|
296
|
+
var rows = table.querySelectorAll('tbody tr');
|
|
297
|
+
rows.forEach(function(row) {
|
|
298
|
+
var show = true;
|
|
299
|
+
filters.forEach(function(filter) {
|
|
300
|
+
var col = parseInt(filter.dataset.col);
|
|
301
|
+
var cell = row.cells[col];
|
|
302
|
+
if (cell) { var text = cell.textContent.toLowerCase(); var val = filter.value.toLowerCase(); if (val && text.indexOf(val) === -1) { show = false; } }
|
|
303
|
+
});
|
|
304
|
+
row.style.display = show ? '' : 'none';
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
</script>
|
|
308
|
+
|
|
309
|
+
<!-- STRUCTURE SECTION -->
|
|
310
|
+
<div class="category-section cat-structure" id="structure">
|
|
311
|
+
<div class="category-header" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
312
|
+
<h3>STRUCTURE: Test ideas for everything that comprises the physical product <span class="badge">25</span></h3>
|
|
313
|
+
<span class="collapse-icon">▼</span>
|
|
314
|
+
</div>
|
|
315
|
+
<div class="category-content">
|
|
316
|
+
<table class="filterable-table" id="table-structure">
|
|
317
|
+
<thead>
|
|
318
|
+
<tr><th style="width: 100px;">ID</th><th style="width: 70px;">Priority</th><th style="width: 120px;">Subcategory</th><th>Test Idea</th><th style="width: 210px;">Automation Fitness</th></tr>
|
|
319
|
+
<tr class="filter-row">
|
|
320
|
+
<td><input type="text" class="filter-input" data-col="0" placeholder="Filter..." onkeyup="filterTable('table-structure')"></td>
|
|
321
|
+
<td><select class="filter-select" data-col="1" onchange="filterTable('table-structure')"><option value="">All</option><option value="P0">P0</option><option value="P1">P1</option><option value="P2">P2</option><option value="P3">P3</option></select></td>
|
|
322
|
+
<td><input type="text" class="filter-input" data-col="2" placeholder="Filter..." onkeyup="filterTable('table-structure')"></td>
|
|
323
|
+
<td><input type="text" class="filter-input" data-col="3" placeholder="Filter..." onkeyup="filterTable('table-structure')"></td>
|
|
324
|
+
<td><select class="filter-select" data-col="4" onchange="filterTable('table-structure')"><option value="">All</option><option value="API">API</option><option value="E2E">E2E</option><option value="Integration">Integration</option></select></td>
|
|
325
|
+
</tr>
|
|
326
|
+
</thead>
|
|
327
|
+
<tbody>
|
|
328
|
+
<tr><td class="test-id">STRU-001</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Code</span></td><td>Inject invalid resource ID into GET /api/v1/resources/{id}; confirm API returns 404 with descriptive error message</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
329
|
+
<tr><td class="test-id">STRU-002</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Code</span></td><td>Send concurrent requests to API endpoint; confirm thread-safe response handling without data corruption</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
330
|
+
<tr><td class="test-id">STRU-003</td><td><span class="priority priority-p2">P2</span></td><td><span class="subcategory">Code</span></td><td>Load component with missing dependency; confirm graceful fallback with user-friendly error message</td><td><span class="automation automation-integration">Automate on Integration level</span></td></tr>
|
|
331
|
+
<tr><td class="test-id">STRU-004</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Dependencies</span></td><td>Force external service timeout; confirm fallback behavior activates within acceptable timeframe</td><td><span class="automation automation-integration">Automate on Integration level</span></td></tr>
|
|
332
|
+
<tr><td class="test-id">STRU-005</td><td><span class="priority priority-p0">P0</span></td><td><span class="subcategory">Service</span></td><td>Execute health check on database API; confirm 200 response with connection pool metrics</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
333
|
+
</tbody>
|
|
334
|
+
</table>
|
|
335
|
+
|
|
336
|
+
<div style="background: #eff6ff; border: 1px solid #3b82f6; border-radius: 8px; padding: 15px; margin-top: 15px;">
|
|
337
|
+
<h5 style="color: #1e40af; margin-bottom: 10px;">📊 Recommended Test Data for STRUCTURE based tests</h5>
|
|
338
|
+
<table style="width: 100%; font-size: 0.85rem;">
|
|
339
|
+
<tr><th>Data Type</th><th>Generation Approach</th><th>Volume</th><th>Privacy</th></tr>
|
|
340
|
+
<tr><td>Resource IDs</td><td>Reference data from production catalog</td><td>All active resources</td><td>Public data</td></tr>
|
|
341
|
+
<tr><td>API error responses</td><td>Predefined error code catalog</td><td>All HTTP status codes (4xx, 5xx)</td><td>N/A</td></tr>
|
|
342
|
+
<tr><td>Configuration files</td><td>Environment-specific templates</td><td>Dev, Staging, Production</td><td>Secrets masked</td></tr>
|
|
343
|
+
<tr><td>Library versions</td><td>Dependency matrix from package.json</td><td>Current + N-1, N-2 versions</td><td>N/A</td></tr>
|
|
344
|
+
</table>
|
|
345
|
+
<p style="margin-top: 10px; font-size: 0.85rem;"><strong>Edge Case Data:</strong> Invalid UUIDs, SQL injection strings, oversized payloads (>10MB), null bytes in filenames</p>
|
|
346
|
+
</div>
|
|
347
|
+
|
|
348
|
+
<div style="background: #f3e8ff; border: 2px solid #8b5cf6; border-radius: 8px; padding: 20px; margin-top: 20px;">
|
|
349
|
+
<h4 style="color: #5b21b6; margin-bottom: 15px;">🔍 Recommended Exploratory Testing Charter: STRUCTURE</h4>
|
|
350
|
+
<div>
|
|
351
|
+
<p><strong>Mission:</strong> Explore component architecture, dependency resilience, and documentation accuracy to discover integration issues automation cannot detect.</p>
|
|
352
|
+
<p><strong>Time Box:</strong> 45-60 minutes</p>
|
|
353
|
+
<p><strong>Personas:</strong> System Administrator, API Consumer Developer, New Team Member</p>
|
|
354
|
+
<h5 style="margin-top: 15px;">Session Activities:</h5>
|
|
355
|
+
<ul style="margin-left: 20px;">
|
|
356
|
+
<li><strong>Dependency stress testing:</strong> Manually disable external services one-by-one while navigating the application; observe fallback behavior and error messaging</li>
|
|
357
|
+
<li><strong>Documentation walkthrough:</strong> Attempt to integrate with the API using only documentation; note unclear sections or missing examples</li>
|
|
358
|
+
<li><strong>Configuration exploration:</strong> Toggle feature flags and environment variables; assess if behavior changes are predictable and logged</li>
|
|
359
|
+
</ul>
|
|
360
|
+
<h5 style="margin-top: 15px;">What to Look For:</h5>
|
|
361
|
+
<ul style="margin-left: 20px;">
|
|
362
|
+
<li>Silent failures when dependencies timeout</li>
|
|
363
|
+
<li>Inconsistent error message formatting across components</li>
|
|
364
|
+
<li>Documentation that contradicts actual API behavior</li>
|
|
365
|
+
<li>Configuration options that produce unexpected states</li>
|
|
366
|
+
</ul>
|
|
367
|
+
</div>
|
|
368
|
+
</div>
|
|
369
|
+
|
|
370
|
+
<div class="clarifying-questions">
|
|
371
|
+
<h4>Clarifying Questions to address potential coverage gaps</h4>
|
|
372
|
+
<div class="clarifying-intro">
|
|
373
|
+
<p class="preamble">Since the user stories focus on <strong>system architecture and component integration</strong>, the following subcategories require stakeholder input.</p>
|
|
374
|
+
</div>
|
|
375
|
+
<div class="subcategory-questions">
|
|
376
|
+
<h5>[Hardware]</h5>
|
|
377
|
+
<p class="rationale"><em>Rationale: Performance characteristics may vary significantly across different hardware configurations.</em></p>
|
|
378
|
+
<ul>
|
|
379
|
+
<li>What are the minimum hardware specifications for running the application, and what degradation is acceptable on lower-spec devices?</li>
|
|
380
|
+
<li>Are there any GPU-specific features, and what is the fallback behavior when GPU acceleration is unavailable?</li>
|
|
381
|
+
</ul>
|
|
382
|
+
</div>
|
|
383
|
+
<div class="subcategory-questions">
|
|
384
|
+
<h5>[Dependencies]</h5>
|
|
385
|
+
<p class="rationale"><em>Rationale: External dependencies introduce uncontrolled risk and require contingency planning.</em></p>
|
|
386
|
+
<ul>
|
|
387
|
+
<li>When a critical third-party service changes their API without notice, what is the contingency plan?</li>
|
|
388
|
+
<li>What is the maximum acceptable downtime if a primary dependency becomes unavailable?</li>
|
|
389
|
+
</ul>
|
|
390
|
+
</div>
|
|
391
|
+
</div>
|
|
392
|
+
</div>
|
|
393
|
+
</div>
|
|
394
|
+
|
|
395
|
+
<!-- FUNCTION SECTION -->
|
|
396
|
+
<div class="category-section cat-function" id="function">
|
|
397
|
+
<div class="category-header" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
398
|
+
<h3>FUNCTION: Test ideas for everything the product does <span class="badge">35</span></h3>
|
|
399
|
+
<span class="collapse-icon">▼</span>
|
|
400
|
+
</div>
|
|
401
|
+
<div class="category-content">
|
|
402
|
+
<table class="filterable-table" id="table-function">
|
|
403
|
+
<thead>
|
|
404
|
+
<tr><th style="width: 100px;">ID</th><th style="width: 70px;">Priority</th><th style="width: 120px;">Subcategory</th><th>Test Idea</th><th style="width: 210px;">Automation Fitness</th></tr>
|
|
405
|
+
<tr class="filter-row">
|
|
406
|
+
<td><input type="text" class="filter-input" data-col="0" placeholder="Filter..." onkeyup="filterTable('table-function')"></td>
|
|
407
|
+
<td><select class="filter-select" data-col="1" onchange="filterTable('table-function')"><option value="">All</option><option value="P0">P0</option><option value="P1">P1</option><option value="P2">P2</option><option value="P3">P3</option></select></td>
|
|
408
|
+
<td><input type="text" class="filter-input" data-col="2" placeholder="Filter..." onkeyup="filterTable('table-function')"></td>
|
|
409
|
+
<td><input type="text" class="filter-input" data-col="3" placeholder="Filter..." onkeyup="filterTable('table-function')"></td>
|
|
410
|
+
<td><select class="filter-select" data-col="4" onchange="filterTable('table-function')"><option value="">All</option><option value="API">API</option><option value="E2E">E2E</option><option value="Integration">Integration</option><option value="Security">Security</option></select></td>
|
|
411
|
+
</tr>
|
|
412
|
+
</thead>
|
|
413
|
+
<tbody>
|
|
414
|
+
<tr><td class="test-id">FUNC-001</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Core</span></td><td>Complete primary user workflow end-to-end; confirm all steps complete within acceptable response times</td><td><span class="automation automation-e2e">Automate on E2E level</span></td></tr>
|
|
415
|
+
<tr><td class="test-id">FUNC-002</td><td><span class="priority priority-p0">P0</span></td><td><span class="subcategory">Security</span></td><td>Attempt to access protected resource without authentication; confirm access denied with proper error response</td><td><span class="automation automation-security">Security testing recommended</span></td></tr>
|
|
416
|
+
<tr><td class="test-id">FUNC-003</td><td><span class="priority priority-p0">P0</span></td><td><span class="subcategory">Security</span></td><td>Attempt SQL injection in search field; confirm input sanitized and query rejected safely</td><td><span class="automation automation-security">Security testing recommended</span></td></tr>
|
|
417
|
+
<tr><td class="test-id">FUNC-004</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">ErrorHandling</span></td><td>Submit invalid input data; confirm validation error displays with specific correction guidance</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
418
|
+
<tr><td class="test-id">FUNC-005</td><td><span class="priority priority-p2">P2</span></td><td><span class="subcategory">BusinessRules</span></td><td>Complete workflow; confirm all required disclaimers and notices display at appropriate points</td><td><span class="automation automation-e2e">Automate on E2E level</span></td></tr>
|
|
419
|
+
</tbody>
|
|
420
|
+
</table>
|
|
421
|
+
|
|
422
|
+
<div style="background: #ecfdf5; border: 1px solid #10b981; border-radius: 8px; padding: 15px; margin-top: 15px;">
|
|
423
|
+
<h5 style="color: #065f46; margin-bottom: 10px;">📊 Recommended Test Data for FUNCTION based tests</h5>
|
|
424
|
+
<table style="width: 100%; font-size: 0.85rem;">
|
|
425
|
+
<tr><th>Data Type</th><th>Generation Approach</th><th>Volume</th><th>Privacy</th></tr>
|
|
426
|
+
<tr><td>User inputs</td><td>Boundary value analysis matrix</td><td>50+ test vectors covering all boundaries</td><td>Synthetic only</td></tr>
|
|
427
|
+
<tr><td>Business data</td><td>Seeded from sanitized production data</td><td>Representative sample set</td><td>PII removed</td></tr>
|
|
428
|
+
<tr><td>Security payloads</td><td>OWASP ZAP injection dictionary</td><td>Standard XSS/SQLi vectors</td><td>N/A</td></tr>
|
|
429
|
+
<tr><td>Error scenarios</td><td>Predefined error state catalog</td><td>All documented error conditions</td><td>N/A</td></tr>
|
|
430
|
+
</table>
|
|
431
|
+
<p style="margin-top: 10px; font-size: 0.85rem;"><strong>Edge Case Data:</strong> Unicode inputs, scientific notation, locale-specific formats, empty strings vs null</p>
|
|
432
|
+
</div>
|
|
433
|
+
|
|
434
|
+
<div style="background: #f3e8ff; border: 2px solid #8b5cf6; border-radius: 8px; padding: 20px; margin-top: 20px;">
|
|
435
|
+
<h4 style="color: #5b21b6; margin-bottom: 15px;">🔍 Recommended Exploratory Testing Charter: FUNCTION</h4>
|
|
436
|
+
<div>
|
|
437
|
+
<p><strong>Mission:</strong> Explore core feature functionality and user experience to assess clarity, accuracy, and usability that automation cannot validate.</p>
|
|
438
|
+
<p><strong>Time Box:</strong> 60 minutes</p>
|
|
439
|
+
<p><strong>Personas:</strong> New User (first-time visitor), Power User (daily usage), Administrator</p>
|
|
440
|
+
<h5 style="margin-top: 15px;">Session Activities:</h5>
|
|
441
|
+
<ul style="margin-left: 20px;">
|
|
442
|
+
<li><strong>User journey exploration:</strong> Complete primary workflows as each persona; assess if experience matches expectations</li>
|
|
443
|
+
<li><strong>Error message review:</strong> Trigger various error conditions; evaluate if messages are helpful and actionable</li>
|
|
444
|
+
<li><strong>Edge case discovery:</strong> Explore unusual input combinations and workflow variations</li>
|
|
445
|
+
</ul>
|
|
446
|
+
<h5 style="margin-top: 15px;">What to Look For:</h5>
|
|
447
|
+
<ul style="margin-left: 20px;">
|
|
448
|
+
<li>Confusing or misleading user interface elements</li>
|
|
449
|
+
<li>Workflow paths that lead to dead ends</li>
|
|
450
|
+
<li>Inconsistent behavior across similar features</li>
|
|
451
|
+
<li>Missing or unclear error recovery options</li>
|
|
452
|
+
</ul>
|
|
453
|
+
</div>
|
|
454
|
+
</div>
|
|
455
|
+
|
|
456
|
+
<div class="clarifying-questions">
|
|
457
|
+
<h4>Clarifying Questions to address potential coverage gaps</h4>
|
|
458
|
+
<div class="clarifying-intro">
|
|
459
|
+
<p class="preamble">Since the user stories focus on <strong>core functionality and user workflows</strong>, the following require stakeholder clarification.</p>
|
|
460
|
+
</div>
|
|
461
|
+
<div class="subcategory-questions">
|
|
462
|
+
<h5>[Business Rules]</h5>
|
|
463
|
+
<p class="rationale"><em>Rationale: Business rules must be clearly defined to ensure correct implementation.</em></p>
|
|
464
|
+
<ul>
|
|
465
|
+
<li>What happens when a user attempts an action that violates business rules - should it be prevented or allowed with a warning?</li>
|
|
466
|
+
<li>Are there any exceptions to the documented business rules, and how should they be handled?</li>
|
|
467
|
+
</ul>
|
|
468
|
+
</div>
|
|
469
|
+
<div class="subcategory-questions">
|
|
470
|
+
<h5>[Security]</h5>
|
|
471
|
+
<p class="rationale"><em>Rationale: Security requirements must be explicitly defined to ensure compliance.</em></p>
|
|
472
|
+
<ul>
|
|
473
|
+
<li>What authentication and authorization mechanisms are required, and what is the session timeout policy?</li>
|
|
474
|
+
<li>How should failed authentication attempts be handled - are there lockout policies?</li>
|
|
475
|
+
</ul>
|
|
476
|
+
</div>
|
|
477
|
+
</div>
|
|
478
|
+
</div>
|
|
479
|
+
</div>
|
|
480
|
+
|
|
481
|
+
<!-- DATA SECTION -->
|
|
482
|
+
<div class="category-section cat-data" id="data">
|
|
483
|
+
<div class="category-header" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
484
|
+
<h3>DATA: Test ideas for everything the product processes <span class="badge">22</span></h3>
|
|
485
|
+
<span class="collapse-icon">▼</span>
|
|
486
|
+
</div>
|
|
487
|
+
<div class="category-content">
|
|
488
|
+
<table class="filterable-table" id="table-data">
|
|
489
|
+
<thead>
|
|
490
|
+
<tr><th style="width: 100px;">ID</th><th style="width: 70px;">Priority</th><th style="width: 120px;">Subcategory</th><th>Test Idea</th><th style="width: 210px;">Automation Fitness</th></tr>
|
|
491
|
+
<tr class="filter-row">
|
|
492
|
+
<td><input type="text" class="filter-input" data-col="0" placeholder="Filter..." onkeyup="filterTable('table-data')"></td>
|
|
493
|
+
<td><select class="filter-select" data-col="1" onchange="filterTable('table-data')"><option value="">All</option><option value="P0">P0</option><option value="P1">P1</option><option value="P2">P2</option><option value="P3">P3</option></select></td>
|
|
494
|
+
<td><input type="text" class="filter-input" data-col="2" placeholder="Filter..." onkeyup="filterTable('table-data')"></td>
|
|
495
|
+
<td><input type="text" class="filter-input" data-col="3" placeholder="Filter..." onkeyup="filterTable('table-data')"></td>
|
|
496
|
+
<td><select class="filter-select" data-col="4" onchange="filterTable('table-data')"><option value="">All</option><option value="API">API</option><option value="E2E">E2E</option><option value="Integration">Integration</option></select></td>
|
|
497
|
+
</tr>
|
|
498
|
+
</thead>
|
|
499
|
+
<tbody>
|
|
500
|
+
<tr><td class="test-id">DATA-001</td><td><span class="priority priority-p0">P0</span></td><td><span class="subcategory">Input</span></td><td>Submit data with negative values where not allowed; confirm validation rejects with specific error message</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
501
|
+
<tr><td class="test-id">DATA-002</td><td><span class="priority priority-p0">P0</span></td><td><span class="subcategory">Input</span></td><td>Submit boundary values at exact limits; confirm each boundary handled correctly per business rules</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
502
|
+
<tr><td class="test-id">DATA-003</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Output</span></td><td>Request data export; confirm output format matches documented specification exactly</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
503
|
+
<tr><td class="test-id">DATA-004</td><td><span class="priority priority-p0">P0</span></td><td><span class="subcategory">Persistence</span></td><td>Trigger database failover during data write; confirm transaction rolls back completely without partial data</td><td><span class="automation automation-integration">Automate on Integration level</span></td></tr>
|
|
504
|
+
<tr><td class="test-id">DATA-005</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Boundaries</span></td><td>Submit data at exact boundary values; confirm correct handling per documented rules</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
505
|
+
</tbody>
|
|
506
|
+
</table>
|
|
507
|
+
|
|
508
|
+
<div style="background: #fffbeb; border: 1px solid #f59e0b; border-radius: 8px; padding: 15px; margin-top: 15px;">
|
|
509
|
+
<h5 style="color: #92400e; margin-bottom: 10px;">📊 Recommended Test Data for DATA based tests</h5>
|
|
510
|
+
<table style="width: 100%; font-size: 0.85rem;">
|
|
511
|
+
<tr><th>Data Type</th><th>Generation Approach</th><th>Volume</th><th>Privacy</th></tr>
|
|
512
|
+
<tr><td>Input combinations</td><td>Pairwise testing matrix</td><td>200+ combinations covering all boundaries</td><td>Synthetic - no PII</td></tr>
|
|
513
|
+
<tr><td>Business data</td><td>Sanitized copy of production data</td><td>Representative sample</td><td>PII anonymized</td></tr>
|
|
514
|
+
<tr><td>Unicode test strings</td><td>OWASP Unicode testing vectors</td><td>50+ strings per input field</td><td>N/A</td></tr>
|
|
515
|
+
<tr><td>Locale formats</td><td>CLDR locale database samples</td><td>Top 20 supported locales</td><td>N/A</td></tr>
|
|
516
|
+
</table>
|
|
517
|
+
<p style="margin-top: 10px; font-size: 0.85rem;"><strong>Edge Case Data:</strong> Negative numbers, floating point precision limits, dates outside valid range, empty strings vs null</p>
|
|
518
|
+
</div>
|
|
519
|
+
|
|
520
|
+
<div style="background: #f3e8ff; border: 2px solid #8b5cf6; border-radius: 8px; padding: 20px; margin-top: 20px;">
|
|
521
|
+
<h4 style="color: #5b21b6; margin-bottom: 15px;">🔍 Recommended Exploratory Testing Charter: DATA</h4>
|
|
522
|
+
<div>
|
|
523
|
+
<p><strong>Mission:</strong> Explore data handling edge cases, boundary conditions, and internationalization to discover data corruption or loss scenarios.</p>
|
|
524
|
+
<p><strong>Time Box:</strong> 45 minutes</p>
|
|
525
|
+
<p><strong>Personas:</strong> International users (various locales), Power users entering unusual data patterns</p>
|
|
526
|
+
<h5 style="margin-top: 15px;">Session Activities:</h5>
|
|
527
|
+
<ul style="margin-left: 20px;">
|
|
528
|
+
<li><strong>Boundary exploration:</strong> Systematically enter values at, just below, and just above documented limits; observe system behavior</li>
|
|
529
|
+
<li><strong>Locale testing:</strong> Switch between 5+ locales while entering data; verify formatting consistency</li>
|
|
530
|
+
<li><strong>Data persistence check:</strong> Enter data, close browser, reopen; verify data recovery matches original</li>
|
|
531
|
+
</ul>
|
|
532
|
+
<h5 style="margin-top: 15px;">What to Look For:</h5>
|
|
533
|
+
<ul style="margin-left: 20px;">
|
|
534
|
+
<li>Data truncation without warning</li>
|
|
535
|
+
<li>Locale-specific parsing errors (comma vs period)</li>
|
|
536
|
+
<li>Lost precision in calculations</li>
|
|
537
|
+
<li>Inconsistent data between saved and displayed values</li>
|
|
538
|
+
</ul>
|
|
539
|
+
</div>
|
|
540
|
+
</div>
|
|
541
|
+
|
|
542
|
+
<div class="clarifying-questions">
|
|
543
|
+
<h4>Clarifying Questions to address potential coverage gaps</h4>
|
|
544
|
+
<div class="clarifying-intro">
|
|
545
|
+
<p class="preamble">Since the user stories involve <strong>data processing and storage</strong>, the following data handling aspects need clarification.</p>
|
|
546
|
+
</div>
|
|
547
|
+
<div class="subcategory-questions">
|
|
548
|
+
<h5>[Data Boundaries]</h5>
|
|
549
|
+
<p class="rationale"><em>Rationale: Boundary conditions must be well-defined to avoid unexpected behavior.</em></p>
|
|
550
|
+
<ul>
|
|
551
|
+
<li>What are the exact minimum and maximum valid values for each input field?</li>
|
|
552
|
+
<li>How should decimal values be handled - rounded, truncated, or accepted as-is?</li>
|
|
553
|
+
</ul>
|
|
554
|
+
</div>
|
|
555
|
+
<div class="subcategory-questions">
|
|
556
|
+
<h5>[Data Persistence]</h5>
|
|
557
|
+
<p class="rationale"><em>Rationale: Data retention policies affect compliance and user expectations.</em></p>
|
|
558
|
+
<ul>
|
|
559
|
+
<li>How long is user data retained, and can users request complete deletion?</li>
|
|
560
|
+
<li>What happens to related data when a primary record is deleted?</li>
|
|
561
|
+
</ul>
|
|
562
|
+
</div>
|
|
563
|
+
</div>
|
|
564
|
+
</div>
|
|
565
|
+
</div>
|
|
566
|
+
|
|
567
|
+
<!-- INTERFACES SECTION -->
|
|
568
|
+
<div class="category-section cat-interfaces" id="interfaces">
|
|
569
|
+
<div class="category-header" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
570
|
+
<h3>INTERFACES: Test ideas for every conduit for information exchange <span class="badge">26</span></h3>
|
|
571
|
+
<span class="collapse-icon">▼</span>
|
|
572
|
+
</div>
|
|
573
|
+
<div class="category-content">
|
|
574
|
+
<table class="filterable-table" id="table-interfaces">
|
|
575
|
+
<thead>
|
|
576
|
+
<tr><th style="width: 100px;">ID</th><th style="width: 70px;">Priority</th><th style="width: 120px;">Subcategory</th><th>Test Idea</th><th style="width: 210px;">Automation Fitness</th></tr>
|
|
577
|
+
<tr class="filter-row">
|
|
578
|
+
<td><input type="text" class="filter-input" data-col="0" placeholder="Filter..." onkeyup="filterTable('table-interfaces')"></td>
|
|
579
|
+
<td><select class="filter-select" data-col="1" onchange="filterTable('table-interfaces')"><option value="">All</option><option value="P0">P0</option><option value="P1">P1</option><option value="P2">P2</option><option value="P3">P3</option></select></td>
|
|
580
|
+
<td><input type="text" class="filter-input" data-col="2" placeholder="Filter..." onkeyup="filterTable('table-interfaces')"></td>
|
|
581
|
+
<td><input type="text" class="filter-input" data-col="3" placeholder="Filter..." onkeyup="filterTable('table-interfaces')"></td>
|
|
582
|
+
<td><select class="filter-select" data-col="4" onchange="filterTable('table-interfaces')"><option value="">All</option><option value="API">API</option><option value="E2E">E2E</option><option value="Integration">Integration</option></select></td>
|
|
583
|
+
</tr>
|
|
584
|
+
</thead>
|
|
585
|
+
<tbody>
|
|
586
|
+
<tr><td class="test-id">INTF-001</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">UI</span></td><td>Load application on 320px viewport; confirm all interactive elements accessible without horizontal scroll</td><td><span class="automation automation-e2e">Automate on E2E level</span></td></tr>
|
|
587
|
+
<tr><td class="test-id">INTF-002</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">UI</span></td><td>Interact with touch elements on mobile device; confirm touch targets meet minimum size requirements</td><td><span class="automation automation-e2e">Automate on E2E level</span></td></tr>
|
|
588
|
+
<tr><td class="test-id">INTF-003</td><td><span class="priority priority-p2">P2</span></td><td><span class="subcategory">UI</span></td><td>Navigate application with screen reader; confirm ARIA labels describe all interactive elements</td><td><span class="automation automation-e2e">Automate on E2E level</span></td></tr>
|
|
589
|
+
<tr><td class="test-id">INTF-004</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">API</span></td><td>Send GET request to documented endpoint; confirm 200 response with correct Content-Type header</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
590
|
+
<tr><td class="test-id">INTF-005</td><td><span class="priority priority-p2">P2</span></td><td><span class="subcategory">API</span></td><td>Exceed API rate limit; confirm 429 response with Retry-After header</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
591
|
+
</tbody>
|
|
592
|
+
</table>
|
|
593
|
+
|
|
594
|
+
<div style="background: #f5f3ff; border: 1px solid #8b5cf6; border-radius: 8px; padding: 15px; margin-top: 15px;">
|
|
595
|
+
<h5 style="color: #5b21b6; margin-bottom: 10px;">📊 Recommended Test Data for INTERFACES based tests</h5>
|
|
596
|
+
<table style="width: 100%; font-size: 0.85rem;">
|
|
597
|
+
<tr><th>Data Type</th><th>Generation Approach</th><th>Volume</th><th>Privacy</th></tr>
|
|
598
|
+
<tr><td>Device viewports</td><td>BrowserStack device matrix</td><td>Top 20 device/browser combinations</td><td>N/A</td></tr>
|
|
599
|
+
<tr><td>API requests</td><td>OpenAPI spec-based generation</td><td>All documented endpoints</td><td>N/A</td></tr>
|
|
600
|
+
<tr><td>ARIA labels</td><td>Accessibility audit checklist</td><td>All interactive elements</td><td>N/A</td></tr>
|
|
601
|
+
<tr><td>Rate limit scenarios</td><td>Predefined threshold tests</td><td>Normal, boundary, and excess rates</td><td>N/A</td></tr>
|
|
602
|
+
</table>
|
|
603
|
+
<p style="margin-top: 10px; font-size: 0.85rem;"><strong>Edge Case Data:</strong> Extremely long text strings, RTL languages, high-contrast mode, zoom levels 50%-400%</p>
|
|
604
|
+
</div>
|
|
605
|
+
|
|
606
|
+
<div style="background: #f3e8ff; border: 2px solid #8b5cf6; border-radius: 8px; padding: 20px; margin-top: 20px;">
|
|
607
|
+
<h4 style="color: #5b21b6; margin-bottom: 15px;">🔍 Recommended Exploratory Testing Charter: INTERFACES</h4>
|
|
608
|
+
<div>
|
|
609
|
+
<p><strong>Mission:</strong> Explore interface usability, accessibility, and API contract compliance to discover integration issues.</p>
|
|
610
|
+
<p><strong>Time Box:</strong> 45-60 minutes</p>
|
|
611
|
+
<p><strong>Personas:</strong> Mobile User, Screen Reader User, API Consumer Developer</p>
|
|
612
|
+
<h5 style="margin-top: 15px;">Session Activities:</h5>
|
|
613
|
+
<ul style="margin-left: 20px;">
|
|
614
|
+
<li><strong>Responsive testing:</strong> Resize browser through breakpoints; observe layout changes and element visibility</li>
|
|
615
|
+
<li><strong>Accessibility audit:</strong> Navigate using keyboard only; assess tab order and focus visibility</li>
|
|
616
|
+
<li><strong>API exploration:</strong> Make requests with various header combinations; observe error handling</li>
|
|
617
|
+
</ul>
|
|
618
|
+
<h5 style="margin-top: 15px;">What to Look For:</h5>
|
|
619
|
+
<ul style="margin-left: 20px;">
|
|
620
|
+
<li>Elements that overlap or become inaccessible at certain viewport sizes</li>
|
|
621
|
+
<li>Missing or incorrect ARIA labels</li>
|
|
622
|
+
<li>API responses that don't match documentation</li>
|
|
623
|
+
<li>Inconsistent error response formats</li>
|
|
624
|
+
</ul>
|
|
625
|
+
</div>
|
|
626
|
+
</div>
|
|
627
|
+
|
|
628
|
+
<div class="clarifying-questions">
|
|
629
|
+
<h4>Clarifying Questions to address potential coverage gaps</h4>
|
|
630
|
+
<div class="clarifying-intro">
|
|
631
|
+
<p class="preamble">Since the user stories involve <strong>user interfaces and API integrations</strong>, the following require clarification.</p>
|
|
632
|
+
</div>
|
|
633
|
+
<div class="subcategory-questions">
|
|
634
|
+
<h5>[UI/Accessibility]</h5>
|
|
635
|
+
<p class="rationale"><em>Rationale: Accessibility requirements affect design decisions and compliance.</em></p>
|
|
636
|
+
<ul>
|
|
637
|
+
<li>What WCAG level are we targeting (A, AA, AAA) and is this legally mandated in target markets?</li>
|
|
638
|
+
<li>What is the minimum supported viewport size, and what features are acceptable to hide on smaller screens?</li>
|
|
639
|
+
</ul>
|
|
640
|
+
</div>
|
|
641
|
+
<div class="subcategory-questions">
|
|
642
|
+
<h5>[API Contracts]</h5>
|
|
643
|
+
<p class="rationale"><em>Rationale: API contracts must be clearly defined for integration partners.</em></p>
|
|
644
|
+
<ul>
|
|
645
|
+
<li>What is the API deprecation policy, and how much notice will consumers receive?</li>
|
|
646
|
+
<li>What rate limits apply to different API tiers, and how are limit resets communicated?</li>
|
|
647
|
+
</ul>
|
|
648
|
+
</div>
|
|
649
|
+
</div>
|
|
650
|
+
</div>
|
|
651
|
+
</div>
|
|
652
|
+
|
|
653
|
+
<!-- PLATFORM SECTION -->
|
|
654
|
+
<div class="category-section cat-platform" id="platform">
|
|
655
|
+
<div class="category-header" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
656
|
+
<h3>PLATFORM: Test ideas for everything external on which the product depends <span class="badge">14</span></h3>
|
|
657
|
+
<span class="collapse-icon">▼</span>
|
|
658
|
+
</div>
|
|
659
|
+
<div class="category-content">
|
|
660
|
+
<table class="filterable-table" id="table-platform">
|
|
661
|
+
<thead>
|
|
662
|
+
<tr><th style="width: 100px;">ID</th><th style="width: 70px;">Priority</th><th style="width: 120px;">Subcategory</th><th>Test Idea</th><th style="width: 210px;">Automation Fitness</th></tr>
|
|
663
|
+
<tr class="filter-row">
|
|
664
|
+
<td><input type="text" class="filter-input" data-col="0" placeholder="Filter..." onkeyup="filterTable('table-platform')"></td>
|
|
665
|
+
<td><select class="filter-select" data-col="1" onchange="filterTable('table-platform')"><option value="">All</option><option value="P0">P0</option><option value="P1">P1</option><option value="P2">P2</option><option value="P3">P3</option></select></td>
|
|
666
|
+
<td><input type="text" class="filter-input" data-col="2" placeholder="Filter..." onkeyup="filterTable('table-platform')"></td>
|
|
667
|
+
<td><input type="text" class="filter-input" data-col="3" placeholder="Filter..." onkeyup="filterTable('table-platform')"></td>
|
|
668
|
+
<td><select class="filter-select" data-col="4" onchange="filterTable('table-platform')"><option value="">All</option><option value="API">API</option><option value="E2E">E2E</option><option value="Integration">Integration</option><option value="Performance">Performance</option></select></td>
|
|
669
|
+
</tr>
|
|
670
|
+
</thead>
|
|
671
|
+
<tbody>
|
|
672
|
+
<tr><td class="test-id">PLAT-001</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Browser</span></td><td>Load application in Chrome, Firefox, Safari, Edge; confirm feature parity across all browsers</td><td><span class="automation automation-e2e">Automate on E2E level</span></td></tr>
|
|
673
|
+
<tr><td class="test-id">PLAT-002</td><td><span class="priority priority-p2">P2</span></td><td><span class="subcategory">Browser</span></td><td>Test with JavaScript disabled; confirm graceful degradation with appropriate messaging</td><td><span class="automation automation-e2e">Automate on E2E level</span></td></tr>
|
|
674
|
+
<tr><td class="test-id">PLAT-003</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Network</span></td><td>Simulate 3G network speed; confirm application remains usable with appropriate loading states</td><td><span class="automation automation-performance">Performance testing recommended</span></td></tr>
|
|
675
|
+
<tr><td class="test-id">PLAT-004</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Services</span></td><td>Simulate cloud provider partial outage; confirm application handles degraded service gracefully</td><td><span class="automation automation-integration">Automate on Integration level</span></td></tr>
|
|
676
|
+
<tr><td class="test-id">PLAT-005</td><td><span class="priority priority-p2">P2</span></td><td><span class="subcategory">Services</span></td><td>Test with CDN cache cleared; confirm assets load correctly from origin</td><td><span class="automation automation-integration">Automate on Integration level</span></td></tr>
|
|
677
|
+
</tbody>
|
|
678
|
+
</table>
|
|
679
|
+
|
|
680
|
+
<div style="background: #f0fdfa; border: 1px solid #14b8a6; border-radius: 8px; padding: 15px; margin-top: 15px;">
|
|
681
|
+
<h5 style="color: #0d9488; margin-bottom: 10px;">📊 Recommended Test Data for PLATFORM based tests</h5>
|
|
682
|
+
<table style="width: 100%; font-size: 0.85rem;">
|
|
683
|
+
<tr><th>Data Type</th><th>Generation Approach</th><th>Volume</th><th>Privacy</th></tr>
|
|
684
|
+
<tr><td>Browser versions</td><td>BrowserStack/Sauce Labs matrix</td><td>Latest + N-1, N-2 versions per browser</td><td>N/A</td></tr>
|
|
685
|
+
<tr><td>Network conditions</td><td>Chrome DevTools presets</td><td>Offline, Slow 3G, Fast 3G, 4G</td><td>N/A</td></tr>
|
|
686
|
+
<tr><td>Service failures</td><td>Chaos engineering scenarios</td><td>All documented dependencies</td><td>N/A</td></tr>
|
|
687
|
+
<tr><td>Geographic regions</td><td>VPN testing across regions</td><td>Top 10 target markets</td><td>N/A</td></tr>
|
|
688
|
+
</table>
|
|
689
|
+
<p style="margin-top: 10px; font-size: 0.85rem;"><strong>Edge Case Data:</strong> Browser with aggressive ad-blockers, corporate proxy restrictions, VPN connections</p>
|
|
690
|
+
</div>
|
|
691
|
+
|
|
692
|
+
<div style="background: #f3e8ff; border: 2px solid #8b5cf6; border-radius: 8px; padding: 20px; margin-top: 20px;">
|
|
693
|
+
<h4 style="color: #5b21b6; margin-bottom: 15px;">🔍 Recommended Exploratory Testing Charter: PLATFORM</h4>
|
|
694
|
+
<div>
|
|
695
|
+
<p><strong>Mission:</strong> Explore platform compatibility and resilience to discover environment-specific issues.</p>
|
|
696
|
+
<p><strong>Time Box:</strong> 45 minutes</p>
|
|
697
|
+
<p><strong>Personas:</strong> User on outdated browser, User on slow connection, User behind corporate firewall</p>
|
|
698
|
+
<h5 style="margin-top: 15px;">Session Activities:</h5>
|
|
699
|
+
<ul style="margin-left: 20px;">
|
|
700
|
+
<li><strong>Browser compatibility:</strong> Test critical flows on oldest supported browser; note any degraded functionality</li>
|
|
701
|
+
<li><strong>Network resilience:</strong> Throttle connection and introduce latency; observe timeout handling</li>
|
|
702
|
+
<li><strong>Service dependency testing:</strong> Block specific external service calls; verify fallback behavior</li>
|
|
703
|
+
</ul>
|
|
704
|
+
<h5 style="margin-top: 15px;">What to Look For:</h5>
|
|
705
|
+
<ul style="margin-left: 20px;">
|
|
706
|
+
<li>Features that silently fail on specific browsers</li>
|
|
707
|
+
<li>Missing timeout handling for slow connections</li>
|
|
708
|
+
<li>Unclear error messages when services are unavailable</li>
|
|
709
|
+
<li>Assets blocked by corporate security policies</li>
|
|
710
|
+
</ul>
|
|
711
|
+
</div>
|
|
712
|
+
</div>
|
|
713
|
+
|
|
714
|
+
<div class="clarifying-questions">
|
|
715
|
+
<h4>Clarifying Questions to address potential coverage gaps</h4>
|
|
716
|
+
<div class="clarifying-intro">
|
|
717
|
+
<p class="preamble">Since the product depends on <strong>external platforms and services</strong>, the following require clarification.</p>
|
|
718
|
+
</div>
|
|
719
|
+
<div class="subcategory-questions">
|
|
720
|
+
<h5>[Browser Support]</h5>
|
|
721
|
+
<p class="rationale"><em>Rationale: Browser support decisions affect development effort and user reach.</em></p>
|
|
722
|
+
<ul>
|
|
723
|
+
<li>What is the oldest browser version we officially support, and what happens for users on older versions?</li>
|
|
724
|
+
<li>Are there any features that are intentionally not supported on specific browsers?</li>
|
|
725
|
+
</ul>
|
|
726
|
+
</div>
|
|
727
|
+
<div class="subcategory-questions">
|
|
728
|
+
<h5>[Service Dependencies]</h5>
|
|
729
|
+
<p class="rationale"><em>Rationale: External dependencies require contingency planning.</em></p>
|
|
730
|
+
<ul>
|
|
731
|
+
<li>What are the SLA requirements for critical third-party services?</li>
|
|
732
|
+
<li>What is the compensation or escalation process if a vendor breaches their SLA?</li>
|
|
733
|
+
</ul>
|
|
734
|
+
</div>
|
|
735
|
+
</div>
|
|
736
|
+
</div>
|
|
737
|
+
</div>
|
|
738
|
+
|
|
739
|
+
<!-- OPERATIONS SECTION -->
|
|
740
|
+
<div class="category-section cat-operations" id="operations">
|
|
741
|
+
<div class="category-header" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
742
|
+
<h3>OPERATIONS: Test ideas for how the product will be used <span class="badge">10</span></h3>
|
|
743
|
+
<span class="collapse-icon">▼</span>
|
|
744
|
+
</div>
|
|
745
|
+
<div class="category-content">
|
|
746
|
+
<table class="filterable-table" id="table-operations">
|
|
747
|
+
<thead>
|
|
748
|
+
<tr><th style="width: 100px;">ID</th><th style="width: 70px;">Priority</th><th style="width: 120px;">Subcategory</th><th>Test Idea</th><th style="width: 210px;">Automation Fitness</th></tr>
|
|
749
|
+
<tr class="filter-row">
|
|
750
|
+
<td><input type="text" class="filter-input" data-col="0" placeholder="Filter..." onkeyup="filterTable('table-operations')"></td>
|
|
751
|
+
<td><select class="filter-select" data-col="1" onchange="filterTable('table-operations')"><option value="">All</option><option value="P0">P0</option><option value="P1">P1</option><option value="P2">P2</option><option value="P3">P3</option></select></td>
|
|
752
|
+
<td><input type="text" class="filter-input" data-col="2" placeholder="Filter..." onkeyup="filterTable('table-operations')"></td>
|
|
753
|
+
<td><input type="text" class="filter-input" data-col="3" placeholder="Filter..." onkeyup="filterTable('table-operations')"></td>
|
|
754
|
+
<td><select class="filter-select" data-col="4" onchange="filterTable('table-operations')"><option value="">All</option><option value="API">API</option><option value="E2E">E2E</option><option value="Integration">Integration</option><option value="Performance">Performance</option></select></td>
|
|
755
|
+
</tr>
|
|
756
|
+
</thead>
|
|
757
|
+
<tbody>
|
|
758
|
+
<tr><td class="test-id">OPER-001</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">CommonUsage</span></td><td>Simulate 1000 concurrent users performing primary workflow; confirm system handles load without degradation</td><td><span class="automation automation-performance">Performance testing recommended</span></td></tr>
|
|
759
|
+
<tr><td class="test-id">OPER-002</td><td><span class="priority priority-p2">P2</span></td><td><span class="subcategory">ExtremeUsage</span></td><td>Trigger 10x expected peak load; confirm graceful degradation with appropriate user messaging</td><td><span class="automation automation-performance">Performance testing recommended</span></td></tr>
|
|
760
|
+
<tr><td class="test-id">OPER-003</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">UserTypes</span></td><td>Complete workflow as new user, returning user, and admin; confirm appropriate permissions and UI</td><td><span class="automation automation-e2e">Automate on E2E level</span></td></tr>
|
|
761
|
+
<tr><td class="test-id">OPER-004</td><td><span class="priority priority-p2">P2</span></td><td><span class="subcategory">Environment</span></td><td>Access application from different geographic regions; confirm content and latency appropriate for each</td><td><span class="automation automation-integration">Automate on Integration level</span></td></tr>
|
|
762
|
+
<tr><td class="test-id">OPER-005</td><td><span class="priority priority-p3">P3</span></td><td><span class="subcategory">Environment</span></td><td>Use application with VPN enabled; confirm no unexpected blocks or performance issues</td><td><span class="automation automation-e2e">Automate on E2E level</span></td></tr>
|
|
763
|
+
</tbody>
|
|
764
|
+
</table>
|
|
765
|
+
|
|
766
|
+
<div style="background: #eef2ff; border: 1px solid #6366f1; border-radius: 8px; padding: 15px; margin-top: 15px;">
|
|
767
|
+
<h5 style="color: #4338ca; margin-bottom: 10px;">📊 Recommended Test Data for OPERATIONS based tests</h5>
|
|
768
|
+
<table style="width: 100%; font-size: 0.85rem;">
|
|
769
|
+
<tr><th>Data Type</th><th>Generation Approach</th><th>Volume</th><th>Privacy</th></tr>
|
|
770
|
+
<tr><td>Load test users</td><td>k6/JMeter virtual users</td><td>1000-10000 concurrent users</td><td>Synthetic profiles</td></tr>
|
|
771
|
+
<tr><td>User personas</td><td>Predefined permission sets</td><td>All documented user types</td><td>N/A</td></tr>
|
|
772
|
+
<tr><td>Geographic locations</td><td>VPN endpoints</td><td>All target markets</td><td>N/A</td></tr>
|
|
773
|
+
<tr><td>Usage patterns</td><td>Production analytics sampling</td><td>Top 10 user journeys</td><td>Anonymized</td></tr>
|
|
774
|
+
</table>
|
|
775
|
+
<p style="margin-top: 10px; font-size: 0.85rem;"><strong>Edge Case Data:</strong> Bot-like behavior patterns, session sharing attempts, simultaneous logins</p>
|
|
776
|
+
</div>
|
|
777
|
+
|
|
778
|
+
<div style="background: #f3e8ff; border: 2px solid #8b5cf6; border-radius: 8px; padding: 20px; margin-top: 20px;">
|
|
779
|
+
<h4 style="color: #5b21b6; margin-bottom: 15px;">🔍 Recommended Exploratory Testing Charter: OPERATIONS</h4>
|
|
780
|
+
<div>
|
|
781
|
+
<p><strong>Mission:</strong> Explore real-world usage patterns and operational scenarios to discover issues that affect production readiness.</p>
|
|
782
|
+
<p><strong>Time Box:</strong> 45 minutes</p>
|
|
783
|
+
<p><strong>Personas:</strong> Peak load user, International user, Power user with unusual patterns</p>
|
|
784
|
+
<h5 style="margin-top: 15px;">Session Activities:</h5>
|
|
785
|
+
<ul style="margin-left: 20px;">
|
|
786
|
+
<li><strong>Usage pattern simulation:</strong> Execute realistic user journeys at various speeds and patterns</li>
|
|
787
|
+
<li><strong>Permission boundary testing:</strong> Attempt actions at the edge of each user role's permissions</li>
|
|
788
|
+
<li><strong>Regional experience check:</strong> Access from different regions; compare experience quality</li>
|
|
789
|
+
</ul>
|
|
790
|
+
<h5 style="margin-top: 15px;">What to Look For:</h5>
|
|
791
|
+
<ul style="margin-left: 20px;">
|
|
792
|
+
<li>Features that degrade under load before expected thresholds</li>
|
|
793
|
+
<li>Permission escalation opportunities</li>
|
|
794
|
+
<li>Regional content or performance disparities</li>
|
|
795
|
+
<li>Unusual usage patterns that cause unexpected behavior</li>
|
|
796
|
+
</ul>
|
|
797
|
+
</div>
|
|
798
|
+
</div>
|
|
799
|
+
|
|
800
|
+
<div class="clarifying-questions">
|
|
801
|
+
<h4>Clarifying Questions to address potential coverage gaps</h4>
|
|
802
|
+
<div class="clarifying-intro">
|
|
803
|
+
<p class="preamble">Since the user stories affect <strong>operational usage patterns</strong>, the following require clarification.</p>
|
|
804
|
+
</div>
|
|
805
|
+
<div class="subcategory-questions">
|
|
806
|
+
<h5>[Usage Patterns]</h5>
|
|
807
|
+
<p class="rationale"><em>Rationale: Understanding expected usage helps set appropriate performance targets.</em></p>
|
|
808
|
+
<ul>
|
|
809
|
+
<li>What is the expected peak concurrent user count, and what are the planned scaling triggers?</li>
|
|
810
|
+
<li>What percentage of users are expected to complete each major workflow?</li>
|
|
811
|
+
</ul>
|
|
812
|
+
</div>
|
|
813
|
+
<div class="subcategory-questions">
|
|
814
|
+
<h5>[Regional Operations]</h5>
|
|
815
|
+
<p class="rationale"><em>Rationale: Regional requirements may vary significantly.</em></p>
|
|
816
|
+
<ul>
|
|
817
|
+
<li>Are there any features restricted to specific geographic regions?</li>
|
|
818
|
+
<li>How should the application respond to users accessing via VPN from unexpected locations?</li>
|
|
819
|
+
</ul>
|
|
820
|
+
</div>
|
|
821
|
+
</div>
|
|
822
|
+
</div>
|
|
823
|
+
</div>
|
|
824
|
+
|
|
825
|
+
<!-- TIME SECTION -->
|
|
826
|
+
<div class="category-section cat-time" id="time">
|
|
827
|
+
<div class="category-header" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
828
|
+
<h3>TIME: Test ideas for relationships between the product and time <span class="badge">8</span></h3>
|
|
829
|
+
<span class="collapse-icon">▼</span>
|
|
830
|
+
</div>
|
|
831
|
+
<div class="category-content">
|
|
832
|
+
<table class="filterable-table" id="table-time">
|
|
833
|
+
<thead>
|
|
834
|
+
<tr><th style="width: 100px;">ID</th><th style="width: 70px;">Priority</th><th style="width: 120px;">Subcategory</th><th>Test Idea</th><th style="width: 210px;">Automation Fitness</th></tr>
|
|
835
|
+
<tr class="filter-row">
|
|
836
|
+
<td><input type="text" class="filter-input" data-col="0" placeholder="Filter..." onkeyup="filterTable('table-time')"></td>
|
|
837
|
+
<td><select class="filter-select" data-col="1" onchange="filterTable('table-time')"><option value="">All</option><option value="P0">P0</option><option value="P1">P1</option><option value="P2">P2</option><option value="P3">P3</option></select></td>
|
|
838
|
+
<td><input type="text" class="filter-input" data-col="2" placeholder="Filter..." onkeyup="filterTable('table-time')"></td>
|
|
839
|
+
<td><input type="text" class="filter-input" data-col="3" placeholder="Filter..." onkeyup="filterTable('table-time')"></td>
|
|
840
|
+
<td><select class="filter-select" data-col="4" onchange="filterTable('table-time')"><option value="">All</option><option value="API">API</option><option value="E2E">E2E</option><option value="Integration">Integration</option></select></td>
|
|
841
|
+
</tr>
|
|
842
|
+
</thead>
|
|
843
|
+
<tbody>
|
|
844
|
+
<tr><td class="test-id">TIME-001</td><td><span class="priority priority-p0">P0</span></td><td><span class="subcategory">State</span></td><td>Session token expiry at exact boundary time; confirm re-authentication required without grace period bypass</td><td><span class="automation automation-api">Automate on API level</span></td></tr>
|
|
845
|
+
<tr><td class="test-id">TIME-002</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Concurrency</span></td><td>Two users modify same resource simultaneously; confirm no race condition or data corruption</td><td><span class="automation automation-integration">Automate on Integration level</span></td></tr>
|
|
846
|
+
<tr><td class="test-id">TIME-003</td><td><span class="priority priority-p1">P1</span></td><td><span class="subcategory">Timing</span></td><td>Trigger scheduled task at exact scheduled time; confirm task executes within acceptable tolerance</td><td><span class="automation automation-integration">Automate on Integration level</span></td></tr>
|
|
847
|
+
<tr><td class="test-id">TIME-004</td><td><span class="priority priority-p2">P2</span></td><td><span class="subcategory">Timing</span></td><td>Cross timezone boundary during active session; confirm time displays update correctly</td><td><span class="automation automation-e2e">Automate on E2E level</span></td></tr>
|
|
848
|
+
<tr><td class="test-id">TIME-005</td><td><span class="priority priority-p3">P3</span></td><td><span class="subcategory">Timing</span></td><td>Test during daylight saving time transition; confirm no duplicate or missed scheduled events</td><td><span class="automation automation-integration">Automate on Integration level</span></td></tr>
|
|
849
|
+
</tbody>
|
|
850
|
+
</table>
|
|
851
|
+
|
|
852
|
+
<div style="background: #fdf2f8; border: 1px solid #ec4899; border-radius: 8px; padding: 15px; margin-top: 15px;">
|
|
853
|
+
<h5 style="color: #be185d; margin-bottom: 10px;">📊 Recommended Test Data for TIME based tests</h5>
|
|
854
|
+
<table style="width: 100%; font-size: 0.85rem;">
|
|
855
|
+
<tr><th>Data Type</th><th>Generation Approach</th><th>Volume</th><th>Privacy</th></tr>
|
|
856
|
+
<tr><td>Session tokens</td><td>Various expiry times</td><td>Valid, expired, about-to-expire</td><td>N/A</td></tr>
|
|
857
|
+
<tr><td>Timezone combinations</td><td>UTC offset matrix</td><td>All standard timezones</td><td>N/A</td></tr>
|
|
858
|
+
<tr><td>Concurrent operations</td><td>Race condition scenarios</td><td>2-100 simultaneous users</td><td>Synthetic users</td></tr>
|
|
859
|
+
<tr><td>Scheduled events</td><td>Cron expression variations</td><td>All scheduled task types</td><td>N/A</td></tr>
|
|
860
|
+
</table>
|
|
861
|
+
<p style="margin-top: 10px; font-size: 0.85rem;"><strong>Edge Case Data:</strong> Leap seconds, DST transitions, year boundary events, timezone with unusual offsets (UTC+5:45)</p>
|
|
862
|
+
</div>
|
|
863
|
+
|
|
864
|
+
<div style="background: #f3e8ff; border: 2px solid #8b5cf6; border-radius: 8px; padding: 20px; margin-top: 20px;">
|
|
865
|
+
<h4 style="color: #5b21b6; margin-bottom: 15px;">🔍 Recommended Exploratory Testing Charter: TIME</h4>
|
|
866
|
+
<div>
|
|
867
|
+
<p><strong>Mission:</strong> Explore time-related edge cases, concurrency issues, and scheduling reliability.</p>
|
|
868
|
+
<p><strong>Time Box:</strong> 30-45 minutes</p>
|
|
869
|
+
<p><strong>Personas:</strong> User in different timezone, User with expired session, Multiple users editing same data</p>
|
|
870
|
+
<h5 style="margin-top: 15px;">Session Activities:</h5>
|
|
871
|
+
<ul style="margin-left: 20px;">
|
|
872
|
+
<li><strong>Session boundary testing:</strong> Work near session expiry; observe warning and renewal behavior</li>
|
|
873
|
+
<li><strong>Concurrency exploration:</strong> Open multiple tabs and perform conflicting actions; observe resolution</li>
|
|
874
|
+
<li><strong>Timezone verification:</strong> Change device timezone mid-session; verify display updates</li>
|
|
875
|
+
</ul>
|
|
876
|
+
<h5 style="margin-top: 15px;">What to Look For:</h5>
|
|
877
|
+
<ul style="margin-left: 20px;">
|
|
878
|
+
<li>Session expiry that loses user work</li>
|
|
879
|
+
<li>Race conditions that corrupt data</li>
|
|
880
|
+
<li>Scheduled tasks that fire at wrong times</li>
|
|
881
|
+
<li>Confusing or incorrect time displays</li>
|
|
882
|
+
</ul>
|
|
883
|
+
</div>
|
|
884
|
+
</div>
|
|
885
|
+
|
|
886
|
+
<div class="clarifying-questions">
|
|
887
|
+
<h4>Clarifying Questions to address potential coverage gaps</h4>
|
|
888
|
+
<div class="clarifying-intro">
|
|
889
|
+
<p class="preamble">Since the product has <strong>time-sensitive features</strong>, the following require clarification.</p>
|
|
890
|
+
</div>
|
|
891
|
+
<div class="subcategory-questions">
|
|
892
|
+
<h5>[Session Management]</h5>
|
|
893
|
+
<p class="rationale"><em>Rationale: Session timing affects security and user experience.</em></p>
|
|
894
|
+
<ul>
|
|
895
|
+
<li>What is the session timeout duration, and what happens to unsaved work when it expires?</li>
|
|
896
|
+
<li>Is there a session extension mechanism, and how does it interact with concurrent sessions?</li>
|
|
897
|
+
</ul>
|
|
898
|
+
</div>
|
|
899
|
+
<div class="subcategory-questions">
|
|
900
|
+
<h5>[Scheduling]</h5>
|
|
901
|
+
<p class="rationale"><em>Rationale: Scheduled operations require careful timezone handling.</em></p>
|
|
902
|
+
<ul>
|
|
903
|
+
<li>How are scheduled events stored and displayed - user's timezone or server timezone?</li>
|
|
904
|
+
<li>What happens to scheduled events when a user changes their timezone setting?</li>
|
|
905
|
+
</ul>
|
|
906
|
+
</div>
|
|
907
|
+
</div>
|
|
908
|
+
</div>
|
|
909
|
+
</div>
|
|
910
|
+
|
|
911
|
+
</section>
|
|
912
|
+
|
|
913
|
+
<!-- Mutation Testing Strategy Section -->
|
|
914
|
+
<section class="section" id="mutation-testing">
|
|
915
|
+
<h2>Mutation Testing Strategy</h2>
|
|
916
|
+
<p style="margin-bottom: 15px;">To verify that tests actually catch bugs, apply mutation testing to these critical code paths:</p>
|
|
917
|
+
|
|
918
|
+
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 20px 0;">
|
|
919
|
+
<div style="background: #ecfdf5; border: 1px solid #10b981; border-radius: 8px; padding: 15px;">
|
|
920
|
+
<h4 style="color: #065f46; margin-bottom: 10px;">Recommended Mutation Targets</h4>
|
|
921
|
+
<ul style="margin: 0; padding-left: 20px;">
|
|
922
|
+
<li><strong>Business Logic:</strong> Core calculation formulas, pricing algorithms, validation rules</li>
|
|
923
|
+
<li><strong>Boundary Conditions:</strong> Input limits, quantity ranges, date boundaries</li>
|
|
924
|
+
<li><strong>Error Handling:</strong> API error responses, validation rejection logic, exception paths</li>
|
|
925
|
+
<li><strong>State Transitions:</strong> Workflow states, order status changes, session states</li>
|
|
926
|
+
</ul>
|
|
927
|
+
</div>
|
|
928
|
+
<div style="background: #fef3c7; border: 1px solid #f59e0b; border-radius: 8px; padding: 15px;">
|
|
929
|
+
<h4 style="color: #92400e; margin-bottom: 10px;">Kill Rate Targets</h4>
|
|
930
|
+
<table style="width: 100%; font-size: 0.85rem;">
|
|
931
|
+
<tr><th>Code Area</th><th>Target</th></tr>
|
|
932
|
+
<tr><td>Core Business Logic</td><td>≥95%</td></tr>
|
|
933
|
+
<tr><td>Security/Authentication</td><td>≥95%</td></tr>
|
|
934
|
+
<tr><td>Financial Calculations</td><td>≥95%</td></tr>
|
|
935
|
+
<tr><td>API Validation</td><td>≥85%</td></tr>
|
|
936
|
+
<tr><td>UI Components</td><td>≥70%</td></tr>
|
|
937
|
+
</table>
|
|
938
|
+
</div>
|
|
939
|
+
</div>
|
|
940
|
+
|
|
941
|
+
<h4>Mutation Operators to Apply</h4>
|
|
942
|
+
<ul style="margin-left: 20px;">
|
|
943
|
+
<li><strong>Arithmetic:</strong> Change +/-, */÷, boundary ±1 in calculation formulas</li>
|
|
944
|
+
<li><strong>Relational:</strong> Swap <, >, ≤, ≥, ==, != in boundary checks and comparisons</li>
|
|
945
|
+
<li><strong>Logical:</strong> Invert AND/OR, true/false in validation conditions</li>
|
|
946
|
+
<li><strong>Return Values:</strong> Return null, empty, boundary values from functions and API endpoints</li>
|
|
947
|
+
</ul>
|
|
948
|
+
</section>
|
|
949
|
+
|
|
950
|
+
<footer style="text-align: center; padding: 20px; color: var(--text-muted); font-size: 0.85rem; border-top: 1px solid var(--border-light); margin-top: 24px;">
|
|
951
|
+
<p>Generated by <strong>Agentic QE Fleet - Product Factors Assessor Agent</strong></p>
|
|
952
|
+
<p>Framework: SFDIPOT from <a href="https://www.satisfice.com/download/heuristic-test-strategy-model" style="color: var(--accent);">Heuristic Test Strategy Model</a> by James Bach</p>
|
|
953
|
+
<p style="margin-top: 10px; font-size: 0.8rem; opacity: 0.8;">This is a reference template for the qe-product-factors-assessor agent. Replace content with actual epic-specific test ideas.</p>
|
|
954
|
+
</footer>
|
|
955
|
+
|
|
956
|
+
</div>
|
|
957
|
+
</body>
|
|
958
|
+
</html>
|