3. 测试用例设计基础
合规规则的测试与普通业务功能测试最大的区别在于:合规规则往往由监管条文、内部制度、风控阈值共同构成,输入条件多、约束交叉、判定结果敏感。若仅凭经验随手写用例,极易出现“规则覆盖不全、边界漏测、组合缺失”的问题。本节把五类经典用例设计方法映射到合规规则场景中,形成可复用的设计路径。
核心目标:用最少的用例覆盖最多的合规判定路径,并让每条用例都能追溯到具体规则条款与风险等级。
一、核心原理:五类方法在合规规则中的分工
等价类划分解决“输入域太大”的问题,把无限输入压缩为若干等价区间;边界值分析解决“阈值附近最易出错”的问题,重点覆盖临界点及其邻域;判定表解决“多条件组合决定结果”的问题,适合反洗钱、授信审批等多条件规则;因果图解决“条件之间存在约束与因果”的问题,适合规则间存在互斥、包含、屏蔽关系的场景;场景法解决“业务流程串联”的问题,适合从开户、交易、申报到复核的端到端合规链路。
二、方法流程:从规则条款到可执行用例
- 规则解析:把监管条文拆成“条件—动作”对,例如“单笔交易≥5万元且对手方为高风险地区→上报”。
- 输入建模:识别每个条件的取值域,划分有效等价类与无效等价类。
- 边界提取:对金额、频次、时间窗口等连续或离散阈值,取临界值、临界值±1、临界值邻域。
- 组合建模:条件数≥3时用判定表列出条件桩与动作桩,合并等价规则。
- 约束建模:条件间存在互斥、包含、屏蔽时,用因果图表达约束关系。
- 场景串联:把单点规则放入开户、交易、复核、上报的业务流,形成端到端场景。
- 用例固化:为每条用例标注规则ID、输入数据、预期结果、优先级与自动回归标签。
三、案例:反洗钱交易监测规则
假设某合规规则为:单笔交易金额≥50000元,且客户风险等级为高,且对手方位于高风险地区,则触发上报;若客户风险等级为中且金额≥50000元,则转人工复核;其余情况通过。
| 条件/动作 | 规则1 | 规则2 | 规则3 | 规则4 |
|---|---|---|---|---|
| 金额≥50000 | 是 | 是 | 是 | 否 |
| 客户风险等级=高 | 是 | 否 | 否 | — |
| 对手方高风险地区 | 是 | 是 | 否 | — |
| 预期动作 | 上报 | 人工复核 | 人工复核 | 通过 |
基于该判定表,可进一步补充边界值:金额取49999、50000、50001;频次取9、10、11;时间窗口取23:59、00:00、00:01。因果图则用于表达“高风险地区”与“名单命中”之间的屏蔽关系,避免组合爆炸。
用例示例:
case_id: AML-003-012
rule_id: AML-R-005
input:
amount: 50000
customer_risk: HIGH
counterparty_region: HIGH_RISK
expected: REPORT
priority: P0
regression: true
四、误区与复盘
常见误区一:只测“通过”和“拒绝”,忽略“人工复核”这类中间态。合规系统中,中间态往往对应最复杂的审批流与留痕要求。
复盘建议:每次规则变更后,先更新判定表与因果图,再反向检查已有用例是否仍覆盖新规则;对失效用例打上 deprecated 标记而非直接删除,保留审计轨迹。
- 误区:等价类划分过粗,把“高风险”和“中风险”合并,导致漏测复核路径。
- 误区:边界值只取等于阈值,忽略阈值±1与浮点精度问题。
- 误区:判定表未合并等价规则,用例数量膨胀且回归成本高。
- 误区:场景法只走正常链路,未覆盖“名单命中后阻断后续交易”的异常链路。