《3-鲁国宁-去哪儿网代码覆盖率落地实践.pdf》由会员分享,可在线阅读,更多相关《3-鲁国宁-去哪儿网代码覆盖率落地实践.pdf(52页珍藏版)》请在三个皮匠报告上搜索。
1、去哪儿网覆盖率落地实践鲁国宁去哪儿网-测开专家鲁国宁2019至今:去哪儿网,基础架构-基础平台,致力于测试流程的治理,测试工具建设;建设的平台有自动化测试、全链路压测、代码覆盖率、mock平台、精准测试、代码瘦身等。20152019:京东商城,效能研发部,从事性能压测平台建设,实现近亿级qps压测,智能寻点等功能;保障618、双11性能稳定性目录CONTENTS背景01 覆盖率百分百落地实践02 覆盖率指标提升实践03 覆盖率降本增效实践04 总结与展望05 01背景质量体系概念现状决策背景-质量体系A质量体系介绍Bug 代码逻辑异常(80+%);配置异常;其他;故障 异常影响程度 影响时长腐
2、化 无效代码占比质检平台AIOPS瘦身平台质量指标保障手段背景-质量体系A质量体系介绍Bug 代码逻辑异常(80+%);配置异常;其他;故障 异常影响程度 影响时长腐化 无效代码占比质检平台AIOPS瘦身平台质量指标保障手段背景-概念序号序号维度名称维度名称描述描述1类所有类,包括接口,只要其中有一个方法被执行,则标记为被执行。注意:构造函数和静态初始化块也算作方法2方法已定义的函数中有多少被调用3行已经测试了多少行源代码,只要本行有一条指令被执行,则本行则被标记为被执行4分支控制结构的分支(例如 if 语句)中有多少已执行5指令高级语言编译后的字节指令的覆盖率。执行的最小单位;6圈复杂度简单
3、的说就是为了覆盖所有路径,所需要执行单元测试数量,圈复杂度大说明程序代码可能质量低且难于测试和维护。B了解代码覆盖率背景-现状漏测性能问题发布流程慢查询历史bug其他故障分类应用接入:8%发布拦截:1%发布故障:3%功能漏测占比:50%C故障数据背景-决策D决策规划现象 故障多 漏测占比大思路 拦截未测试的发布 覆盖率可以衡量代码测试程度决策 全量拦截 代码覆盖率高于3/4一、覆盖率百分百落地 所有业务线、所有应用使用覆盖率二、覆盖率指标提升 覆盖率拦截指标大于3/402覆盖率百分百落地覆盖率百分百落地-现状问题落地落地8%不想配不能配不知道不想被拦截!使用覆盖率业务异常了测试过了,没有显示。
4、没人告诉我用户免配置无干扰用户覆盖率百分百落地-提炼需求全量落地免配置用户不接入用户不运维无干扰使用无异常抽象需求需求分析方案选型落地实践需求落地权利责任覆盖率百分百落地-覆盖率配置现状能力归属:覆盖率是应用画像的一个属性;操作配置:应用页面、发布页面应用发布打包开启覆盖率启服务加载覆盖率启动后部署阶段需求分析方案选型落地实践用户免配置如何使用覆盖率覆盖率百分百落地-方案对比默认开启,用户不可修改问题:一对多的配置散落在各地,管理员配置也会出现版本不一,运维困难的问题能力转移一对多的关联关系,将覆盖率的权限移交给平台。方案一方案二需求分析方案选型落地实践用户免配置覆盖率百分百落地-全局配置能力
5、转移:应用管理-平台管理应用发布打包启服务应用启动后部署阶段agent环境Agent平台管理用户免配置需求分析方案选型落地实践覆盖率百分百落地-干扰场景干扰用户的场景业务异常发布失败异常定位用户需求不要干扰我工作需求分析方案选型落地实践无干扰用户覆盖率百分百落地-方案介绍常规方案1-排除异常代码A、排除项目:agent的管理平台配置应用跳过覆盖率安装;B、排除路径:配置需要过滤的包路径;需求分析方案选型落地实践无干扰用户覆盖率百分百落地-方案介绍常规方案2-修改业务代码在 Java 中,如果一个对象的某些属性不希望被序列化,可以将这些属性标记为 transient业务开发中,使用反射的正确姿势
6、是添加transform判断。需求分析方案选型落地实践无干扰用户覆盖率百分百落地-方案介绍优雅方案-修改JDK反射思路:1.出问题的方法是反射类;2.如果修改反射的方法过滤$jacoco开头的属性就可以不用业务线再调整;3.ASM修改class字节码,理论上可以修改反射类。classFileClassFileLoadHookClassFileTransformerJVM类加载完成TransFormClassFile需求分析方案选型落地实践无干扰用户需求分析方案选型落地实践无干扰用户覆盖率百分百落地-方案对比方案方案检测缺失检测缺失用户成本用户成本风险风险选择选择排除应用、路径排除应用、路径是中