




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、代码覆盖率管理实时代码染色覆盖率是什么代码覆盖是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。代码插 桩 器覆盖率数据编译插桩后代码运行覆盖率的作用了解测试情况测试过程中覆盖和未覆盖的 地方,可能存在的风险形成质量指标作为版本发布的前 置要求发现测试死角多个测试用例都覆盖 不到的代码找到历史废弃代码 收集方法覆盖率,为废 弃代码判断提供依据度量自动化用例为自动化用例提供覆盖率统计情况帮助代码优化分析热区代码,为优化提供支撑辅助代码走读使业务同学快速了解代码新型代码调试工具帮助定位研发过程中的问题代码实时染色常规覆盖率工具精准回归构建代码调用关系,自动选择用例
2、对覆盖率的理解代码覆盖率是银弹100%的覆盖率就能保证程序没有 bug代码覆盖率是一种度量工具可以使用它了解测试的效果,发现测试的死角,从而实现精准测 试,为软件质量保驾护航YesNo分类收集覆盖率并应用App人工测试自动化用例Monkey线上用户覆盖率分析 服务质量 卡点精准 回归性能优化代码 调试用例优化代码 下线多维度 覆盖率 数据研发流程打通预编译模块Bundle 1Bundle 2Bundle 3模块仓库代码仓库目标模块 代码目标模块产物App覆盖率包执行数据覆盖率报告拉取依赖拉取代码编译构建产生插桩器插桩联合计算源代码编译中间产物移动端覆盖率服务端演进 多模块 APP 本地覆盖率收
3、集本地覆盖率报告怎样支持多人协作?怎样突出测试重点?怎样推动覆盖率改进?多用户覆盖率在线收集计算手机上传覆盖率数据App 覆盖率包构建平台用户App 覆盖率包构建安装覆盖率服务APP 覆盖率包Bundle 1Bundle 2Bundle 3操作 APP分割合并计算生产报告构建收集计算结果计算节点bundle 1bundle 2bundle 3仓库 1仓库 2仓库 3编译中间文件报告服务器多用户覆盖率在线收集计算产出物多 bundle 统计+变更覆盖率业务线汇总怎样让覆盖率帮助提高测试效率?代码实时染色 - 多用户数据实时收集计算路由/负载均 衡连接控制 器执行数据流控制数据流执行数 据流数据流
4、实时处理节点X多组状态/控制数据流实时解析器存储服务数据推送前端应用受控收集模块APP报告 渲染报告渲染器数值 计算用户操作 APP控制界面设备 管理会话 控制仓库服务计算进程计算进程报告展示操作会话设备数据处理代码实时染色产出物厂商实时收集计算执 行数据+独立统计空间进化的覆盖率客户端演化篇主讲人:翟帅来自支付宝技术团队负责业务:负责iOS代码覆盖率系统研发负责研发基于图像识别的自动化测试系统进化的覆盖率客户端覆盖率技术演进使用开源方案阶段:支持多人协作阶段覆盖率数据dump时机可 控将覆盖率数据与版本号 绑定增加上传覆盖率数据功能遇到了瓶颈单机阶段iOS使用的gcov方案Android使用
5、JaCoCo方案H5使用istanbul方案部署到打包平台支持App:支付宝部分组件支持App的全部组件来自上帝的吐槽难用测毛线覆盖率啊:-(数据到底有没有传上去o_O?我擦嘞覆盖率包又crash了!我都测了好几遍了,怎么还是没有数据!咦?我测到这段代码了,怎么显示没有覆盖?啥时候才能看到报告啊?装个覆盖率包慢死了还没有dump 完APP就被 kill了_gcov_flush 存在crash风险客户端覆盖率数据dump慢插桩导致被 测App体积 严重膨胀没有在界面 上给用户明 确提示gcov解析gcno、gcda过慢导 致报告生成不 及时gcov方案的缺陷编译器的缺陷梦想还是要有的!覆盖率包体
6、积还得小跑的稳稳地打包还得块假如一遍边操作一边就能看到覆盖率的变化岂不是很爽!嘿小哥醒醒别睡了!做梦呢怎么搞上帝才能满意?移动端覆盖率技术演进改造istanbul简化版本的istanbulH5实时覆盖率H5实时覆盖率一个基于流式的数据上报模块Android实时覆盖率一个基于流式的数据上报模块Android实时覆盖率JaCoCo打包平台打包平台业务层Web层业务逻辑持续集成打包脚本层release包脚本debug包脚本行级覆盖率包脚本函数级覆盖率包脚本白名单机制Clang编译器Driver自动链接LLVM Pass 实现插桩运行时Lib探针实现 lib带有覆盖率的App程序App业务模块模块1模
7、块2模块3.覆盖率数据上报模块数据上传数据压缩数据dump策略数据上传策略配置中心日志输出覆盖率数据收集模块收集覆盖率SDKprobe_lib 控制探针云测平台线上服务线下服务从伙伴平台拉取 apln数据从线上存储服务拉 取合并后的apda数 据APLCovInfo文件gitlabgenhtml 报告数据存 储服务覆盖率数据 合并服务APLCov覆盖率数据 合并服务APLCov自研覆盖率技术iOS方案架构图自研覆盖率技术方案原理图.c .cpp .m .mm file插桩阶段compiler分析程序指令并在相关 指令之间插入桩点指令LLVMAliapyInstrument插桩程序1链接阶段li
8、nk probe_lib liblinker2运行App阶段App覆盖率收集程序记录执行函数的hash和次数负责将覆盖率数据写入磁盘3APLCov覆盖率数据解析阶段4APLCov 根据hash值将apln文件 和apda文件合并,得到覆盖率数据.o file.apda file.apln fileApp 覆盖率报告记录函数ID、文件名、函 数名、行号记录函数ID、执行 次数得到可执行文件dump性能指标对比用Clang作为被测程序308.4913.0323312插桩后产物体 积对比(单位 MB).425.264.91.93执行时间(单位 小 时)6.612. 97.16.7内存开销(单位 MB
9、)1071.025.0数据解析耗时(单位 秒)326.175.0覆盖率数据文 件大小(单位 MB)00.1dump耗时(单 位s)131.未插桩GcovAlipay行级Alipay方法级蚂蚁自研覆盖率方案演示真香警告自研覆盖率带来了什么?吐槽声音少了,好评声多了找我们排查问题的人少了代码覆盖率也可以用来排查问题了测试同学的负担轻了,工作效率高了代码覆盖率的应用更广了技术红利拥有控制编译器读取、修改IR(中间代码)的能力伙伴平台可以打出带有这些探针的包行级别插桩能力函数级别插桩能力monkey测试热区分析code_cover 覆盖率功能自动化埋点probe_lib 提供探针的实现、保证线程安全精准回归调用链路分析静态分析能力依赖分析、泄漏分析、 crash业务方可以复用覆盖率方案 意义:极大降低业务开发成本提供了一种动态分析框架意义:极大的降低了技术门槛,为动态分析的技术探 索和创新提供支撑。提供一种在IR代码上 做静态分析的手段进化的覆盖率总结覆盖率入门阶段 在单元测试中使用单机版覆盖率覆盖率平台化支持多人协 作情况下的 覆盖率统一插桩自动收集/上传多次数据合并跨版本迁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025园林景观设计合同
- 2025年HED-系列厚膜阴极电泳涂料项目建议书
- 2025合同电缆桥架安装规范
- 2025安置房的买卖合同
- 2025方案设计委托合同范本方案设计委托合同格式
- 2025职场英语口语熟练运用合同条款
- 2025年月桂醇聚醚磷酸钾项目建议书
- 2025长期重大疾病保险合同示范文本
- 2025合同签订要点全面解析
- 2025版本的铁路交通运输合同示范文本
- 中国政法知识产权诉讼专题讲座:知识产权诉讼攻防策略与技巧
- GB/T 5237.1-2017铝合金建筑型材第1部分:基材
- 工 程 量 确 认 单
- 2022山东高考语文答题卡(新高考I卷)word版3
- 2021年上海市工业技术学校教师招聘试题及答案解析
- 偏头痛PPT课件(PPT 43页)
- 工程管理专业毕业论文——施工组织设计
- 初中物理全册知识点总结(教科版)
- 神经病学绪论英文课件
- 工厂个人简历登记表格
- 用友U8数据字典
评论
0/150
提交评论