App快速自动化回归测试体系
2020-02-27 566浏览
- 1.testerhome app快速回归测试 seveniruby 黄延胜
- 2.About Me ❖ ❖ 黄延胜 (思寒) ❖ TesterHome测试社区技术专家 ❖ 现任多家公司的测试技术顾问 主要⼯作履历 ❖ 阿⾥巴巴, 百度 ❖ 中航信独⽴咨询师 ❖ Testin产品总监 ❖ 雪球测试技术专家
- 3.app传统测试流程
- 4.移动互联⽹公司的简化架构
- 5.通⽤测试流程
- 6.研发阶段的质量保证实践 ❖ code review ❖ 代码审计 ❖ 单元测试 ❖ ⾃动化冒烟测试 ❖ 研发⾃测
- 7.测试阶段的质量保证实践 ❖ ❖ ❖ ⼈⼯测试体系 ❖ 测试组功能测试 ❖ 内测 + 众测 + 公测 等外部测试资源 ⾃动化测试 ❖ UI⾃动化测试 ❖ 接⼜⾃动化测试 ❖ ⾃动遍历测试 专项测试 ❖ 客户端专项测试: 新⽼版本兼容 机型兼容 性能 卡顿 电量 流量 FPS 安全 ❖ 服务端的专项测试: api回归测试 流量对⽐ 安全
- 8.竞争的本质--奥林匹克格⾔ ❖ ❖ ❖ 更快 ❖ 更快的产品迭代速度 ❖ 更快的质量反馈 更⾼ ❖ 更⾼的质量 ❖ 更⾼的⽤户体验 更强 ❖ 更加专业 更加全能 ❖ 产品 研发 测试 ⾓⾊的融合 devops “全栈”
- 9.如何平衡质量与效率 ❖ 解决执⾏问题: 分层⾃动化测试 ❖ 解决数据问题: 测试监控与测试建模 ❖ 解决应⽤问题: 数据分析
- 10.分层⾃动化测试
- 11.测试监控与测试建模 ❖ app布局数据 ❖ 业务流程数据 ❖ 性能数据 ❖ 接⼜数据 ❖ 覆盖率数据 ❖ 能监控就监控 ❖ 没有监控就建模
- 12.数据分析 ❖ 业务流建模 ❖ 像code diff那样⽐对新⽼版本的测试建模数据 ❖ 可能的机器学习与深度学习
- 13.分层⾃动化测试之app测试
- 14.Android⾃动化测试
- 15.iOS⾃动化测试
- 16.UI⾃动化测试的落地困难 ❖ ❖ ❖ 投资回报率不理想 ❖ UI和业务流程变更是最主要变更 ❖ 容易被⼲扰 执⾏慢 技术门槛⾼ ❖ 框架技术门槛⾼ ❖ 技术⼈才难招 没有UI⾃动化的代价 ❖ 回归测试不能有效覆盖 ⼈⼒疲于应付
- 17.UI⾃动化的常规建议 ❖ 侧重于回归测试 ❖ 控制规模 ❖ 降低编写⽤例的成本 录制回放 录制⽣成⽤例 ❖ 良好的维护模型 PageObject
- 18.UI⾃动化的最后⼀公⾥ ❖ ⾃动遍历测试 ❖ ⾃动化测试理念的改进 [Another Day] ❖ ⽤例⽣成 [Another Day]
- 19.⾃动遍历测试 ❖ 通过不断遍历app中页⾯和路径尝试发现问题的⽅法 ❖ 弥补现有⾃动化测试的不⾜ ❖ 解决Monkey⼯具可控性差的问题
- 20.⾃动遍历的价值 ❖ 验证UI的可⽤性 ❖ 基本功能 ❖ 兼容性 ❖ ⾃动化的性能测试. 结合OneApm, NewRelic ❖ 发现内存泄漏 需要借助LeakCanary和MLeaksFinder ❖ 发现稳定性问题 ❖ UI Diff 验证新⽼版本的功能差异 ❖ 抓取接⼜请求分析
- 21.常见遍历⼯具 ❖ google android原⽣monkey ❖ 百度smartmonkey ❖ 腾讯newmonkey ❖ vigossjjj smart_monkey ❖ seveniruby appcrawler
- 22.appcrawler⼯具 ❖ ⽀持遍历控制 ❖ 数据建模 ❖ ⽀持monkey事件 ❖ ⽀持android和ios测试 ❖ ⽀持native和hybrid开发 ❖ ⽀持微信和微信webview⾃动化
- 23.⾃动遍历的报告
- 24.
- 25.app功能遍历思维导图
- 26.UI Diff ❖ 对⽐新⽼版本的UI ❖ 控件变化 ❖ 数据变化 ❖ 降噪
- 27.端到端api的diff分析 ❖ ⽤proxy拦截⽹络流量 ❖ ⾃动遍历 ❖ 分析相同事件在新⽼版本之间的差异 ❖ 请求变化 ❖ 响应变化
- 28.内存问题检测 ❖ ❖ 导致问题 ❖ crash ❖ 卡顿 解决办法 ❖ 传统解决⽅案 Android Monitor + iOS Instruments ❖ ⾃动化解决⽅案 LeakCanary MLeaksFinder BlockCanary ❖ ⾃动遍历+sdk
- 29.弱⽹测试 ❖ ❖ 弱⽹模拟⽅案 ❖ FaceBook ATC + 树莓派 ❖ Mac Charles + Windows Fiddler + 全平台BurpSuite ❖ 定制代理服务器 重要场景 ❖ 弱⽹场景 响应慢 超时 ❖ Mock 验证健壮性, ⽐如修改字段类型和服务端返回的null值 ❖ Fuzz 验证边界值 利⽤代理⾃动⽣成边界值 ❖ ⾃动遍历+定制proxy 批量检测弱⽹
- 30.⾃动化的冒烟测试 ❖ ❖ 基于debug包的⾃动化测专项试 ❖ monkey健壮性测试 ❖ ⾃动遍历+LeakCanary⾃动检测内存泄漏 ❖ ⾃动遍历+BlockCanary⾃动检测卡顿 ❖ ⾃动遍历+Bugly崩溃检测 ❖ ⾃动遍历+接⼜分析检测接⼜质量和变更跟踪 基于test包的⾃动化冒烟 ❖ 少量的⾃动化 ❖ ⾃动遍历
- 31.app测试的总结 ❖ ❖ 充分利⽤⾃动化 ❖ 借助于⾃动遍历 ❖ 借助于专项sdk分析 ❖ 借助于api hook proxy等技术 ⾃动遍历不是银弹
- 32.分层⾃动化测试之接⼜测试
- 33.推荐的接⼜测试优秀实践 ❖ 选择优雅的接⼜测试框架 ❖ 录制+⽣成测试⽤例 ❖ ❖ 基于har或者tcpdump的数据源 ❖ 直接⽣成接⼜测试框架代码模板 ❖ 直接⽣成配置驱动的⽤例 excel yaml 新⽼版本之间的接⼜对⽐分析 ❖ 结构对⽐ ❖ 重构时的数据对⽐
- 34.开源接⼜测试框架Rest-Assured ❖ 简约的接⼜测试DSL ❖ ⽀持xml json的结构化解析 ❖ ⽀持xpath jsonpath gpath等多种解析⽅式 ❖ 对spring的⽀持⽐较全⾯
- 35.Rest-Assured⽰例
- 36.⾃动⽣成接⼜测试⽤例 ❖ ⽤于⼿⼯测试场景⽣成接⼜测试⽤例 ❖ 数据来源 Proxy Har ❖ 利⽤模板技术⽣成测试⽤例代码模板 ❖ 包含请求和断⾔的⾃动⽣成 ❖ ⾃动⽣成数据驱动的测试⽤例模板
- 37.通过抓包⾃动⽣成接⼜测试⽤例
- 38.接⼜⼤数据回归⽅案 ❖ ❖ ⼤数据对⽐ ❖ Diffy ❖ TcpCopy ❖ Gor 不同环境diff ❖ 测试环境 预发布环境 ⽣产环境
- 39.twitter的diffy介绍
- 40.接⼜测试中的回归测试 ❖ diffy需要数据⼀致的环境. 有⼀定限制 ❖ 仍然需要结合接⼜测试框架做补充 ❖ 结构diff ❖ ❖ 字段类型变更检测 ❖ 字段缺失与新增检测 数据diff ❖ ❖ 重构项⽬验证数据正确性 使测试框架智能判定新⽼版本的变更并进⾏预警
- 41.测试监控与测试建模
- 42.测试建模 ❖ ❖ ❖ UI测试建模 ❖ app的界⾯数据本质是dom树 ❖ 控件的事件本质是⼀次请求事件 接⼜测试建模 ❖ 请求数据与响应数据 ❖ 接⼜请求 其他数据建模 ❖ 性能 覆盖率 ... ❖ 代码调⽤流 数据流
- 43.回归测试的本质 ❖ UI测试与接⼜测试的本质就是函数式 res=f(req) ❖ 回归测试的本质是测试2个函数 ❖ res_new=f_new(req) ❖ res_old=f_old(req) ❖ diff
- 44.像code diff那样去diff你的app与service ❖ ❖ ❖ App Diff 代表作品AppCrawler ❖ UI Diff ❖ 接⼜Diff ❖ 性能Diff Service Diff 代表作品Diffy ❖ 结构Diff ❖ 数据Diff 函数级别Diff 代表作品暂⽆ ❖ 函数的⼤数据输⼊输出对⽐ ❖ 数据流diff 调⽤链diff
- 45.测试数据监控 ❖ 研发⾃测 ❖ ❖ 监控研发内测程度 内部测试+公测+线上监控 ❖ 监控分析测试覆盖度 ❖ 定位问题 ❖ 监控使⽤⼈数 ❖ 监控使⽤深度
- 46.数据来源和处理流程
- 47.有没有问题
- 48.什么样的问题
- 49.测试进展分析
- 50.漏测分析
- 51.总结 ❖ ❖ ❖ 分层⾃动化测试 ❖ ⾃动化冒烟测试 ❖ ⾃动遍历测试 ❖ 接⼜测试 测试数据监控与测试建模 ❖ 接⼜监控数据 ❖ app使⽤数据 ❖ 接⼜测试数据 数据分析 ❖ diff 最简单的回归测试策略 ❖ 机器学习or深度学习
- 52.测试⼯作中的数据⼀直没有得到有效的利⽤和积累 我们需要重视我们的质量数据 利⽤⼤数据相关的技术完善新时代的测试体系 seveniruby@testerhome.com