面向金融业务的用例自动生成

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 面向金融业务的用例 自动生成技术 -- 蚂蚁集团 王铎成
2. 讲师简介 蚂蚁集团-技术风险部 高级技术专家 2015年加入蚂蚁,专注于测试技术研发领域 先后负责过工具效能、资金安全风险运营、智能测试等专项能力, 目前主要担任蚂蚁测试智能引擎产品化研发负责人。 ee.msup.com.cn
3. 内容大纲 金融业务测试背景和特点 • background 当下测试困境和方向 • problem 智能化用例生成初探 • solution 案例剖析 • demo 未来方向 • future ee.msup.com.cn
4. 前言 - 伴随架构升级的测试演进之路 技术架构演进路线 一代 集中式 二代 分布式 三代 自研体系 四代 云平台 五代 混合云原生 蚂蚁 生态 全球化 hybrid DevOps / CI /CD 敏捷 稳定 月均代码行(万行) 安全 系统内设计复杂 系统间交互复杂 每年50%+增长 智 能 化 测 试 系 统 复 杂 度 传统测试方法 2019 2020 2021 过去 ee.msup.com.cn 现在 未来 测 试 覆 盖 度
5. 前言-测试演变进程 测试产品平台 测试核心服务抽象 赋能生态 开放集成 功能 测试 回归 测试 预发 确认 研发环境 支付服务 客户服务 余额充值 余额宝充值 集分宝充值 预付卡类充值 注册 红包发送 亲密付准入 认证 手工 优惠卡券构造 花呗准入 家庭宝准入 登陆 账户 产品交付验收 测 试 管 理 老场景回归 单元/ 接口 交易创建 PC付款 全链路 UI 无线付款 Mock中心 ee.msup.com.cn 服务化 底层能力 数据工厂 模型仓库 持续集成 周 天 小时 手工测试 自动化工具 开放平台产品 智能化
6. 1行代码引发的故障 大众高频A、B、C支付场景 ackMessage.getResponseContext() 是json报文 + + + + 小众低频D支付场景 ackMessage.getResponseContext() 是xml报文 // 特定的结果字段,需要在收到异步回执时取出发给下游XXX系统 MapUtil.putIfNotBlank( payOrder.getResponseContext(), ORDER_ID, JSONUtil.toMap(ackMessage.getResponseContext()).get(ORDER_ID)); (代码已脱敏) 代码哪里有问题? 代码本身没问题 ee.msup.com.cn 链路上下游调用复 杂 场景未充分测试
7. 金融业务测试困境 • 测试场景复杂性 分布式事务状态多样/账户状态多样 /记账类型多样/记账金额多样/并 发/幂等/兼容/…… • 测试流程复杂性 DB数据准备/上下文初始化/参数准 备/外围mock/接口调用/结果验证 /数据清理/…… • 测试验证复杂性 接口返回/远程调用/异步消息/DB 变更/日志数据/异常对象/…… 当前痛点 分析遗漏 • 测试分析经验难以传 • 承 场景覆盖率缺失 覆盖遗漏 • • 代码覆盖100%≠没有 • 测试占比50% bug • 单笔业务链路系统节 行/分支覆盖评价指标 单一 ee.msup.com.cn 效率低 点300+、调用上千次
8. 解法 业务图谱沉淀 业务知识沉淀,结构化质量风险数据图谱 APP 分母 挡板 app A 分母 挡板 app B 分母 分层回归 老业务充分度执行 问题单元化隔离 ee.msup.com.cn 内部 对象 挡板 app C DB存储 外部请 求 消息 稳固底盘 支撑业务迭代创新 动态 配置 接口返回 场景推导 新业务智能分析推荐测试 大数据沉淀业务图谱
9. 整体方案 业务知识图谱沉淀 大数据用例生成 场景分析推荐 用例映射 自动特征提取 调用隔离 依赖提取 场景用例 跨环境 人工经验 线下 业务融合 本体建模 图谱构建 元素搜索 生产 跨部署 数据可视化 信息抽取 入参/db/缓存 /输出 多 端 适 配 知识映射 ee.msup.com.cn 参数推荐 Mock生成 特征匹配 变异生成 智能引擎 代码分析 算法引擎 运行基线 值域分布 场景 引擎 变异生成新用例 统一注入框架 数据引擎 数据服务 变更影响 近端依赖/外 部依赖/调用 特征 多维画像适配 数据基线 分层模型 业务时序 区域机房 知识融合 画像基座 rpc/http/消 息/回调 要素关联 代码形态 全局机房 城市机房 底 座 能 力 业务入口 代码 领域结构 用例 数据字典 灰度 模型中心 值域 业务充分度 四维分析 链路下探 业务图谱 业务模型 要素决策 数据血缘 字段关联 知识融合 数据脉络 桩点推荐
10. 1. 业务测试图谱构建 离散业务知识点 (散点输入) 业务先验知识约束下的知识提纯 标准化业务测试模型 (建模) (KG关联推导) XX业务场景 业务 标识 外部API 订单合法状态 关联 账户 影响 核算 报送 影响 金额 币种 属性 ..... ..... ..... ee.msup.com.cn 变量 传递 路径 场 景 实 体 挑 选 关 联 规 则 约 束 编 码 协 议 约 束 依 赖 约 束 余额 算 法 挖 掘 • • • 场景分析 用例分析 编码分析 资金安全 支付限额 • • 基线核对 水位监控 外部依赖API 规则 DB依赖 业 务 知 识 输 入 测试分析 订单 交易 工具 关联 单据 应用 实体(Entity): 余额, 限额, 订单 属性(Property): 配置, 规则 关系(Relation): 支付限额 -> 限制 -> 余额 余额 -> 支付 -> 商城订单 值(Value): 限额 -> 10000元 订单合法状态 -> 待支付 风险挖掘 • • • 容量风险 稳定性 变更风险
11. 1.1 业务知识图谱案例 用例图谱落地数据案例 业务知识查询 图谱探索 模型类型 辅助测试分析 • 系统 system 字段取值 factorValue factorValueType 字段名 Api Method inputArgs returnArgs methodKeywords declaredSystem mockType ee.msup.com.cn 参数类型 factorDetailNa me factorEndName argType argDirection 接口方法 字段及取值的 明细信息 图谱实例ID bizKgModel InstId 业务语义 调用链路 用例ID bizMeaning Invoking Chain caseId 实例 ➢ 图谱语义标注 ➢ 专家知识沉淀 ➢ 新业务场景下用例推荐
12. 2 大数据充分度用例生成 单应用回归模型 充分度分母度量评价 标准化用例输出 回放能力 mock规则生成 ibatis cache random 近端 异步 rpc 调用链路 drm Mock基线种类归类-静态分析识别 累 积 概 率 分 布 规则建模 Mock规则产出 系统自动录制 流量 录 百分比 制 模 式 客户端 安装 业务 特征 业务 分布 服 务 流 量 采 集 决策要素: 产品 业务 渠道 … 全自动 场景数据生成 其他: sequence datetime userid … 全自动 依赖数据分析 算 法 分 析 变量值域宽度 链路分析模型 • 循环调用压缩 • 时序层次提取 • 频繁模式挖掘聚合 规则 下放 进程 关联 链路特征刻画 特征提取 决策要素模型 • 值域宽度 • 存储层次 • 随机数/日期等模板过滤 无侵入拦截lothar container businessClas s 算 法 框 架 businessCla ss$1proxy JVM Agent classLoader 录制数据标 准化接入 ee.msup.com.cn 模型透视 分布式运算对接 框架(mapreduce) 平台能力-万象 用例运维 0人工成本 10倍用例补充 百亿流量,5日分析,业务系统天级用例保鲜 充分度 模型建设 pipleline 链路/值分析 算法模块化 算法单元乱 序执行调度 框架 全自动 验证点、数据配置 精准/蜕变 质量资产 系统画像 资金画像 链路画像
13. 2.1 案例:场景链路结构自动解析 基于接口调用序列业务特性的时间序列特征 分解,分布式一致性, 完全的可读解释性 {'模式': ['consult'], '重复': 1}, 方 法 调 用 序 列 长 度 'consult', 'putReqUUID', 'getBizIdentityCode', 'isLoadNew', 'getRules', 'getRuleTargetRefreshTime', 'isLoadNew', 'getInstitutionByInstId', 'getInstitutionByInstId', 'getInstitutionByInstId’ ...................................... 'getRuleTargetRefreshTime', 'isLoadNew', 'getRuleTargetRefreshTime', 'isLoadNew', 'getRuleTargetRefreshTime', 'isLoadNew', 'getRuleTargetRefreshTime', 'isLoadNew', 'getRuleTargetRefreshTime', 'isLoadNew’ 原始数据 ee.msup.com.cn { '段落': ['consult', 'isLoadNew'] {'模式': ['putReqUUID'], '重复': 1}, '行为': ['consult', 'putReqUUID', 'getBizIdentityCode', 'isLoadNew', 'getRules'], {'模式': ['getBizIdentityCode'], '重复': 1}, {'模式': ['isLoadNew'], '重复': 1}, {'模式': ['getRules'], '重复': 1}, {'模式': ['getRuleTargetRefreshTime', 'isLoadNew'], ' 重复': 1}, ['getRuleTargetRefreshTime', 'isLoadNew'] * N, {'模式': ['getInstitutionByInstId'], '重复’: >100}, ['findResourceByName', 'getCommonServiceTimeSwitch', 'isLoadNew'] * N, {'模式’: ['findResourceByName’, 'getCommonServiceTimeSwitch’, 'isLoadNew’], '重复’: >100}, ['getInstitutionByInstId'] * N, {'模式': ['isInServiceTime'], '重复’: >100}, ['isInServiceTime'] * N, {'模式': ['getInstitutionByInstId'], '重复’: >100}, {'模式': ['getRuleTargetRefreshTime', 'isLoadNew'], ' 重复’: >20} 模式挖掘 '行为次序': ...... } 特征编码表示
14. 2.2 — 充分度分母模型 解决问题:业务场景度量的自评价方法,客观度量测试充分度水位。 场景模型四要素 流量模型 分布模型确定 类型 采样模型验证 建 模 时间分片验证 要素粒度 要素 链路 zone均衡验证 数据 分析 入口 场景粒度 业务图谱 理论模型输入 知识推演 要素 场景 代码分析 等价类划分 数据脉络 距离算法 值域推断 组合测试 本体关系 延伸构建 ee.msup.com.cn 充分度评估效果 值域动态分配 覆盖补充 精确置信区间 录制场景:录制下38种取值 实验 落地 定向录制 实时策略变换 场景入口(接口方法) AAAA#bbb 数据脉络:对应的DAO 层方法为 →com.alipay.xxxDAO 要素坐标 java.lang.String -> bizMode 数据脉络:对应的库表字段→PMT_PAY_ORD^BIZ_MODE补 充9种取值,场景覆盖度(38-9)/38=76%
15. 2.3 — 用例生成交付 Test Script 1 Test Script 2 Test Script 3 APP-PlaybackTestBase Data-Engine Case-data Mock- data Mock-Engine Mock rule Mock register Mock match Check-Engine Check baseLine Check running TestRuntimeContext 场景索引 本机加载 T e s t R e p o r t Dataprovider 测试数据 数据初始化 测试数据 场景元数据存储 中心 Scene model process Clear (rpc上下文) prepare (rpc上下文) excute (rpc调用+mock执行) Test Framework TestNG ee.msup.com.cn afterTest 结果收集/ 自动分析 check (结果+插桩点)
16. 2.4 用例整体DEMO 脚本结构 本机运行 CI运行 ee.msup.com.cn
17. 3. 场景推导 -领域推断模型 层次分析数据持续更新 三级二分预测模型 链路相似 Ranking 领域结构预测 top-T 调用链路 领域结构 静态定义预测 业务要素 静态值域 ee.msup.com.cn 从链路库中挑选出B个 业务关联性最低的候选 作为领域外候选 结构变换 相似链路同类业务: (精准30%) 余额宝转账-支付类型,过桥类型; 外部卡券支付-支付类型; 银行卡转账 - 付类型,机构渠道; bizProduct : bizMode : ...... 静态定义组装 领域蜕变算子 领域内蜕变 执行结果预测 结构模板预测 bottom-B 从链路库中挑选出T个 业务关联性最高链路 作为领域内候选 变更代码解析 值变换 相同定义不同业务: 代数变换 (e.g. 金额 / 精准80%) 字符变换 (e.g. 支付工具 / 精准50%) 枚举变换 (e.g. 错误码 / 精准80%) args[0] = { bizProduct: pay10001 bizMode : AAA ...... } args[1] = xxxxxxxxx args[2] = host-name ............................................ 领域外蜕变 领域边界裁决 静态定义域内 业务关链路模板 规约预期(NPE等) 静态定义域外 模板错漏 / 业务无 业务要素破基线 领域内蜕变 预期通过 领域外蜕变 预期失败
18. 3.1 场景推导-系统测试分析 数据源 分析平台 应用 拦截录制 业务标准化分 析模型 业务场景智 能 分析模型 日志/配置 IR静态分析 数据 标准 化框 架 精细化 业务知识图谱 指令构成与约束 自动化CI 用例基数池 链路关键形态 智能 基线提炼 业务知识及语义 变更辐射范围 DB记录 业务指令 基线 业务元信息 数值水位分布等 专家知识 ee.msup.com.cn 业务场景建 模分析平台 ... 业务数值 水位基线
19. 3.2 场景推导 - 链路预测领域结构实例(top-K) ...................................... ['consult', 'getRuleTargetRefreshTime', 'putReqUUID', 'isLoadNew', 'getBizIdentityCode', 'getRuleTargetRefreshTime', 'isLoadNew', 'isLoadNew', 'getRules', 'getRuleTargetRefreshTime', 'getRuleTargetRefreshTime', 'isLoadNew', 'isLoadNew', 'getInstitutionByInstId', 'getRuleTargetRefreshTime', 'getInstitutionByInstId', 'isLoadNew', 'getInstitutionByInstId’ 'getRuleTargetRefreshTime', ...................................... 'isLoadNew'] 链路特征智能抽取 [{'unary': ['consult'], 'repeat': 1}, {'unary': ['putReqUUID'], 'repeat': 1}, {'unary': ['getBizIdentityCode'], 'repeat': 1}, {'unary': ['isLoadNew'], 'repeat': 1}, {'unary': ['getRules'], 'repeat': 1}, {'unary': ['getRuleTargetRefreshTime', 'isLoadNew'], 'repeat': 1}, {'unary': ['getInstitutionByInstId'], 'repeat’: >100}, {'unary’: ['findResourceByName’, 'getCommonServiceTimeSwitch’, 'isLoadNew’], 'repeat’: >100}, {'unary': ['isInServiceTime'], 'repeat’: >100}, {'unary': ['getInstitutionByInstId'], 'repeat’: >100}, {'unary': ['getRuleTargetRefreshTime', 'isLoadNew'], 'repeat’: >20}] ee.msup.com.cn 真实入参模板 蜕变预测模板
20. 案例总结 金融级分布式系统测试保障 更高 更快 更强 代码覆盖 业务要素覆盖 业务场景覆盖 用例编写提效 用例运行提效 执行验证提效 运行文档 自动断言 自动异常分析 全流程无干预,可迭代优化,能力开放 技术产出 ee.msup.com.cn 流量采集、用例 清洗、运行回归 无干预 专家经验反哺, 不断优化模型效 果 宽口径数据源, 适配各种技术栈 智能化探索 系统业务模型自 模型数据白盒化, 动刻画 可解释
21. 测试未来 需求评审 测试分析 设定测试范围 用例覆盖分析 单元/功能测试 清除接口代码 缺陷 清除系统链路 缺陷 验收测试 清除产品缺陷 单次0成本 持续低成本 • 接口一键接入 • 模型自学习 • 业务时序自动刻画 • 场景自动回归 • 数据动态构造 • 业务精细化自动校验 测试技术创新 ee.msup.com.cn 系统集成测试
22. 关注msup公众号 获取更多工程效能实践案例

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 04:11
浙ICP备14020137号-1 $Carte des visiteurs$