jsharness 1.0.0
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/.harness/README.md +199 -0
- package/.harness/agents/code-reviewer/contract.yaml +64 -0
- package/.harness/agents/developer/contract.yaml +72 -0
- package/.harness/agents/gate-controller/contract.yaml +64 -0
- package/.harness/agents/project-manager/contract.yaml +77 -0
- package/.harness/agents/prompt-templates.md +352 -0
- package/.harness/agents/requirements-analyst/contract.yaml +64 -0
- package/.harness/agents/solution-designer/contract.yaml +75 -0
- package/.harness/agents/tester/contract.yaml +92 -0
- package/.harness/config/models.yaml +67 -0
- package/.harness/dev-map/backend/api-definition.md +131 -0
- package/.harness/dev-map/backend/auth-security.md +131 -0
- package/.harness/dev-map/backend/conventions-java.md +471 -0
- package/.harness/dev-map/backend/conventions.md +192 -0
- package/.harness/dev-map/backend/database.md +106 -0
- package/.harness/dev-map/backend/structure.md +140 -0
- package/.harness/dev-map/decisions.md +275 -0
- package/.harness/dev-map/frontend/api-integration.md +139 -0
- package/.harness/dev-map/frontend/components.md +178 -0
- package/.harness/dev-map/frontend/conventions.md +416 -0
- package/.harness/dev-map/frontend/state-management.md +170 -0
- package/.harness/dev-map/frontend/structure.md +103 -0
- package/.harness/dev-map/overview.md +267 -0
- package/.harness/docs/integration-test-plan.md +248 -0
- package/.harness/docs/team-guidelines/README.md +161 -0
- package/.harness/docs/team-guidelines/arch-team.md +811 -0
- package/.harness/docs/team-guidelines/collaboration.md +556 -0
- package/.harness/docs/team-guidelines/pm-team.md +337 -0
- package/.harness/docs/team-guidelines/qa-team.md +562 -0
- package/.harness/docs/team-guidelines/rd-team.md +714 -0
- package/.harness/docs/training-materials.md +280 -0
- package/.harness/gate/baseline.js +220 -0
- package/.harness/gate/checks/build-gates-frontend.js +152 -0
- package/.harness/gate/checks/build-gates-java.js +155 -0
- package/.harness/gate/checks/build-gates.js +119 -0
- package/.harness/gate/checks/engineering-consistency.js +138 -0
- package/.harness/gate/checks/security-quality.js +129 -0
- package/.harness/gate/checks/static-compliance.js +313 -0
- package/.harness/gate/checks/test-compliance.js +114 -0
- package/.harness/gate/index.js +315 -0
- package/.harness/mcp/config.yaml +435 -0
- package/.harness/rules/global/coding-standard.md +232 -0
- package/.harness/rules/global/commit-convention.md +165 -0
- package/.harness/rules/global/process-discipline.md +192 -0
- package/.harness/rules/global/security-baseline.md +306 -0
- package/.harness/rules/project/frontend-vue3.md +293 -0
- package/.harness/rules/project/java-backend.md +460 -0
- package/.harness/rules/project/web-specific.md +231 -0
- package/.harness/skills/build.md +192 -0
- package/.harness/skills/code-review.md +251 -0
- package/.harness/skills/docker-build.md +227 -0
- package/.harness/skills/docs-update.md +164 -0
- package/.harness/skills/java-build.md +261 -0
- package/.harness/skills/lint-check.md +482 -0
- package/.harness/skills/task-board-maintenance.md +105 -0
- package/.harness/skills/test-api.md +461 -0
- package/.harness/skills/test-e2e.md +431 -0
- package/.harness/skills/test-unit.md +649 -0
- package/.harness/skills/vue-frontend-build.md +344 -0
- package/.harness/specs/quality-feedback/implementation-guide.md +350 -0
- package/.harness/task-board.md +121 -0
- package/.harness/workflow/definition.yaml +504 -0
- package/.harness/workflow/validate.js +320 -0
- package/.harness/workflow/variants.yaml +253 -0
- package/README.md +237 -0
- package/bin/jsharness.js +53 -0
- package/lib/index.mjs +778 -0
- package/package.json +1 -0
|
@@ -0,0 +1,562 @@
|
|
|
1
|
+
# 测试团队 (QA) Harness 使用规范
|
|
2
|
+
|
|
3
|
+
> **适用角色**: 测试工程师、QA 工程师、SDET
|
|
4
|
+
> **对应 Agent**: 测试验证 Agent (tester)
|
|
5
|
+
> **模型档位**: Strong(强模型,确保测试深度)
|
|
6
|
+
> **参考契约**: `.harness/agents/tester/contract.yaml`
|
|
7
|
+
> **参考 Prompt**: `.harness/agents/prompt-templates.md` → 测试验证 Agent 部分
|
|
8
|
+
> **技能参考**: `skills/test-unit.md` / `skills/test-e2e.md` / `skills/test-api.md`
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 一、角色定位:你是质量的最终守门员
|
|
13
|
+
|
|
14
|
+
### 1.1 核心职责
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
┌────────────────────────────────────────────────┐
|
|
18
|
+
│ QA 团队的五大核心职责 │
|
|
19
|
+
├────────────────────────────────────────────────┤
|
|
20
|
+
│ ① 制定测试策略 — 根据需求和风险规划测试方案 │
|
|
21
|
+
│ ② 设计测试用例 — 基于验收标准设计全面用例 │
|
|
22
|
+
│ ③ 执行测试 — 按计划执行各类测试 │
|
|
23
|
+
│ ④ 缺陷管理 — 发现、记录、跟踪、验证缺陷 │
|
|
24
|
+
│ ⑤ 质量评估 — 输出 PASS/FAIL 结论和测试报告 │
|
|
25
|
+
└────────────────────────────────────────────────┘
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 1.2 绝对禁止做的事
|
|
29
|
+
|
|
30
|
+
| # | 禁止行为 | 后果 |
|
|
31
|
+
|---|---------|------|
|
|
32
|
+
| 1 | **降低验收标准以通过** | 严重违规,测试结果作废 |
|
|
33
|
+
| 2 | **省略必测项目**(如跳过 E2E) | 测试报告无效 |
|
|
34
|
+
| 3 | **修改被测代码**来让测试通过 | 致命违规,通报处理 |
|
|
35
|
+
| 4 | **隐瞒已知缺陷** | 绩效一票否决 |
|
|
36
|
+
| 5 | **P0/P1 缺陷不立即阻断升级** | 追究责任 |
|
|
37
|
+
| 6 | **无测试依据地给出 PASS 结论** | 测试无效重做 |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 二、测试覆盖矩阵
|
|
42
|
+
|
|
43
|
+
### 2.1 测试分层与责任划分
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
┌─────────────────────┐
|
|
47
|
+
│ 生产环境监控 │
|
|
48
|
+
│ (线上告警/日志) │
|
|
49
|
+
└─────────┬───────────┘
|
|
50
|
+
│
|
|
51
|
+
┌─────────▼───────────┐
|
|
52
|
+
│ E2E 关键路径测试 │ ◀── QA 负责(预发布前)
|
|
53
|
+
│ (真实用户场景模拟) │
|
|
54
|
+
└─────────┬───────────┘
|
|
55
|
+
│
|
|
56
|
+
┌──────────────────┼──────────────────┐
|
|
57
|
+
│ │ │
|
|
58
|
+
┌──────▼──────┐ ┌───────▼───────┐ ┌──────▼──────┐
|
|
59
|
+
│ API 集成测试 │ │ 单元测试 │ │ 静态检查 │
|
|
60
|
+
│ (接口契约) │ │ (逻辑正确性) │ │ (Lint/安全) │
|
|
61
|
+
└──────┬──────┘ └───────┬───────┘ └──────┬──────┘
|
|
62
|
+
│ │ │
|
|
63
|
+
QA 负责 Dev 负责 Gate 自动化
|
|
64
|
+
(PR 前) (开发时) (每次 commit)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 2.2 各层测试详细要求
|
|
68
|
+
|
|
69
|
+
| 测试类型 | 执行时机 | 执行者 | 通过标准 | 参考技能文档 |
|
|
70
|
+
|---------|---------|--------|---------|-------------|
|
|
71
|
+
| **静态检查** | 每次 commit | Gate 自动 | 零 error | `skills/lint-check.md` |
|
|
72
|
+
| **单元测试** | 开发阶段 | Developer | 覆盖率达标 + 全部通过 | `skills/test-unit.md` |
|
|
73
|
+
| **API 集成测试** | PR 合并前 | **QA** | 无破坏性变更 + 全部通过 | `skills/test-api.md` |
|
|
74
|
+
| **E2E 关键路径** | 预发布前 | **QA** | 核心路径 100% 通过 | `skills/test-e2e.md` |
|
|
75
|
+
| **安全扫描** | 每次 build | Gate 自动 | 零 HIGH/CRITICAL | `gate/checks/security-quality.js` |
|
|
76
|
+
| **性能测试** | 发布前(按需) | **QA** | 满足 NFR 指标 | 自定义方案 |
|
|
77
|
+
| **回归测试** | 发布前 | **QA** | 零 P0/P1 回归 | `skills/test-e2e.md` |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 三、测试工作流详解
|
|
82
|
+
|
|
83
|
+
### 3.1 ⑥ 测试验证阶段 — 主流程
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
进入测试阶段
|
|
87
|
+
│
|
|
88
|
+
▼
|
|
89
|
+
① 阅读需求文档 + 验收标准 + 设计文档
|
|
90
|
+
│
|
|
91
|
+
▼
|
|
92
|
+
② 制定测试计划(test-plan.md)
|
|
93
|
+
│
|
|
94
|
+
▼
|
|
95
|
+
③ 设计测试用例(基于 Given/When/Then)
|
|
96
|
+
│
|
|
97
|
+
▼
|
|
98
|
+
④ 设置测试环境和测试数据
|
|
99
|
+
│
|
|
100
|
+
▼
|
|
101
|
+
⑤ 执行测试(按优先级顺序)
|
|
102
|
+
│
|
|
103
|
+
├─ P0 用例 → 全部通过?
|
|
104
|
+
│ └─ NO → 🔴 立即阻断,报 P0 缺陷
|
|
105
|
+
│
|
|
106
|
+
├─ P1 用例 → 全部通过?
|
|
107
|
+
│ └─ NO → 🟠 报 P1 缺陷,打回开发修复
|
|
108
|
+
│
|
|
109
|
+
├─ P2/P3 用例 → 通过?
|
|
110
|
+
│ └─ NO → 🟡 记录缺陷,可后续修复
|
|
111
|
+
│
|
|
112
|
+
▼
|
|
113
|
+
⑥ 执行回归测试
|
|
114
|
+
│
|
|
115
|
+
▼
|
|
116
|
+
⑦ 运行 Gate 安全+一致性检查
|
|
117
|
+
│
|
|
118
|
+
▼
|
|
119
|
+
⑧ 输出测试报告
|
|
120
|
+
│
|
|
121
|
+
▼
|
|
122
|
+
⑨ 做出 PASS/FIX_AND_RETEST 裁决
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 3.2 测试计划模板
|
|
126
|
+
|
|
127
|
+
```markdown
|
|
128
|
+
# 测试计划: {任务名称}
|
|
129
|
+
|
|
130
|
+
## 基本信息
|
|
131
|
+
- **任务ID**: TASK-YYYY-NNN
|
|
132
|
+
- **测试负责人**: {姓名}
|
|
133
|
+
- **计划开始日期**: YYYY-MM-DD
|
|
134
|
+
- **预计完成日期**: YYYY-MM-DD
|
|
135
|
+
- **关联需求**: {requirements-{id}.md}
|
|
136
|
+
- **关联设计**: {design-{id}.md}
|
|
137
|
+
|
|
138
|
+
## 测试范围
|
|
139
|
+
### 包含
|
|
140
|
+
- 功能模块 A:xxx
|
|
141
|
+
- 功能模块 B:xxx
|
|
142
|
+
- API 端点:GET /api/xxx, POST /api/xxx
|
|
143
|
+
- E2E 场景:用户注册→登录→下单
|
|
144
|
+
|
|
145
|
+
### 不包含
|
|
146
|
+
- (明确写出本次不测什么及原因)
|
|
147
|
+
- 第三方支付回调(依赖外部环境)
|
|
148
|
+
- 性能测试(单独安排)
|
|
149
|
+
|
|
150
|
+
## 测试策略
|
|
151
|
+
| 层级 | 方法 | 工具 | 用例数估计 |
|
|
152
|
+
|-----|------|-----|-----------|
|
|
153
|
+
| API 集成测试 | 契约测试 | Jest/Supertest | ~XX |
|
|
154
|
+
| E2E 测试 | 关键路径 | Playwright/Cypress | ~XX |
|
|
155
|
+
| 回归测试 | 冒烟+全量 | 组合工具 | ~XX |
|
|
156
|
+
| 安全扫描 | 自动化 | npm audit/Snyk | 自动 |
|
|
157
|
+
|
|
158
|
+
## 测试环境
|
|
159
|
+
- **前端地址**: http://localhost:{port}
|
|
160
|
+
- **后端地址**: http://localhost:{port}
|
|
161
|
+
- **数据库**: {类型}://{host}:{port}/{db}
|
|
162
|
+
- **测试数据**: 使用 seed 脚本初始化
|
|
163
|
+
|
|
164
|
+
## 准入条件
|
|
165
|
+
- [ ] 代码审查通过(PASS 或 条件 PASS)
|
|
166
|
+
- [ ] 开发自检通过(Build/Test/Lint)
|
|
167
|
+
- [ ] 部署到测试环境成功
|
|
168
|
+
- [ ] 测试数据准备完毕
|
|
169
|
+
|
|
170
|
+
## 风险与应对
|
|
171
|
+
| 风险 | 影响 | 概率 | 应对措施 |
|
|
172
|
+
|-----|------|-----|---------|
|
|
173
|
+
| 环境不稳定 | 测试误判 | 中 | 重试机制 + 环境检查脚本 |
|
|
174
|
+
| 第三方服务不可用 | 部分用例跳过 | 低 | Mock 方案 |
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 3.3 测试用例设计规范
|
|
178
|
+
|
|
179
|
+
#### 基于 Given/When/Then 格式
|
|
180
|
+
|
|
181
|
+
```markdown
|
|
182
|
+
## TC-{编号}: {用例名称}
|
|
183
|
+
|
|
184
|
+
**优先级**: P0/P1/P2/P3
|
|
185
|
+
**前置条件**: {测试前的系统状态}
|
|
186
|
+
**验收标准关联**: AC-{编号}
|
|
187
|
+
|
|
188
|
+
### Given(给定)
|
|
189
|
+
{系统处于某个状态 / 某些数据已存在 / 用户已登录等}
|
|
190
|
+
|
|
191
|
+
### When(当)
|
|
192
|
+
{执行某个操作 / 调用某个 API / 点击某个按钮}
|
|
193
|
+
|
|
194
|
+
### Then(那么)
|
|
195
|
+
{期望的结果 / 返回值 / 状态变化}
|
|
196
|
+
|
|
197
|
+
### 示例数据
|
|
198
|
+
```json
|
|
199
|
+
{"input": "...", "expected_output": "..."}
|
|
200
|
+
```
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**具体示例**:
|
|
204
|
+
|
|
205
|
+
```markdown
|
|
206
|
+
## TC-001: 用户使用有效凭证成功登录
|
|
207
|
+
|
|
208
|
+
**优先级**: P0
|
|
209
|
+
**前置条件**: 用户已在系统中注册且状态正常
|
|
210
|
+
**验收标准关联**: AC-01
|
|
211
|
+
|
|
212
|
+
### Given
|
|
213
|
+
- 系统正常运行
|
|
214
|
+
- 数据库中存在用户:username="testuser", password="Test@123456"
|
|
215
|
+
- 该用户状态为"正常"
|
|
216
|
+
|
|
217
|
+
### When
|
|
218
|
+
- 用户访问登录页面 `/login`
|
|
219
|
+
- 输入用户名:"testuser"
|
|
220
|
+
- 输入密码:"Test@123456"
|
|
221
|
+
- 点击"登录"按钮
|
|
222
|
+
|
|
223
|
+
### Then
|
|
224
|
+
- 页面跳转到首页 `/dashboard`
|
|
225
|
+
- 显示欢迎信息:"你好,testuser"
|
|
226
|
+
- 返回 HTTP 200
|
|
227
|
+
- Response Body 包含有效的 token
|
|
228
|
+
- token 有效期为 24 小时
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### 3.4 缺陷管理规范
|
|
232
|
+
|
|
233
|
+
#### 缺陷分级标准
|
|
234
|
+
|
|
235
|
+
| 等级 | 定义 | 响应时间 | 修复时限 | 示例 |
|
|
236
|
+
|-----|------|---------|---------|------|
|
|
237
|
+
| **P0 致命** | 系统崩溃、数据丢失、安全漏洞 | 立即阻断 | 立即 | 生产宕机、DB 删除错乱、SQL 注入 |
|
|
238
|
+
| **P1 严重** | 核心功能不可用、无 workaround | 24h 内修复 | 24h | 登录失败、支付失败、关键 API 500 |
|
|
239
|
+
| **P2 一般** | 功能异常但有 workaround | 本迭代内 | 3-5 天 | 搜索结果排序错误、样式偏移 |
|
|
240
|
+
| **P3 轻微** | UI 瑕疵、体验问题 | 下版本 | 下迭代 | 按钮 hover 颜色不一致 |
|
|
241
|
+
| **P4 建议** | 优化项、锦上添花 | 待定 | 待定 | 加载动画不够流畅 |
|
|
242
|
+
|
|
243
|
+
#### 缺陷报告模板
|
|
244
|
+
|
|
245
|
+
```markdown
|
|
246
|
+
# 缺陷报告: DEF-{YYYY}-{NNN}
|
|
247
|
+
|
|
248
|
+
## 基本信息
|
|
249
|
+
- **标题**: {简洁描述缺陷}
|
|
250
|
+
- **严重程度**: P0/P1/P2/P3/P4
|
|
251
|
+
- **优先级**: 紧急/高/中/低
|
|
252
|
+
- **状态**: 新建/已确认/修复中/待验证/已关闭/重新打开
|
|
253
|
+
- **报告人**: {姓名}
|
|
254
|
+
- **报告日期**: YYYY-MM-DD HH:MM
|
|
255
|
+
- **指派给**: {开发者姓名}
|
|
256
|
+
- **关联任务**: TASK-YYYY-NNN
|
|
257
|
+
- **关联用例**: TC-XXX
|
|
258
|
+
|
|
259
|
+
## 环境
|
|
260
|
+
- **浏览器**: Chrome 120.0 / Firefox 121.0 / Safari 17.1
|
|
261
|
+
- **操作系统**: Windows 11 / macOS 14 / Ubuntu 22.04
|
|
262
|
+
- **设备**: Desktop / iPhone 15 Pro / Android 14
|
|
263
|
+
- **测试环境**: staging / test
|
|
264
|
+
- **应用版本**: v1.x.x (commit: abc1234)
|
|
265
|
+
|
|
266
|
+
## 复现步骤
|
|
267
|
+
1. 打开页面 `{URL}`
|
|
268
|
+
2. 操作:{具体操作步骤}
|
|
269
|
+
3. 输入:{具体输入数据}
|
|
270
|
+
4. 点击:{按钮/链接}
|
|
271
|
+
|
|
272
|
+
## 期望结果
|
|
273
|
+
{描述预期的正确行为}
|
|
274
|
+
|
|
275
|
+
## 实际结果
|
|
276
|
+
{描述观察到的错误行为}
|
|
277
|
+
|
|
278
|
+
## 附件
|
|
279
|
+
- 截图: {截图文件}
|
|
280
|
+
- 日志: {日志片段}
|
|
281
|
+
- 录屏: {GIF/视频链接}
|
|
282
|
+
|
|
283
|
+
## 根因分析(可选)
|
|
284
|
+
{初步判断的可能原因}
|
|
285
|
+
|
|
286
|
+
## 建议
|
|
287
|
+
{给开发者的修复建议(可选)}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
#### 缺陷生命周期
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
新建 → QA确认有效性 → 指派给开发者 → 开发者修复
|
|
294
|
+
→ 修复完成 → QA回归验证
|
|
295
|
+
├── 通过 → 关闭缺陷 ✓
|
|
296
|
+
└── 未通过 → 重新打开 → 回到开发者
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### 3.5 PASS 条件
|
|
300
|
+
|
|
301
|
+
**测试阶段 PASS 的必要条件(全部满足)**:
|
|
302
|
+
|
|
303
|
+
| 条件 | 标准 | 检查方式 |
|
|
304
|
+
|-----|------|---------|
|
|
305
|
+
| P0 缺陷 | **= 0** | 缺陷列表统计 |
|
|
306
|
+
| P1 缺陷 | **= 0** | 缺陷列表统计 |
|
|
307
|
+
| 核心 E2E 路径 | **100% 通过** | E2E 测试报告 |
|
|
308
|
+
| API 契约 | **无破坏性变更** | API 对比测试 |
|
|
309
|
+
| 测试覆盖率 | **不低于基线** | Gate C 类报告 |
|
|
310
|
+
| 安全扫描 | **零 HIGH/CRITICAL** | Gate D 类报告 |
|
|
311
|
+
|
|
312
|
+
**任一条件不满足 → FIX_AND_RETEST(打回开发修复后重测)**
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## 四、特殊场景处理
|
|
317
|
+
|
|
318
|
+
### 4.1 发现安全漏洞时的处理
|
|
319
|
+
|
|
320
|
+
```
|
|
321
|
+
发现疑似安全问题
|
|
322
|
+
│
|
|
323
|
+
▼
|
|
324
|
+
立即停止当前测试
|
|
325
|
+
│
|
|
326
|
+
▼
|
|
327
|
+
记录详细信息(复现步骤、证据截图)
|
|
328
|
+
│
|
|
329
|
+
▼
|
|
330
|
+
1小时内升级到闸门总控(Gate Controller)
|
|
331
|
+
│
|
|
332
|
+
▼
|
|
333
|
+
等待安全评估结论
|
|
334
|
+
│
|
|
335
|
+
├── 确认为漏洞 → 进入安全修复流程
|
|
336
|
+
└── 排除 → 继续正常测试(记录备案)
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
**安全漏洞报告特殊要求**:
|
|
340
|
+
- 标题必须加 `[SECURITY]` 前缀
|
|
341
|
+
- 严禁在公开渠道(普通 Issue/群聊)讨论详情
|
|
342
|
+
- 仅限发送给安全负责人和闸门总控
|
|
343
|
+
|
|
344
|
+
### 4.2 发现设计缺陷导致无法验收
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
测试中发现功能无法按验收标准验证
|
|
348
|
+
│
|
|
349
|
+
▼
|
|
350
|
+
排除环境/数据/操作问题(确认为设计问题)
|
|
351
|
+
│
|
|
352
|
+
▼
|
|
353
|
+
记录具体哪些验收标准无法满足
|
|
354
|
+
│
|
|
355
|
+
▼
|
|
356
|
+
发起 DESIGN_ISSUE 上游请求
|
|
357
|
+
│
|
|
358
|
+
→ 回退到方案设计阶段
|
|
359
|
+
→ 方案设计师修改设计
|
|
360
|
+
→ 重新进入开发→审查→测试流程
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### 4.3 回归风险管理
|
|
364
|
+
|
|
365
|
+
**每次测试必须执行的回归检查**:
|
|
366
|
+
|
|
367
|
+
| 检查项 | 方法 | 判断标准 |
|
|
368
|
+
|-------|------|---------|
|
|
369
|
+
| 已修复缺陷是否复发 | 执行该缺陷的复现步骤 | 不再出现 |
|
|
370
|
+
| 相关功能是否受影响 | 执行相邻功能的冒烟测试 | 正常工作 |
|
|
371
|
+
| 核心链路是否正常 | 执行核心 E2E 场景 | 全部通过 |
|
|
372
|
+
| 性能无明显退化 | 对比上次基准数据 | 波动 < 10% |
|
|
373
|
+
|
|
374
|
+
**回归风险评估矩阵**:
|
|
375
|
+
|
|
376
|
+
```markdown
|
|
377
|
+
## 回归风险评估: {任务名称}
|
|
378
|
+
|
|
379
|
+
| 影响域 | 影响范围 | 风险等级 | 回归测试策略 |
|
|
380
|
+
|-------|---------|---------|------------|
|
|
381
|
+
| 用户认证模块 | 登录/注册/密码重置 | 高 | 全量回归 |
|
|
382
|
+
| 订单模块 | 下单/支付/退款 | 高 | 全量回归 |
|
|
383
|
+
| 通知模块 | 邮件/短信推送 | 中 | 冒烟+关键路径 |
|
|
384
|
+
| 静态页面 | 关于我们/帮助中心 | 低 | 抽样检查 |
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## 五、测试报告规范
|
|
390
|
+
|
|
391
|
+
### 5.1 测试报告模板
|
|
392
|
+
|
|
393
|
+
```markdown
|
|
394
|
+
# 测试报告: {任务名称}
|
|
395
|
+
|
|
396
|
+
## 报告概要
|
|
397
|
+
- **任务ID**: TASK-YYYY-NNN
|
|
398
|
+
- **测试负责人**: {姓名}
|
|
399
|
+
- **测试日期范围**: YYYY-MM-DD ~ YYYY-MM-DD
|
|
400
|
+
- **测试结论**: ✅ PASS / ❌ FIX_AND_RETEST
|
|
401
|
+
|
|
402
|
+
## 执行汇总
|
|
403
|
+
| 指标 | 数值 |
|
|
404
|
+
|-----|------|
|
|
405
|
+
| 计划用例总数 | XX |
|
|
406
|
+
| 已执行用例数 | XX |
|
|
407
|
+
| 通过 | XX (XX%) |
|
|
408
|
+
| 失败 | XX (XX%) |
|
|
409
|
+
| 阻塞 | XX (XX%) |
|
|
410
|
+
| 跳过 | XX (XX%) |
|
|
411
|
+
|
|
412
|
+
## 缺陷汇总
|
|
413
|
+
| 等级 | 新发现 | 已修复 | 待修复 | 仍开放 |
|
|
414
|
+
|-----|-------|-------|-------|-------|
|
|
415
|
+
| P0 | 0 | 0 | 0 | **0** |
|
|
416
|
+
| P1 | X | X | X | **0** (PASS 要求) |
|
|
417
|
+
| P2 | X | X | X | X |
|
|
418
|
+
| P3 | X | X | X | X |
|
|
419
|
+
|
|
420
|
+
## Gate 检查结果
|
|
421
|
+
| 检查类别 | 结果 | 详情 |
|
|
422
|
+
|---------|------|------|
|
|
423
|
+
| 静态检查(A) | PASS/WARNING/FAIL | |
|
|
424
|
+
| 构建检查(B) | PASS/FAIL | |
|
|
425
|
+
| 测试合规(C) | PASS/FAIL | 覆盖率 XX% |
|
|
426
|
+
| 安全扫描(D) | PASS/FAIL | X 个 HIGH, Y 个 CRITICAL |
|
|
427
|
+
| 工程一致性(E) | PASS/WARNING/FAIL | |
|
|
428
|
+
|
|
429
|
+
## 各层级测试详情
|
|
430
|
+
|
|
431
|
+
### 单元测试(Dev 负责)
|
|
432
|
+
- 状态: ✅ PASS / ❌ FAIL
|
|
433
|
+
- 覆盖率: XX%
|
|
434
|
+
- 备注:
|
|
435
|
+
|
|
436
|
+
### API 集成测试
|
|
437
|
+
- 状态: ✅ PASS / ❌ FAIL
|
|
438
|
+
- 用例数: XX / XX 通过
|
|
439
|
+
- 失败详情:
|
|
440
|
+
|
|
441
|
+
### E2E 关键路径测试
|
|
442
|
+
- 状态: ✅ PASS / ❌ FAIL
|
|
443
|
+
- 核心场景: XX / XX 通过
|
|
444
|
+
- 失败详情:
|
|
445
|
+
|
|
446
|
+
### 安全扫描
|
|
447
|
+
- 状态: ✅ PASS / ❌ FAIL
|
|
448
|
+
- CVE 数量: X (HIGH: Y, CRITICAL: Z)
|
|
449
|
+
- 详情:
|
|
450
|
+
|
|
451
|
+
### 回归测试
|
|
452
|
+
- 状态: ✅ PASS / ❌ FAIL
|
|
453
|
+
- 回归用例: XX / XX 通过
|
|
454
|
+
- 新发现问题: X
|
|
455
|
+
|
|
456
|
+
## 遗留问题清单
|
|
457
|
+
(如有 P2/P3/P4 未修复缺陷,在此列出让步接受的理由)
|
|
458
|
+
|
|
459
|
+
## 测试结论与建议
|
|
460
|
+
|
|
461
|
+
### 结论: ✅ PASS / ❌ FIX_AND_RETEST
|
|
462
|
+
|
|
463
|
+
### 理由:
|
|
464
|
+
(基于数据和证据给出结论)
|
|
465
|
+
|
|
466
|
+
### 建议:
|
|
467
|
+
(对后续发布的建议)
|
|
468
|
+
|
|
469
|
+
## 签署
|
|
470
|
+
- **测试负责人**: _______________ 日期: _______
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
## 六、与其他团队的协作规范
|
|
476
|
+
|
|
477
|
+
### 6.1 与开发者的协作
|
|
478
|
+
|
|
479
|
+
| 场景 | QA 做 | QA 不做 |
|
|
480
|
+
|-----|------|--------|
|
|
481
|
+
| 报告缺陷 | 提供完整的复现步骤和数据 | 不要只说"它坏了" |
|
|
482
|
+
| 缺陷讨论 | 基于事实和验收标准争论 | 不做个人攻击 |
|
|
483
|
+
| 修复验证 | 及时验证修复(24h内) | 不无限拖延验证 |
|
|
484
|
+
| 需求澄清 | 向 PM/需求分析师提问 | 不自行解释需求含义 |
|
|
485
|
+
|
|
486
|
+
### 6.2 与 PM 的协作
|
|
487
|
+
|
|
488
|
+
| 场景 | QA 做 | QA 不做 |
|
|
489
|
+
|-----|------|--------|
|
|
490
|
+
| 验收标准质疑 | 基于可测试性提出修改建议 | 不自行降低标准 |
|
|
491
|
+
| 优先级争议 | 用数据说话(用户影响面) | 不被"赶进度"压力妥协 |
|
|
492
|
+
| 上线决策支持 | 提供客观的质量评估 | 不做商业判断 |
|
|
493
|
+
|
|
494
|
+
### 6.3 与闸门总控的协作
|
|
495
|
+
|
|
496
|
+
- **安全漏洞**: 必须在 1 小时内升级报告
|
|
497
|
+
- **设计缺陷**: 通过正式流程发 DESIGN_ISSUE
|
|
498
|
+
- **质量数据**: 提供准确的数据支撑裁决
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
## 七、绩效考核关联指标
|
|
503
|
+
|
|
504
|
+
| 指标 | 目标值 | 权重 | 数据来源 |
|
|
505
|
+
|-----|-------|------|---------|
|
|
506
|
+
| 缺陷漏测率(上线后发现 P0/P1) | ≤ 5% | 25%(关键) | 线上故障追踪 |
|
|
507
|
+
| 测试用例覆盖率(需求→用例映射) | ≥ 95% | 15% | 测试计划 vs 需求 |
|
|
508
|
+
| 缺陷报告质量(一次确认率) | ≥ 85% | 15% | 开发者反馈 |
|
|
509
|
+
| 测试执行及时性 | 按计划完成 | 15% | TaskBoard |
|
|
510
|
+
| 安全漏洞识别率 | 100% | 15%(关键) | 安全审计 |
|
|
511
|
+
| 测试文档完整性 | 100% | 10% | 抽查 |
|
|
512
|
+
| 回归测试有效性(不引入新回归) | 0 P0/P1 回归 | 5% | 回归报告 |
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
## 八、常用命令与工具
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
# === 运行各类测试 ===
|
|
520
|
+
npm run test # 单元测试(Dev 负责,QA 可复查)
|
|
521
|
+
npm run test:e2e # E2E 测试
|
|
522
|
+
npm run test:api # API 集成测试
|
|
523
|
+
npm run test:regression # 回归测试套件
|
|
524
|
+
|
|
525
|
+
# === Gate 检查 ===
|
|
526
|
+
node .harness/gate/index.js # 完整质量门禁
|
|
527
|
+
node .harness/gate/index.js --baseline # 对比基线(检测回归)
|
|
528
|
+
|
|
529
|
+
# === 安全扫描 ===
|
|
530
|
+
npm audit # CVE 依赖审计
|
|
531
|
+
npx snyk test # Snyk 安全扫描
|
|
532
|
+
|
|
533
|
+
# === 查看参考文档 ===
|
|
534
|
+
cat .harness/skills/test-e2e.md # E2E 测试技能
|
|
535
|
+
cat .harness/skills/test-api.md # API 测试技能
|
|
536
|
+
cat .harness/agents/tester/contract.yaml # 测试契约
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
---
|
|
540
|
+
|
|
541
|
+
## 九、QA 每日/每周 Checklist
|
|
542
|
+
|
|
543
|
+
### 每日开工
|
|
544
|
+
- [ ] 查看 TaskBoard,了解今日到期任务
|
|
545
|
+
- [ ] 检查昨日缺陷的修复状态
|
|
546
|
+
- [ ] 确认测试环境可用性
|
|
547
|
+
- [ ] 安排当日测试执行计划
|
|
548
|
+
|
|
549
|
+
### 每日下班
|
|
550
|
+
- [ ] 更新缺陷状态
|
|
551
|
+
- [ ] 更新测试进度到 TaskBoard
|
|
552
|
+
- [ ] 记录发现的阻塞点
|
|
553
|
+
|
|
554
|
+
### 每周五
|
|
555
|
+
- [ ] 汇总本周缺陷统计
|
|
556
|
+
- [ ] 评估各任务测试进度
|
|
557
|
+
- [ ] 识别下周风险点
|
|
558
|
+
- [ ] 更新回归风险登记表
|
|
559
|
+
|
|
560
|
+
---
|
|
561
|
+
|
|
562
|
+
*本规范是测试团队在 Harness 体系中的完整操作指南。请牢记:你是质量的最后守门员,坚持标准就是保护产品和用户。*
|