王鹏 搜狗 资深高级测试开发工程师

前端狗

2019/07/09 发布于 编程 分类

GMTC2019 

文字内容
1. 搜狗精准化测试的设计与实践详解 王鹏 资深高级测试开发工程师
2. 自我介绍
3. 自我介绍
4. 自我介绍 2008-2009 2009-2013 2013-2019 首正 腾讯 搜狗 • CRM 项目 • 搜搜PDB项目 • QQ工具栏项目 • 社区类项目
5. 目录 l 测试工程师的困境 l 精准化测试思想 l Sogou精准化测试设计与实践
6. 测试工程师的困境
7. 黑盒测试的挑战 过程 •多猜测 •不稳定 •难控制 效果 •个人素质 管理 •成本高 •难度大
8. 白盒测试的挑战 门槛高 单兵作战 目标单一 分析之殇
9. 精准化测试思想
10. 什么是精准化测试 用非常精准和智能的软件来解决软件测试的问题,并从根本 上引领软件测试从经验型方法向技术性方法的转型。
11. 精准 测试用例到代码逻辑的精准记录的双向追溯 函数调用关系计算 测试用例 代码逻辑 代码染色
12. 精准 精准的代码级的缺陷定位和崩溃分析 精准的测试充分度分析
13. 智能 回归用例自动筛选 自动化用例筛选与执行 持续集成
14. Sogou精准化测试设计与实践
15. 引入精准化测试的原因 • • • • 测试人员经验、能力不同。 测试范围圈定凭经验。 测试用例筛选难。 测试经验沉淀效果差。
16. 最初的目标 • • • • 精准的圈定测试范围。 对影响范围给出建议。 自动的筛选测试用例。 为黑盒测试实时提供覆盖率结果。
17. 筛选测试用例 版本提测 变更函数 测试用例 Diff结果解析 测试用例 函数调用关系 Sanity用例
18. 函数调用关系计算 例:开发为了实现功能1,同时修改了函数A和函数C,其中函数之间 调用关系如下。 功能1:C->A 功能2:B->A 问题:在做Sanity测试时,如何能够筛选出功能2的测试用例。 应用语言:java 应用工具:javacg 目的:通过对class文件的解析,计算函数之间的调用关系。
19. 函数调用关系计算
20. Diff结果解析 解析Diff结果文件,计算变 更文件名和变更代码段位置。 扫描源文件,计算出变更的 结合函数调用关系圈定受影 函数。 响的函数范围。
21. Diff结果解析 A.Java Change Code Code Segment1 StartPos1 EndPos1 Code segment2 A.Java Source Code Method1 StartPos1 EndPos1 Method2 StartPos2 StartPos2 EndPos2 EndPos2 Code segment3 Method3 StartPos3 StartPos3 EndPos3 EndPos3
22. Diff结果解析 解析代码diff结果:
23. Diff结果解析
24. 函数与测试用例的映射 人工录入 代码注释抽取 代码染色
25. 人工录入 支持多种信息录入方式,信息录入效率提升50%以上。 推进开发撰写代码注释,0成本自动录入函数信息。
26. 代码染色 执行黑盒用例 函数调用关系 代码染色 收集覆盖率 解析覆盖结果
27. 筛选用例流程 基线版本代码 测试版本代码 Diff 代码 代码 diff 变更的文件\类\方法 Diff 代码分析 依赖关系解析工具 代码关系库 Diff结果解析工具 和代码关系库比对 库中存在? 是 否 增加用例 用例集筛选工具 筛选用例 更新基线代码用例库 合并用例 测试版本用例集 基线代码用例库 函数信息梳理
28. 执行测试用例
29. 黑盒测试实时查看覆盖率 Java覆盖率 JS覆盖率 Jacoco 基于JSCover二次开发 On-the-fly 插桩+上报+proxy class 源文件、编译文件(ES6)
30. 黑盒测试实时查看覆盖率 JS覆盖率 代码插桩 • 源文件插桩 • 编译文件插桩 数据上报 • 触发事件上报数据 文件映射 • 线上->proxy->本地 生成报告 • 解析jscoverage.json • 生成html形式报告
31. 黑盒测试实时查看覆盖率 通过捕获事件进行覆 盖率实时上报 1. 页面切换 2. 鼠标移动 ……
32. ES6标准如何做覆盖率 .vue .js
33. ES6标准如何做覆盖率 源码 编译后 压缩混淆后 易读 不可执行 较易读 可执行 不易读 可执行
34. 黑盒测试实时查看覆盖率
35. 引入阶段 提测前 需求评审 用例编写 用例评审 提测前准备 提测走查 测试中 预发布 上线 执行测试用例 Diff代码分析 函数依赖关系 覆盖率人工分析 函数Diff结果 产品走查 筛选用例集 页面性能对比 分析与监控 CGI扫描 发布系统,XSS检测 线上验证 精准化测试
36. 更新源码 精准化测试实践 成都 Webtest接口 自动化 Diff解析 精准化平台 函数依赖计算 Webtest内容 类自动化 TXT:用例筛 选 UTS交互类自 动化 JS覆盖率部署 北京前端 北京后端 发布系统监控 平台 XSS安全扫描 持续集成 Java覆盖率部 署 Webtest接口 自动化 Thrift接口自动 化平台 Webtest内容 类自动化 Jarvan性能测 试平台 UTS交互类自 动化 Sonar静态代 码扫描
40. 精准化测试实践