《5-基于代码链路分析的测试降本增效-微众银行-尹小芳.pdf》由会员分享,可在线阅读,更多相关《5-基于代码链路分析的测试降本增效-微众银行-尹小芳.pdf(25页珍藏版)》请在三个皮匠报告上搜索。
1、基于代码链路分析的测试降本增效尹小芳自我介绍20112012 百度(北京)凤巢 ctr模型和竞价排名测试开发20122014 百度(深圳)国际化杀毒测试开发2014至今 微众银行微粒贷测试经理,贷款科技部门测试专家尹小芳背景&痛点解决思路应用收益&效果未来展望背景&痛点竭尽全力,但一上线还是有缺陷 不知道有这种场景?不知道影响了此场景?准生产回放 数据量超级大,diff多怎么办?只有1天切片,场景丰富吗?选择性回放 成本和质量的取舍结果是血的教训 半年漏出缺陷历史占比62%你有遇到这种纠结情况吗?解决思路我们的解决方案把线上场景走过的代码分支路径做采集,每个场景的代码路径(单系统内)称为一个场
2、景码,根据线上场景码在测试环境做案例补充,日积月累线上发生的场景能实时采集吗能反哺测试环境吗解决方案概览场景码自动采集器 实现了一套对测试场景的编码算法,该算法能将交易的代码分支链路编码为32位bits的场景码,相同特征的交易具备相同的场景码 对于java应用,该算法将以javaagent形式插入分支跟踪的字节码,挂载到应用系统。在系统运行过程中采集每一笔交易的场景码,最终汇总到场景码分析平台场景码分析平台 空白分支分析/空白场景码分析 精准推荐 剔除重复测试场景、场景码自动采集原理控制逻辑则可以理解为交易执行的代码链路,链路由代码经过的分支串联构成,链路不同则说明交易场景不同交易场景码=对分
3、支链路的编码(sim-hash)交易一链路:1-2-4 0交易二链路:1-3-4 012431243采集场景码遇到的挑战1 不同的分支类型IfWhileFor2 交易链路可能会中断异步线程存储转发3 不同系统属性联机系统批量系统为啥要降维没关系的函数,为啥非要做组合?!为啥要降维链路长,高度敏感!参数不一致下游影响本来无关的数据形态影响场景码覆盖率低的原因如何降维 场景码降维-从多维到一维/二维/三维的试探主要算法主要算法:在试探过程中,我们把每个函数看成一个独立个体,单个函数内的分支组合,和两个个体的组合实验数据实验数据 一层函数 60%二层函数
4、37%三层函数 24%效果效果 能以此让测试人员补充场景吗?如何降维 场景码降维算法-血缘函数场景码主要算法:1 通过静态代码分析每个函数分支使用的变量做血缘分析,追溯修改该变量的函数(追溯多层),从而建立函数和函数之间的血缘关系2 场景码降维重构:线上依然采集单系统内交易全分支场景码,再根据函数血缘关系切割成新的场景码效果数据原始场景码原始场景码降维后场景码降维后场景码场景码数量347712293测试覆盖率6%49%应用目标补充回归案例裁剪重复案例推荐精准案例应用之一 补充回归案例 一期按空白分支补充A(int a,int b)if()if()B(int a1,int
5、b1)if()if()A(int a,int b)if()if()B(int a1,int b1)if()if()生产环境覆盖分支测试环境覆盖分支空白分支,热度N N特点:知道生产分支热度,按优先级补充案例应用之一 补充回归案例 能轻松补充吗?知道分支含义真正进入此分支如何构造数据?如何快速补充?十万八千里应用之一 补充回归案例p 目标:提供相似场景已有的信息,让测试人员更直观构造空白分支的数据p 主要算法:1 找同一接口离空白分支最近的场景码,最近的判断优先找同一行数最近已覆盖分支2 若未找到,则沿着调用关系找最近2.相似场景1 代码链路2 自动采集特征1)自动化案例和接口名称2)使用的数据
6、形态名称3)关联的功能点4)案例验证点3 人工标识的场景标签已有的场景3.差异分支空白分支代码链路人工分析并转成自动化案例1.生产导出代码链路到分析平台4.构建案例 找相似场景应用之一 补充回归案例 二期 补充组合场景空白分支补充完生产环境血缘函数场景码补充组合场景应用之二 裁剪案例和精准推荐 建立案例与场景码关系库案例1案例2案例4案例3案例5场景码1场景码2场景码3变更代码块代码分支案例和场景码关系库精准推荐每个自动化案例都通过场景码做标识,每次代码的变更识别出变更的分支或函数,通过关系库,能精准推荐受关联影响的案例,如图案例1和案例3裁剪案例相同场景码的不同案例,保留其中一个案例收益&效果提高质量提高质量以前:覆盖生产上多少场景是未知现在:线上发生的分支100%覆盖+增加了组合场景降低成本降低成本以前:需要开发测试一起参与以前:需要开发测试一起参与现在:借助相似场景推荐,测试能现在:借助相似场景推荐,测试能独立独立自助补充场景自助补充场景未来展望运维工作的应用线上实时采集事先识别遗漏场景