dsh-qa-skills
Version:
DeepSeek Harness (dsh) plugin: 10 testing skills (requirement analysis, test strategy, case writing/review, E2E/API automation, exploratory, regression, bug analysis) + shared core knowledge base — a full QA pipeline as agent skills.
56 lines (39 loc) • 3.81 kB
Markdown
# 数据驱动与参数矩阵方法(data-driven)
> API、导入类、数据转换类功能的用例设计方法(何时选它见 `../testing-principles.md` 第 2 节)。
## 1. API 参数矩阵
每个接口一张参数表,逐参数 × 逐属性配用例:
```text
参数属性:必填/选填、类型、长度、取值范围、默认值、枚举值、组合约束
逐格产出:正常值(每属性至少一个)/ 缺失(必填报错)/ 类型错误 / 边界值(见 boundary.md)
```
- 响应侧:成功结构、每个错误码的触发条件与响应体、鉴权失败 / 越权 / 限流的表现
- 幂等:重复提交同一请求(相同业务键)→ 结果不变、不重复创建
- 并发:同一资源的并发写 → 无中间态、无互相覆盖
- 参数依据来自 API 文档或代码的校验逻辑(`文件:行` 落附录);文档与代码不一致记文档偏离
## 2. 多参数组合降档策略(跨参数交互的正解)
单参数逐属性验证(必填/类型/边界)是正交的、必须做全;组合测试的对象是**跨参数交互**——跨字段业务规则与参数依赖。组合数随参数个数与取值数**指数增长**,必须显式选档,不静默收缩:
```text
全组合数 = ∏(各参数取值个数)
档位 适用条件 覆盖语义
全组合 全组合数 ≤ 20 且挂 Critical 风险 每个取值组合一条用例
成对组合 默认档(全组合数 > 20) 任意两参数的取值对至少出现一次
风险挑选 成对仍不可行(参数面过大/预算受限) 按 risk_ref 挑参数 × 边界值组合
```
- **成对组合(pairwise)依据**:NIST 实证研究(Kuhn et al. 2004)——多数参数交互类缺陷(约 70% 以上)可被两两取值组合捕获,成本从指数级降为近线性
- **已知业务规则优先于机械组合**:跨字段规则("使用门槛不能低于面额"类)是显式约束——在**合法取值集**上做组合;违反规则的格子改取合法值或拆为显式负向用例,不做隐式非法组合
- **三路交互手动补**:成对组合不保证三个参数同时取特定值的组合——挂 Critical 风险的三路交互(如"金额 × 门槛 × 状态"共同决定资损路径)逐条识别、手动补齐
- **降档留痕**:降到哪档、依据(组合数 / 风险 / 预算)、被排除的组合面写进 rationale——供 `test-case-review` 追问,不静默降档
## 3. 导入类功能
- **格式**:标准格式成功 / 字段缺失 / 类型非法 / 编码问题(GBK/UTF-8)/ 分隔符变体
- **行级处理**:全部有效 / 部分无效(行级报错还是整批失败?依据文档或实现)/ 全部无效
- **重复导入**:同一文件导入两次 → 幂等行为(跳过 / 更新 / 报错,按声明的规则断言)
- **大数据量**:上限条数 / 超限表现 / 异步导入的状态可追踪与失败恢复
## 4. 数据转换(Input → Transform → Output)
- 每类典型输入一条转换用例,断言输出逐字段正确
- **读回一致**:写入后读回,值与写入一致(保真)
- 畸形输入:空输入 / 部分字段 / 未知枚举值的兜底行为
- 转换规则变更后,存量已转换数据是否需要重算(一致性用例)
## 5. test_data 具体化要求
- 数据驱动不等于占位符:每条用例的输入数据**必须具体**(真实编号、真实字段值),整批数据在导读区「标准测试数据」或附录集中声明
- 需要预置的数据(库里的存量记录)在前置条件写明来源:谁造 / 哪个脚本 / 哪个接口
- 多套数据之间的差异点在用例名或前置里点明("高门槛券" vs "低门槛券"),执行者不需要自己推断