4. 合规规则建模

合规规则测试的第一步不是写用例,而是把监管条文、内控制度、业务口径转化为机器可判定的规则模型。规则建模的质量直接决定回归用例的覆盖度与稳定性。本节围绕规则抽取、决策表、决策树、状态迁移与规则优先级五个核心方法展开,帮助你把模糊的“合规要求”变成可测试、可回归的判定逻辑。

核心目标:让每条合规规则都具备明确的输入条件、判定路径、输出结论与优先级,从而支撑用例自动生成与回归断言。

一、规则抽取:从条文到条件-结论对

规则抽取的本质是识别条文中的“条件”与“结论”。常见条文结构包括“当……时,应……”“若……则……”“除……外,均……”。抽取时需完成三步:定位主体与场景、拆解条件原子项、明确结论与例外。

  • 条件原子化:把“客户风险等级为高且交易金额超过5万元”拆为两个独立条件,便于组合覆盖。
  • 结论可判定:结论必须是可观测的输出,如“触发人工复核”“拒绝交易”“记录审计日志”。
  • 例外显式化:“除监管豁免外”必须转化为独立条件分支,否则回归时会漏测。

抽取结果建议用统一结构记录,便于后续建模与用例生成:

规则ID: R-AML-007
场景: 大额可疑交易上报
条件: 交易金额 > 50000 且 客户风险等级 in [高, 中高]
结论: 触发人工复核 且 生成上报任务
例外: 监管豁免名单命中时跳过
优先级: P1

二、决策表建模:条件组合的完整覆盖

决策表适合条件数量有限、组合逻辑明确的规则。它把条件与动作排列成矩阵,每一列代表一条规则路径,能直观暴露遗漏组合与冲突组合。

规则金额>5万风险等级高豁免名单动作
R1是是否人工复核+上报
R2是否否记录日志
R3否是否人工复核
R4任意任意是跳过

决策表的价值在于:条件组合数量为2ⁿ,测试用例可直接按列生成,避免遗漏。若出现同一组合对应多个动作,说明规则冲突,需回到优先级机制解决。

三、决策树建模:分层判定与路径覆盖

当条件存在明显先后依赖时,决策树比决策表更自然。例如先判断是否命中豁免名单,再判断金额,最后判断风险等级。树的每条根到叶路径就是一条测试路径。

合规规则决策树与状态迁移 命中豁免名单? 是 否 跳过并记录 金额>5万? 是 否 人工复核+上报 记录日志 状态迁移:待判定 → 豁免跳过 / 人工复核 / 已记录 → 归档

决策树测试的关键是路径覆盖:每条根到叶路径至少一条用例,同时补充边界条件(金额恰好5万、风险等级临界)。

四、状态迁移建模:合规流程的时序约束

许多合规规则不是单点判定,而是流程约束。例如“交易必须先完成反洗钱筛查,才能进入结算”。这类规则用状态迁移建模最合适。

  • 状态:待筛查、筛查中、筛查通过、筛查拒绝、已结算、已归档。
  • 事件:提交交易、筛查完成、人工复核通过、复核拒绝。
  • 非法迁移:待筛查直接到已结算,必须作为负向用例覆盖。

状态迁移测试用例生成策略:覆盖所有合法迁移、每个状态的非法事件、以及关键迁移的重复触发。

五、规则优先级:冲突消解与回归排序

当多条规则同时命中时,必须定义优先级。常见策略包括:监管强制优先于内控、拒绝优先于放行、例外优先于一般。优先级不仅影响业务判定,也影响回归用例的执行顺序与断言选择。

实践建议:优先级用整数或枚举显式声明,并在规则引擎配置中固化。回归时优先执行P0/P1规则用例,确保核心合规底线不被破坏。

六、常见误区与复盘

误区一:把“且/或”混用导致条件组合爆炸或遗漏。应先用决策表穷举,再合并等价类。
误区二:忽略例外分支,导致豁免场景在回归中永远不被触发。
误区三:状态迁移只测合法路径,不测非法迁移,线上出现绕过筛查的严重缺陷。
误区四:优先级未显式建模,规则冲突时依赖代码顺序,回归结果不稳定。

复盘时建议建立“规则-用例-断言”追溯矩阵:每条规则至少对应一条正向用例、一条边界用例、一条例外用例。这样当监管条文更新时,可以快速定位受影响的回归集,实现精准回归。

规则ID  用例ID     类型     断言
R-AML-007  TC-101   正向     触发人工复核
R-AML-007  TC-102   边界     金额=50000 不触发
R-AML-007  TC-103   例外     豁免名单命中 跳过

掌握这五种建模方法后,合规规则不再是散落的文字,而是可组合、可覆盖、可回归的结构化资产。下一阶段即可基于这些模型自动生成测试用例并接入回归流水线。