一 背景
资损防控是业务稳定性保障的重要一环,资损防控的核心主要有三点:事前规避、事中发现和事后应急。在资损事前规避方面,商家业务从业务场景入手,进行各业务模块的资损场景的梳理,将最容易出现资损的场景梳理出来。但是这些资损场景的梳理是依赖人去梳理,非常依赖梳理者的个人经验和对业务、链路、系统架构的熟悉程度,这样的梳理方式一定会存在资损场景被遗漏的情况。我们希望能够在人为梳理的基础之上增加系统自动识别能力来对资损场景进行补齐。
因此,希望通过分析测试环境数据库写操作涉及的字段和数据,得到所有字段后,通过AI大模型判断字段是否存在资损风险的方式进行预标记,研发测试进行二次打标并和已有资损场景、资损字段结合,形成业务域资损字段,进而结合公司资损管理平台,精准测试平台能力建立一套基于资损字段->资损方法->调用接口->资损场景->资损布防->布防演练为一体的链路级资损防控方案,提升整体资损场景覆盖度,降低资损风险。
二 应用实践
资损字段梳理
人工梳理
资损字段的梳理主要通过两种方式,一种是通过判断业务数据库字段的数据错误是否会涉及到资损风险,对商家业务所有数据库字段进行资损风险的梳理,梳理主要参考以下几个维度:
一致性风险:信息、资金流不一致,信息实物流不一致,资金实物流不一致
计费类风险:
计算因子错误
应记未记:上游少传元数据
产出错误:下游产出,加工的计费因子,数据错误导致计费异常
传递错误:传递过程中计费因子传递,解析等错误导致计费异常
计算逻辑错误
计费相关配置错误导致计费错误
计费算法逻辑错误导致计费错误
系统&业务层面的逻辑错误导致应计费未计费
营销风险:
权益配置类:发放规则、对象、次数、金额、有效时间配置错误
权益发放类:发放人群不符合、发放权益类型不符合、发放次数超限、发放数量超限或不足、发放金额超限或不足、发放时间不符合
权益核销类:核销金额和发放金额不一致,核销场景和发放场景不一致,核销时状态非法、已失效、取消,权益不在有效核销期,核销次数超限,如优惠券多次核销
AI识别
通过分析测试环境数据库写操作涉及的字段和数据,得到所有字段后,通过AI大模型判断字段是否存在资损风险的方式进行预标记,具体流程如下:
针对AI识别出来的资损字段,结合人工梳理的资损字段,在平台上进行最终的打标确认,形成明确的资损字段。
覆盖策略
被梳理出来的每一个资损字段,都可以当做是一个原子的资损场景,针对梳理出来的资损字段的覆盖,当前主要通过核对规则中对资损字段的核对来进行覆盖,因为核对规则的实现需要花费很大的精力进行规则编写和脚本编写,要实现资损字段的全量覆盖几乎是不可能的。资损字段梳理出来,如果没有对应的防控覆盖,就会有较大的风险敞口,因此需要有快速且低成本的方式对资损字段进行覆盖,结合精准测试平台已实现的链路推荐能力,可以从资损字段推荐资损方法、资损接口,通过对资损接口进行自动化覆盖,实现对资损字段的覆盖,形成资损字段识别-资损接口梳理-资损场景达标的闭环,降低线上资损风险。
资损链路推导
借助精准测试平台能力,解析代码中资损字段对应的MyBatis文件找到对应代码模型,自动生成模型字段对应的get/set方法,并为get/set方法设置资损注解,之后使用资损字段生成的get/set方法结合方法调用链推荐资损接口,平台具体的方案图如下:
建立DB资损字段与代码模型字段关系映射
推荐出对应的资损字段
推荐出对应的资损接口
通过精准测试平台进行资损链路推荐,识别出全部资损字段对应的资损方法和资损接口。
资损链路覆盖
识别出某个业务域资损链路之后,针对涉及资损每个应用,识别出来对应的资损链路接口,进行100%补齐,数据格式可以参考如下:
资损用例专用计划
在每个应用进行资损链路推荐时,推荐出来的资损接口对应的资损用例会自动添加到资损用例测试计划中,形成业务域的资损用例测试计划。
资损用例测试计划执行
结合集成流水线,资损用例专用计划集成到冒烟阶段集成流水线。
在每次冒烟阶段流水线执行时,自动执行资损用例测试计划。
在资损用例执行失败时,需要对失败case进行排查定位,最终要是整个测试计划的通过率达到100%。
资损用例发现问题
在546迭代中,通过资损用例的执行结果排查,发现4+个资损相关缺陷。
在547迭代中,通过资损用例的执行结果排查,发现1+个资损相关缺陷。
三 实践成果
通过链路级资损防控,最终实现了以下的收益:
从数据库字段出发,串联资损字段->资损方法->调用接口->资损场景,形成一体化的资损链路大图,针对每个链路可度量、可防控,进行更精细化的资损防控建设。
通过资损链路的推导,对梳理出来的资损字段进行了近100%的覆盖,形成了线下资损场景的全量覆盖,使得每次代码变更都可在线下进行资损防控,提前规避线上资损风险。
对比资损场景梳理的资损方法、资损接口,通过资损字段推导出来的资损方法、资损接口有非常明显的提升。其中,资损方法增加了1200+%,资损接口增加了400+%,使得业务全域的资损场景更全面,形成了可复用的精细化资损防控体系。
四 未来计划
通过资损字段识别,能够快速的进行资损场景的扩展,帮助业务进行资损场景的查漏补缺,而结合资损字段,依然有很多防控场景可以思考和实践。
结合资损字段,以字段规则覆盖(资损需求规则覆盖率)+字段调用链路接口自动化覆盖(资损链路覆盖率)双重覆盖方式形成资损覆盖的有效度量模型。
对资损链路,进行对应的自动化case覆盖率,自动化case成功率,代码行覆盖率统计等相关的质量强化。
资损接口代码自动进行打标存档,在需求开发、技术优化时,帮助业务进行资损场景提前识别,降低资损需求判断的经验依赖。
针对迭代需求,如果需求变更涉及到资损链路,可以对需求进行资损需求打标,进行资损需求的开发SOP管理。
绘制公司资损链路大图,进行全流程资损场景识别、资损链路覆盖、资损覆盖度量。