3. 测试用例设计基础

合规规则的测试与普通业务功能测试最大的区别在于:合规规则往往由监管条文、内部制度、风控阈值共同构成,输入条件多、约束交叉、判定结果敏感。若仅凭经验随手写用例,极易出现“规则覆盖不全、边界漏测、组合缺失”的问题。本节把五类经典用例设计方法映射到合规规则场景中,形成可复用的设计路径。

核心目标:用最少的用例覆盖最多的合规判定路径,并让每条用例都能追溯到具体规则条款与风险等级。

一、核心原理:五类方法在合规规则中的分工

等价类划分解决“输入域太大”的问题,把无限输入压缩为若干等价区间;边界值分析解决“阈值附近最易出错”的问题,重点覆盖临界点及其邻域;判定表解决“多条件组合决定结果”的问题,适合反洗钱、授信审批等多条件规则;因果图解决“条件之间存在约束与因果”的问题,适合规则间存在互斥、包含、屏蔽关系的场景;场景法解决“业务流程串联”的问题,适合从开户、交易、申报到复核的端到端合规链路。

合规规则测试用例设计方法映射 等价类划分 输入域压缩 边界值分析 阈值邻域 判定表 多条件组合 因果图 约束与因果 场景法 端到端链路 合规规则输入:客户身份、交易金额、频次、地域、名单命中、时间窗口 输出:通过 / 拦截 / 人工复核 / 上报 用例集:正常路径 + 边界路径 + 组合路径 + 异常路径 + 端到端场景 每条用例绑定规则编号、风险等级、预期判定与回归标记

二、方法流程:从规则条款到可执行用例

  1. 规则解析:把监管条文拆成“条件—动作”对,例如“单笔交易≥5万元且对手方为高风险地区→上报”。
  2. 输入建模:识别每个条件的取值域,划分有效等价类与无效等价类。
  3. 边界提取:对金额、频次、时间窗口等连续或离散阈值,取临界值、临界值±1、临界值邻域。
  4. 组合建模:条件数≥3时用判定表列出条件桩与动作桩,合并等价规则。
  5. 约束建模:条件间存在互斥、包含、屏蔽时,用因果图表达约束关系。
  6. 场景串联:把单点规则放入开户、交易、复核、上报的业务流,形成端到端场景。
  7. 用例固化:为每条用例标注规则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与浮点精度问题。
  • 误区:判定表未合并等价规则,用例数量膨胀且回归成本高。
  • 误区:场景法只走正常链路,未覆盖“名单命中后阻断后续交易”的异常链路。