@nano-step/skill-manager 5.6.0 → 5.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +1 -1
- package/package.json +1 -1
- package/skills/nano-brain/AGENTS_SNIPPET.md +0 -9
- package/skills/rri-t-testing/SKILL.md +224 -0
- package/skills/rri-t-testing/assets/rri-t-coverage-dashboard.md +138 -0
- package/skills/rri-t-testing/assets/rri-t-memory-protocol.md +271 -0
- package/skills/rri-t-testing/assets/rri-t-persona-interview.md +249 -0
- package/skills/rri-t-testing/assets/rri-t-quality-scorecard.md +122 -0
- package/skills/rri-t-testing/assets/rri-t-risk-matrix.md +87 -0
- package/skills/rri-t-testing/assets/rri-t-stress-matrix.md +100 -0
- package/skills/rri-t-testing/assets/rri-t-test-case.md +181 -0
- package/skills/rri-t-testing/assets/rri-t-testability-gate.md +131 -0
- package/skills/rri-t-testing/assets/rri-t-traceability-matrix.md +105 -0
- package/skills/rri-t-testing/skill.json +9 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
# RRI-T Persona Interview — {Feature Name}
|
|
2
|
+
|
|
3
|
+
**Feature:** {feature-name}
|
|
4
|
+
**Date:** {YYYY-MM-DD}
|
|
5
|
+
**Interviewer:** {agent/person}
|
|
6
|
+
|
|
7
|
+
## Interview Summary
|
|
8
|
+
| Persona | Questions Generated | Key Concerns |
|
|
9
|
+
|---------|-------------------|--------------|
|
|
10
|
+
| End User | 0/25 | |
|
|
11
|
+
| Business Analyst | 0/25 | |
|
|
12
|
+
| QA Destroyer | 0/25 | |
|
|
13
|
+
| DevOps Tester | 0/25 | |
|
|
14
|
+
| Security Auditor | 0/25 | |
|
|
15
|
+
| **Total** | **0/125** | |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Persona 1: End User (Nguoi dung cuoi)
|
|
20
|
+
|
|
21
|
+
### Context
|
|
22
|
+
As a household member using {feature-name} daily to manage my family's shared resources, I need the feature to work reliably across different devices, network conditions, and usage patterns. I care about speed, clarity, and not losing my work.
|
|
23
|
+
|
|
24
|
+
### Questions
|
|
25
|
+
1. What happens when I add an inventory item while my phone has weak 3G signal? `[PERF]` `[D3: Performance]`
|
|
26
|
+
2. What happens when I start editing a shopping list on mobile, then switch to desktop mid-task? `[DATA]` `[D5: Data Integrity]`
|
|
27
|
+
3. What happens when I search for "nguyen" but the item name is "Nguyen Van A"? `[DATA]` `[D1: UI/UX]`
|
|
28
|
+
4. What happens when I accidentally navigate away from a half-filled form? `[DATA]` `[D1: UI/UX]`
|
|
29
|
+
5. What happens when I try to delete an item that another household member is currently editing? `[DATA]` `[D5: Data Integrity]`
|
|
30
|
+
6. What happens when I upload a photo of a receipt and the file is 10MB? `[PERF]` `[D3: Performance]`
|
|
31
|
+
7. What happens when I filter 500+ inventory items by expiration date on a mid-range phone? `[PERF]` `[D3: Performance]`
|
|
32
|
+
8. What happens when I receive a phone call while recording a voice note for a meal plan? `[TECH]` `[D7: Edge Cases]`
|
|
33
|
+
9. What happens when the app shows "1,000,000d" instead of "1.000.000d" for Vietnamese currency? `[BUS]` `[D1: UI/UX]`
|
|
34
|
+
10. What happens when I'm offline for 2 days and then reconnect with 50 pending changes? `[DATA]` `[D6: Infrastructure]`
|
|
35
|
+
11.
|
|
36
|
+
12.
|
|
37
|
+
13.
|
|
38
|
+
14.
|
|
39
|
+
15.
|
|
40
|
+
16.
|
|
41
|
+
17.
|
|
42
|
+
18.
|
|
43
|
+
19.
|
|
44
|
+
20.
|
|
45
|
+
21.
|
|
46
|
+
22.
|
|
47
|
+
23.
|
|
48
|
+
24.
|
|
49
|
+
25.
|
|
50
|
+
|
|
51
|
+
### Key Concerns
|
|
52
|
+
- {list concerns discovered}
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Persona 2: Business Analyst (Phan tich nghiep vu)
|
|
57
|
+
|
|
58
|
+
### Context
|
|
59
|
+
As someone responsible for ensuring business rules are correctly implemented, I need to verify that household permissions, data ownership, financial calculations, and multi-household scenarios work as specified. I care about data consistency and rule enforcement.
|
|
60
|
+
|
|
61
|
+
### Questions
|
|
62
|
+
1. What happens when a household member with "viewer" role tries to delete an inventory item? `[SEC]` `[D4: Security]`
|
|
63
|
+
2. What happens when a user belongs to 3 households and switches between them rapidly? `[DATA]` `[D5: Data Integrity]`
|
|
64
|
+
3. What happens when two members simultaneously mark the same shopping list item as "purchased"? `[DATA]` `[D5: Data Integrity]`
|
|
65
|
+
4. What happens when a household admin removes a member who has pending edits? `[BUS]` `[D4: Security]`
|
|
66
|
+
5. What happens when the total expense calculation includes items in different currencies (VND and USD)? `[BUS]` `[D5: Data Integrity]`
|
|
67
|
+
6. What happens when a recurring meal plan conflicts with a one-time event on the same date? `[BUS]` `[D7: Edge Cases]`
|
|
68
|
+
7. What happens when a user tries to share an inventory item with a household they don't belong to? `[SEC]` `[D4: Security]`
|
|
69
|
+
8. What happens when the system calculates "items expiring in 3 days" across different timezones? `[BUS]` `[D7: Edge Cases]`
|
|
70
|
+
9. What happens when a household reaches the maximum allowed inventory items (if there's a limit)? `[BUS]` `[D7: Edge Cases]`
|
|
71
|
+
10. What happens when a deleted household still has active shopping lists in other members' offline caches? `[DATA]` `[D6: Infrastructure]`
|
|
72
|
+
11.
|
|
73
|
+
12.
|
|
74
|
+
13.
|
|
75
|
+
14.
|
|
76
|
+
15.
|
|
77
|
+
16.
|
|
78
|
+
17.
|
|
79
|
+
18.
|
|
80
|
+
19.
|
|
81
|
+
20.
|
|
82
|
+
21.
|
|
83
|
+
22.
|
|
84
|
+
23.
|
|
85
|
+
24.
|
|
86
|
+
25.
|
|
87
|
+
|
|
88
|
+
### Key Concerns
|
|
89
|
+
- {list concerns discovered}
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Persona 3: QA Destroyer (Pha hoai vien QA)
|
|
94
|
+
|
|
95
|
+
### Context
|
|
96
|
+
As someone whose job is to break things, I need to find every edge case, race condition, and unexpected input that could crash the system or corrupt data. I care about boundary conditions, malformed inputs, and timing attacks.
|
|
97
|
+
|
|
98
|
+
### Questions
|
|
99
|
+
1. What happens when I paste 50,000 characters into the "item name" field? `[DATA]` `[D7: Edge Cases]`
|
|
100
|
+
2. What happens when I rapidly click "save" 20 times in 1 second? `[PERF]` `[D7: Edge Cases]`
|
|
101
|
+
3. What happens when I set my device date to 2099 and create an inventory item? `[DATA]` `[D7: Edge Cases]`
|
|
102
|
+
4. What happens when I upload a file named `"; DROP TABLE inventory; --"` as an item photo? `[SEC]` `[D4: Security]`
|
|
103
|
+
5. What happens when I create an item with expiration date "yesterday" and quantity "-5"? `[DATA]` `[D7: Edge Cases]`
|
|
104
|
+
6. What happens when I open the app in 10 browser tabs and edit the same item in all of them? `[DATA]` `[D5: Data Integrity]`
|
|
105
|
+
7. What happens when I force-kill the app during a GraphQL mutation? `[DATA]` `[D6: Infrastructure]`
|
|
106
|
+
8. What happens when I inject `<script>alert('xss')</script>` into a meal plan description? `[SEC]` `[D4: Security]`
|
|
107
|
+
9. What happens when I create a circular dependency (Item A requires Item B, Item B requires Item A)? `[BUS]` `[D7: Edge Cases]`
|
|
108
|
+
10. What happens when I change my device timezone mid-session and create a timestamped event? `[DATA]` `[D7: Edge Cases]`
|
|
109
|
+
11.
|
|
110
|
+
12.
|
|
111
|
+
13.
|
|
112
|
+
14.
|
|
113
|
+
15.
|
|
114
|
+
16.
|
|
115
|
+
17.
|
|
116
|
+
18.
|
|
117
|
+
19.
|
|
118
|
+
20.
|
|
119
|
+
21.
|
|
120
|
+
22.
|
|
121
|
+
23.
|
|
122
|
+
24.
|
|
123
|
+
25.
|
|
124
|
+
|
|
125
|
+
### Key Concerns
|
|
126
|
+
- {list concerns discovered}
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Persona 4: DevOps Tester (Kiem thu ha tang)
|
|
131
|
+
|
|
132
|
+
### Context
|
|
133
|
+
As someone responsible for deployment, monitoring, and infrastructure reliability, I need to verify that the feature works under load, handles server restarts gracefully, and doesn't leak resources. I care about scalability, observability, and recovery.
|
|
134
|
+
|
|
135
|
+
### Questions
|
|
136
|
+
1. What happens when the GraphQL server restarts while a user is mid-sync? `[OPS]` `[D6: Infrastructure]`
|
|
137
|
+
2. What happens when 100 users simultaneously bulk-import 500 inventory items each? `[PERF]` `[D3: Performance]`
|
|
138
|
+
3. What happens when the database connection pool is exhausted during peak usage? `[OPS]` `[D6: Infrastructure]`
|
|
139
|
+
4. What happens when the CDN serving item photos goes down? `[OPS]` `[D6: Infrastructure]`
|
|
140
|
+
5. What happens when a GraphQL query takes longer than the 30-second timeout? `[PERF]` `[D3: Performance]`
|
|
141
|
+
6. What happens when the Redis cache is cleared while users have active sessions? `[OPS]` `[D6: Infrastructure]`
|
|
142
|
+
7. What happens when a deployment rolls out a new schema version while old clients are still connected? `[OPS]` `[D2: API]`
|
|
143
|
+
8. What happens when disk space runs out during a photo upload? `[OPS]` `[D6: Infrastructure]`
|
|
144
|
+
9. What happens when the monitoring system detects 500 errors but the app still appears functional? `[OPS]` `[D6: Infrastructure]`
|
|
145
|
+
10. What happens when a user's offline queue grows to 1000+ pending mutations? `[PERF]` `[D3: Performance]`
|
|
146
|
+
11.
|
|
147
|
+
12.
|
|
148
|
+
13.
|
|
149
|
+
14.
|
|
150
|
+
15.
|
|
151
|
+
16.
|
|
152
|
+
17.
|
|
153
|
+
18.
|
|
154
|
+
19.
|
|
155
|
+
20.
|
|
156
|
+
21.
|
|
157
|
+
22.
|
|
158
|
+
23.
|
|
159
|
+
24.
|
|
160
|
+
25.
|
|
161
|
+
|
|
162
|
+
### Key Concerns
|
|
163
|
+
- {list concerns discovered}
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Persona 5: Security Auditor (Kiem toan bao mat)
|
|
168
|
+
|
|
169
|
+
### Context
|
|
170
|
+
As someone responsible for security compliance, I need to verify that authentication, authorization, data exposure, and audit trails are properly implemented. I care about access control, data leakage, and attack surface.
|
|
171
|
+
|
|
172
|
+
### Questions
|
|
173
|
+
1. What happens when a user's JWT token expires mid-session? `[SEC]` `[D4: Security]`
|
|
174
|
+
2. What happens when a user tries to access another household's data by guessing the household ID? `[SEC]` `[D4: Security]`
|
|
175
|
+
3. What happens when a removed household member still has cached data on their device? `[SEC]` `[D4: Security]`
|
|
176
|
+
4. What happens when someone intercepts the GraphQL request and replays it with modified variables? `[SEC]` `[D4: Security]`
|
|
177
|
+
5. What happens when a user tries to upload a malicious file disguised as an image? `[SEC]` `[D4: Security]`
|
|
178
|
+
6. What happens when the audit log shows who deleted an item, but the user claims they didn't? `[SEC]` `[D4: Security]`
|
|
179
|
+
7. What happens when a user shares their session token with someone outside the household? `[SEC]` `[D4: Security]`
|
|
180
|
+
8. What happens when someone uses SQL injection in a search query (even though it's GraphQL)? `[SEC]` `[D4: Security]`
|
|
181
|
+
9. What happens when a user's password is compromised and they don't realize it for 3 days? `[SEC]` `[D4: Security]`
|
|
182
|
+
10. What happens when the system logs sensitive data (like financial amounts) in plain text? `[SEC]` `[D4: Security]`
|
|
183
|
+
11.
|
|
184
|
+
12.
|
|
185
|
+
13.
|
|
186
|
+
14.
|
|
187
|
+
15.
|
|
188
|
+
16.
|
|
189
|
+
17.
|
|
190
|
+
18.
|
|
191
|
+
19.
|
|
192
|
+
20.
|
|
193
|
+
21.
|
|
194
|
+
22.
|
|
195
|
+
23.
|
|
196
|
+
24.
|
|
197
|
+
25.
|
|
198
|
+
|
|
199
|
+
### Key Concerns
|
|
200
|
+
- {list concerns discovered}
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Consolidation Method
|
|
205
|
+
|
|
206
|
+
After completing all persona interviews, consolidate findings into the risk register:
|
|
207
|
+
|
|
208
|
+
1. **Group by Category:** Organize questions by risk category (TECH, SEC, PERF, DATA, BUS, OPS)
|
|
209
|
+
2. **Identify Patterns:** Look for concerns raised by multiple personas
|
|
210
|
+
3. **Score Risks:** For each unique risk, assign Probability (1-3) x Impact (1-3)
|
|
211
|
+
4. **Prioritize:** Sort by risk score descending
|
|
212
|
+
5. **Map to Dimensions:** Ensure each risk maps to at least one dimension (D1-D7)
|
|
213
|
+
6. **Create Test Cases:** Convert high-priority risks into test cases using Q-A-R-P-T format
|
|
214
|
+
|
|
215
|
+
### Consolidation Table
|
|
216
|
+
|
|
217
|
+
| Risk ID | Description | Raised By | Category | Dimension | P | I | Score |
|
|
218
|
+
|---------|-------------|-----------|----------|-----------|---|---|-------|
|
|
219
|
+
| R-001 | | | | | | | |
|
|
220
|
+
| R-002 | | | | | | | |
|
|
221
|
+
| R-003 | | | | | | | |
|
|
222
|
+
| R-004 | | | | | | | |
|
|
223
|
+
| R-005 | | | | | | | |
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Raw Test Ideas (Consolidated)
|
|
228
|
+
| # | Idea | Source Persona | Potential Dimension | Priority Estimate |
|
|
229
|
+
|---|------|---------------|--------------------|--------------------|
|
|
230
|
+
| 1 | | | | |
|
|
231
|
+
| 2 | | | | |
|
|
232
|
+
| 3 | | | | |
|
|
233
|
+
| 4 | | | | |
|
|
234
|
+
| 5 | | | | |
|
|
235
|
+
| 6 | | | | |
|
|
236
|
+
| 7 | | | | |
|
|
237
|
+
| 8 | | | | |
|
|
238
|
+
| 9 | | | | |
|
|
239
|
+
| 10 | | | | |
|
|
240
|
+
| 11 | | | | |
|
|
241
|
+
| 12 | | | | |
|
|
242
|
+
| 13 | | | | |
|
|
243
|
+
| 14 | | | | |
|
|
244
|
+
| 15 | | | | |
|
|
245
|
+
| 16 | | | | |
|
|
246
|
+
| 17 | | | | |
|
|
247
|
+
| 18 | | | | |
|
|
248
|
+
| 19 | | | | |
|
|
249
|
+
| 20 | | | | |
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# RRI-T Quality Scorecard
|
|
2
|
+
|
|
3
|
+
**Feature:** {feature-name}
|
|
4
|
+
**Date:** {YYYY-MM-DD}
|
|
5
|
+
**Assessor:** {agent/person}
|
|
6
|
+
|
|
7
|
+
## Score Calculation
|
|
8
|
+
|
|
9
|
+
### Starting Score: 100
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Violations
|
|
14
|
+
|
|
15
|
+
### Critical Violations (-10 each)
|
|
16
|
+
|
|
17
|
+
| ID | Violation | Description | Present | Penalty |
|
|
18
|
+
|----|-----------|-------------|---------|---------|
|
|
19
|
+
| CRIT-1 | Hard waits | Using sleep/wait instead of proper assertions | Y / N | -10 |
|
|
20
|
+
| CRIT-2 | Missing assertions | Test has no verification of expected outcome | Y / N | -10 |
|
|
21
|
+
| CRIT-3 | CSS selectors | Using fragile CSS selectors instead of semantic locators | Y / N | -10 |
|
|
22
|
+
| CRIT-4 | Conditional flow | Using if/else in test logic (non-deterministic) | Y / N | -10 |
|
|
23
|
+
|
|
24
|
+
**Critical Subtotal:** -{count} x 10 = -{total}
|
|
25
|
+
|
|
26
|
+
### High Violations (-5 each)
|
|
27
|
+
|
|
28
|
+
| ID | Violation | Description | Present | Penalty |
|
|
29
|
+
|----|-----------|-------------|---------|---------|
|
|
30
|
+
| HIGH-1 | No isolation | Tests share state or depend on execution order | Y / N | -5 |
|
|
31
|
+
| HIGH-2 | Duplicate setup | Same setup code repeated across tests | Y / N | -5 |
|
|
32
|
+
| HIGH-3 | Flaky test | Test fails intermittently without code changes | Y / N | -5 |
|
|
33
|
+
| HIGH-4 | Missing error coverage | No tests for error/edge cases | Y / N | -5 |
|
|
34
|
+
|
|
35
|
+
**High Subtotal:** -{count} x 5 = -{total}
|
|
36
|
+
|
|
37
|
+
### Medium Violations (-2 each)
|
|
38
|
+
|
|
39
|
+
| ID | Violation | Description | Present | Penalty |
|
|
40
|
+
|----|-----------|-------------|---------|---------|
|
|
41
|
+
| MED-1 | Vague names | Test names do not describe what is being tested | Y / N | -2 |
|
|
42
|
+
| MED-2 | File > 300 lines | Test file exceeds 300 lines | Y / N | -2 |
|
|
43
|
+
| MED-3 | Test > 90s | Individual test takes longer than 90 seconds | Y / N | -2 |
|
|
44
|
+
| MED-4 | No test ID | Test cases lack unique identifiers | Y / N | -2 |
|
|
45
|
+
|
|
46
|
+
**Medium Subtotal:** -{count} x 2 = -{total}
|
|
47
|
+
|
|
48
|
+
### Low Violations (-1 each)
|
|
49
|
+
|
|
50
|
+
| ID | Violation | Description | Present | Penalty |
|
|
51
|
+
|----|-----------|-------------|---------|---------|
|
|
52
|
+
| LOW-1 | Style inconsistency | Inconsistent naming, formatting, or structure | Y / N | -1 |
|
|
53
|
+
| LOW-2 | Missing comment | Complex logic without explanatory comment | Y / N | -1 |
|
|
54
|
+
|
|
55
|
+
**Low Subtotal:** -{count} x 1 = -{total}
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Violation Tracking
|
|
60
|
+
|
|
61
|
+
| ID | Description | Severity | Penalty | File/Line |
|
|
62
|
+
|----|-------------|----------|---------|-----------|
|
|
63
|
+
| V-001 | | CRIT / HIGH / MED / LOW | | |
|
|
64
|
+
| V-002 | | | | |
|
|
65
|
+
| V-003 | | | | |
|
|
66
|
+
| V-004 | | | | |
|
|
67
|
+
| V-005 | | | | |
|
|
68
|
+
|
|
69
|
+
**Total Penalties:** -{total}
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Bonuses (+5 each, max +30)
|
|
74
|
+
|
|
75
|
+
| ID | Criteria | Description | Present | Points |
|
|
76
|
+
|----|----------|-------------|---------|--------|
|
|
77
|
+
| BON-1 | Semantic locators | Uses data-testid, aria-label, role selectors | Y / N | +5 |
|
|
78
|
+
| BON-2 | Data factories | Uses factories/fixtures for test data | Y / N | +5 |
|
|
79
|
+
| BON-3 | Network-first | Mocks/intercepts network for determinism | Y / N | +5 |
|
|
80
|
+
| BON-4 | Isolation | Each test is fully independent | Y / N | +5 |
|
|
81
|
+
| BON-5 | Test IDs | All test cases have unique TC-XXX identifiers | Y / N | +5 |
|
|
82
|
+
| BON-6 | BDD style | Uses Given/When/Then or similar structure | Y / N | +5 |
|
|
83
|
+
|
|
84
|
+
**Total Bonuses:** +{total} (capped at +30)
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Final Score Calculation
|
|
89
|
+
|
|
90
|
+
| Component | Value |
|
|
91
|
+
|-----------|-------|
|
|
92
|
+
| Starting Score | 100 |
|
|
93
|
+
| Critical Penalties | -{total} |
|
|
94
|
+
| High Penalties | -{total} |
|
|
95
|
+
| Medium Penalties | -{total} |
|
|
96
|
+
| Low Penalties | -{total} |
|
|
97
|
+
| Bonuses | +{total} |
|
|
98
|
+
| **Final Score** | **{score}** |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Grade
|
|
103
|
+
|
|
104
|
+
| Grade | Score Range | Description |
|
|
105
|
+
|-------|-------------|-------------|
|
|
106
|
+
| A+ | 90-100+ | Excellent - production ready |
|
|
107
|
+
| A | 80-89 | Good - minor improvements suggested |
|
|
108
|
+
| B | 70-79 | Acceptable - improvements needed |
|
|
109
|
+
| C | 60-69 | Below standard - significant issues |
|
|
110
|
+
| F | < 60 | Failing - major rework required |
|
|
111
|
+
|
|
112
|
+
**Final Grade:** {grade}
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Recommendations
|
|
117
|
+
|
|
118
|
+
| Priority | Recommendation |
|
|
119
|
+
|----------|----------------|
|
|
120
|
+
| 1 | |
|
|
121
|
+
| 2 | |
|
|
122
|
+
| 3 | |
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# RRI-T Risk Matrix
|
|
2
|
+
|
|
3
|
+
**Feature:** {feature-name}
|
|
4
|
+
**Owner:** {owner}
|
|
5
|
+
**Date:** {YYYY-MM-DD}
|
|
6
|
+
**Build:** {build-id}
|
|
7
|
+
|
|
8
|
+
## Risk Register
|
|
9
|
+
|
|
10
|
+
| ID | Risk Description | Category | Probability | Impact | Score | Mitigation | Status |
|
|
11
|
+
|----|------------------|----------|-------------|--------|-------|------------|--------|
|
|
12
|
+
| R-001 | API rate limiting not tested under load | PERF | 2 | 3 | 6 | Add load test for 100 concurrent users | OPEN |
|
|
13
|
+
| R-002 | User session not invalidated on role change | SEC | 2 | 3 | 6 | Test role revocation mid-session | OPEN |
|
|
14
|
+
| R-003 | Offline sync may duplicate items on reconnect | DATA | 3 | 2 | 6 | Test offline queue with 50+ pending changes | OPEN |
|
|
15
|
+
| R-004 | | | | | | | |
|
|
16
|
+
| R-005 | | | | | | | |
|
|
17
|
+
| R-006 | | | | | | | |
|
|
18
|
+
| R-007 | | | | | | | |
|
|
19
|
+
| R-008 | | | | | | | |
|
|
20
|
+
| R-009 | | | | | | | |
|
|
21
|
+
| R-010 | | | | | | | |
|
|
22
|
+
|
|
23
|
+
## Scoring Guide
|
|
24
|
+
|
|
25
|
+
### Probability
|
|
26
|
+
|
|
27
|
+
| Score | Definition |
|
|
28
|
+
|-------|------------|
|
|
29
|
+
| 1 | Unlikely - well-tested area, minor change |
|
|
30
|
+
| 2 | Possible - moderate complexity, some unknowns |
|
|
31
|
+
| 3 | Likely - new area, high complexity, many dependencies |
|
|
32
|
+
|
|
33
|
+
### Impact
|
|
34
|
+
|
|
35
|
+
| Score | Definition |
|
|
36
|
+
|-------|------------|
|
|
37
|
+
| 1 | Low - cosmetic, workaround exists |
|
|
38
|
+
| 2 | Medium - feature degraded, user friction |
|
|
39
|
+
| 3 | High - data loss, security breach, revenue impact |
|
|
40
|
+
|
|
41
|
+
### Risk Score = Probability x Impact
|
|
42
|
+
|
|
43
|
+
| Score | Level | Action |
|
|
44
|
+
|-------|-------|--------|
|
|
45
|
+
| 1-2 | LOW | Monitor, test if time permits |
|
|
46
|
+
| 3-5 | MEDIUM | Test with standard coverage |
|
|
47
|
+
| 6-8 | HIGH | Requires mitigation before release |
|
|
48
|
+
| 9 | CRITICAL | Blocks release if unmitigated |
|
|
49
|
+
|
|
50
|
+
## Category Definitions
|
|
51
|
+
|
|
52
|
+
| Code | Category | Description |
|
|
53
|
+
|------|----------|-------------|
|
|
54
|
+
| TECH | Technical | Architecture fragility, integration issues, technical debt |
|
|
55
|
+
| SEC | Security | Authentication, authorization, data exposure, vulnerabilities |
|
|
56
|
+
| PERF | Performance | Response time, throughput, scalability, resource usage |
|
|
57
|
+
| DATA | Data | Integrity, corruption, loss, migration, consistency |
|
|
58
|
+
| BUS | Business | Logic errors, calculation mistakes, workflow issues |
|
|
59
|
+
| OPS | Operational | Deployment, monitoring, recovery, configuration |
|
|
60
|
+
|
|
61
|
+
## Threshold Rules
|
|
62
|
+
|
|
63
|
+
- Score >= 6: Requires documented mitigation plan
|
|
64
|
+
- Score = 9: Blocks release until mitigated and verified
|
|
65
|
+
- SEC category: Always requires security dimension testing
|
|
66
|
+
- DATA category: Always requires data integrity dimension testing
|
|
67
|
+
|
|
68
|
+
## Risk Summary
|
|
69
|
+
|
|
70
|
+
| Metric | Value |
|
|
71
|
+
|--------|-------|
|
|
72
|
+
| Total Risks | {count} |
|
|
73
|
+
| High (>= 6) | {count} |
|
|
74
|
+
| Critical (= 9) | {count} |
|
|
75
|
+
| Mitigated | {count} |
|
|
76
|
+
| Open | {count} |
|
|
77
|
+
|
|
78
|
+
## Risk by Category
|
|
79
|
+
|
|
80
|
+
| Category | Count | Highest Score |
|
|
81
|
+
|----------|-------|---------------|
|
|
82
|
+
| TECH | | |
|
|
83
|
+
| SEC | | |
|
|
84
|
+
| PERF | | |
|
|
85
|
+
| DATA | | |
|
|
86
|
+
| BUS | | |
|
|
87
|
+
| OPS | | |
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# RRI-T Stress Matrix Template
|
|
2
|
+
|
|
3
|
+
## Feature
|
|
4
|
+
- Name: <feature-name>
|
|
5
|
+
- Owner: <owner>
|
|
6
|
+
- Date: <yyyy-mm-dd>
|
|
7
|
+
- Build/Release: <build-id>
|
|
8
|
+
- Environment: <dev/staging/prod>
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
This template covers RRI-T 8-axis stress testing for a household management app
|
|
12
|
+
(inventory, meal planning, shopping lists, finances).
|
|
13
|
+
|
|
14
|
+
## Stress Axes Summary
|
|
15
|
+
| Axis | Name | Focus | Notes |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| 1 | TIME | Deadlines, bulk ops, timeouts | Burst actions, long-running jobs |
|
|
18
|
+
| 2 | DATA | 1000+ rows, search/filter speed | Large inventory, long history |
|
|
19
|
+
| 3 | ERROR | Undo/redo, auto-save recovery, messages | Resilience, recoverability |
|
|
20
|
+
| 4 | COLLAB | Concurrent editing, conflicts, multi-user | Household members overlap |
|
|
21
|
+
| 5 | EMERGENCY | Interruptions, crash recovery | Browser/device failures |
|
|
22
|
+
| 6 | SECURITY | Access revocation, audit logs, session expiry | Role changes, expiring auth |
|
|
23
|
+
| 7 | INFRA | Server crash, RTO<15m, RPO<5m, offline | Service resilience |
|
|
24
|
+
| 8 | LOCALE | Vietnamese diacritics, VND, GMT+7, overflow | Local UX correctness |
|
|
25
|
+
|
|
26
|
+
## Axis Combination Matrix (Test Where X)
|
|
27
|
+
| Axis | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
|
28
|
+
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
29
|
+
| 1 TIME | - | X | X | X | X | X | X | X |
|
|
30
|
+
| 2 DATA | X | - | X | X | | X | X | X |
|
|
31
|
+
| 3 ERROR | X | X | - | X | X | | X | X |
|
|
32
|
+
| 4 COLLAB | X | X | X | - | | X | | X |
|
|
33
|
+
| 5 EMERGENCY | X | | X | | - | X | X | |
|
|
34
|
+
| 6 SECURITY | X | X | | X | X | - | X | X |
|
|
35
|
+
| 7 INFRA | X | X | X | | X | X | - | X |
|
|
36
|
+
| 8 LOCALE | X | X | X | X | | X | X | - |
|
|
37
|
+
|
|
38
|
+
## Stress Scenarios
|
|
39
|
+
|
|
40
|
+
### Axis 1: TIME
|
|
41
|
+
| # | Scenario | Steps | Expected | Priority |
|
|
42
|
+
| --- | --- | --- | --- | --- |
|
|
43
|
+
| S-TIME-001 | Bulk add 500 pantry items before dinner | Start timer 2 min, import CSV of pantry items | Import completes, progress visible, no timeout | P1 |
|
|
44
|
+
| S-TIME-002 | Rapid meal plan edits during 10-min window | Update 10 meals in 60s, save each | Saves succeed, no stale data, UI responsive | P1 |
|
|
45
|
+
| S-TIME-003 | Shopping list sync under poor network | Add 30 items quickly, toggle offline/online | Sync resolves within 60s, no duplicates | P2 |
|
|
46
|
+
| S-TIME-004 | Finance entry auto-save timeout | Create expense, wait 45s idle, resume edit | Auto-save persists, no data loss | P2 |
|
|
47
|
+
|
|
48
|
+
### Axis 2: DATA
|
|
49
|
+
| # | Scenario | Steps | Expected | Priority |
|
|
50
|
+
| S-DATA-001 | Inventory list 1000+ items | Load inventory with 1200 items | Scroll, search, filter remain under 2s | P1 |
|
|
51
|
+
| S-DATA-002 | Shopping history filter speed | Filter 800 past purchases by category | Results appear under 2s, no UI freeze | P2 |
|
|
52
|
+
| S-DATA-003 | Meal plan calendar 6 months | Open 6-month plan view with 180 entries | Render within 3s, no layout shift | P2 |
|
|
53
|
+
| S-DATA-004 | Finance ledger export 2000 rows | Export 2k ledger rows to CSV | Export completes, file accurate | P2 |
|
|
54
|
+
|
|
55
|
+
### Axis 3: ERROR
|
|
56
|
+
| # | Scenario | Steps | Expected | Priority |
|
|
57
|
+
| S-ERROR-001 | Undo/redo inventory quantity changes | Change item qty 5 times, undo 5, redo 5 | Exact state restored each step | P1 |
|
|
58
|
+
| S-ERROR-002 | Auto-save recovery after crash | Edit meal notes, force close tab, reopen | Draft restored with last autosave | P1 |
|
|
59
|
+
| S-ERROR-003 | Validation error messages | Add expense with negative value | Clear inline error, no save | P2 |
|
|
60
|
+
| S-ERROR-004 | Failed bulk import rollback | Import malformed CSV for pantry | No partial data, error list shown | P1 |
|
|
61
|
+
|
|
62
|
+
### Axis 4: COLLAB
|
|
63
|
+
| # | Scenario | Steps | Expected | Priority |
|
|
64
|
+
| S-COLLAB-001 | Two users edit shopping list | User A adds 5 items, User B deletes 2 | Conflict warning, final list consistent | P1 |
|
|
65
|
+
| S-COLLAB-002 | Concurrent budget updates | Two users change monthly budget | Latest change prompts merge dialog | P2 |
|
|
66
|
+
| S-COLLAB-003 | Shared meal plan edit | User A updates recipe, User B updates servings | Both changes applied without loss | P2 |
|
|
67
|
+
| S-COLLAB-004 | New member joins household | Invite new user during active edits | New user sees updated list | P3 |
|
|
68
|
+
|
|
69
|
+
### Axis 5: EMERGENCY
|
|
70
|
+
| # | Scenario | Steps | Expected | Priority |
|
|
71
|
+
| S-EMERGENCY-001 | Browser crash while editing | Edit grocery item notes, kill browser | Reopen, draft restored | P1 |
|
|
72
|
+
| S-EMERGENCY-002 | Power loss during bulk update | Start bulk pantry update, go offline | Partial changes queued or rolled back | P1 |
|
|
73
|
+
| S-EMERGENCY-003 | Device sleep mid-sync | Start sync, close laptop lid | Resume sync without duplication | P2 |
|
|
74
|
+
| S-EMERGENCY-004 | App reload mid-transaction | Save expense, hit refresh instantly | No double charge, one entry saved | P2 |
|
|
75
|
+
|
|
76
|
+
### Axis 6: SECURITY
|
|
77
|
+
| # | Scenario | Steps | Expected | Priority |
|
|
78
|
+
| S-SECURITY-001 | Access revoked during edit | Admin removes user role mid-edit | User warned, changes blocked, data safe | P1 |
|
|
79
|
+
| S-SECURITY-002 | Session expiry while shopping | Session expires, user adds item | Redirect to login, item queued | P1 |
|
|
80
|
+
| S-SECURITY-003 | Audit log for finance edits | Edit expense amount | Audit entry with user, time, change | P2 |
|
|
81
|
+
| S-SECURITY-004 | Private list access attempt | Non-member tries to open list | Access denied, no data leak | P1 |
|
|
82
|
+
|
|
83
|
+
### Axis 7: INFRA
|
|
84
|
+
| # | Scenario | Steps | Expected | Priority |
|
|
85
|
+
| S-INFRA-001 | Server crash during sync | Trigger sync, kill server | Retry logic, no data loss | P1 |
|
|
86
|
+
| S-INFRA-002 | RTO < 15m recovery | Simulate outage, restore service | Service back within 15m, status updated | P1 |
|
|
87
|
+
| S-INFRA-003 | RPO < 5m data recovery | Create 3 entries, failover | Max 5m data loss, latest persists | P1 |
|
|
88
|
+
| S-INFRA-004 | Offline mode for shopping list | Go offline, add 10 items | Local cache used, sync on reconnect | P2 |
|
|
89
|
+
|
|
90
|
+
### Axis 8: LOCALE
|
|
91
|
+
| # | Scenario | Steps | Expected | Priority |
|
|
92
|
+
| S-LOCALE-001 | Diacritic-insensitive search | Search "nguyen" in household members | Finds "Nguyen" matches | P1 |
|
|
93
|
+
| S-LOCALE-002 | VND currency formatting | View finance summary | Shows "1.000.000d" not "1,000,000" | P1 |
|
|
94
|
+
| S-LOCALE-003 | Vietnamese text overflow | Open long Vietnamese recipe names | No overflow, wraps cleanly | P2 |
|
|
95
|
+
| S-LOCALE-004 | Date format DD/MM/YYYY | View meal plan date header | Displays DD/MM/YYYY | P1 |
|
|
96
|
+
|
|
97
|
+
## Notes
|
|
98
|
+
- Attach logs, screenshots, and timings for any P1 or P2 failures.
|
|
99
|
+
- Capture device, OS, browser, and network conditions.
|
|
100
|
+
- Link to any incident or bug IDs created from results.
|