手q专项测试最佳实践


手Q专项测试最佳 腾讯手Q victorhuang 实践 Agenda •  专项测试为何&为何物 •  专项测试体系总览 •  资源类性能测试最佳实践 •  交互类性能测试最佳实践 •  小结与展望 专项测试为何&为何物 •  移动化要面对的两大难题 差异 稀缺 专项测试为何&为何物 •  移动化要面对的两大难题 0 20000000 40000000 60000000 80000000 100000000 120000000 使用用户 0 20 40 60 80 100 120 140 160 180 3 5 31 1 4 2 2013022 GT- I9300 GT- S7572 MI 2S MI 2SC MI 3 WebP解码耗时(ms) 相差近两倍 5千万,17.8% 专项测试为何&为何物 网络 磁盘 CPU 交互 电量 时延 内存 流畅 性能 稳定 兼容 安全 专项测试体系建设:兼容 兼容 指标 App兼容 OS兼容 终端硬件兼容 特征 层出不穷 策略 静态检查(兼容性规则) 人工测试(众测) 积累经验(兼容性组件) 专项测试体系建设:稳定 稳定 指标 CRASH率 ANR, WatchDog(Timeout) 特征 场景多,覆盖难 难重现 策略 静态检查 灰度测试+crash上报 随机测试(monkey) 交互类性能测试最佳实践 1S ,2S, 3S …..30S …..40S 交互类性能建设 交互类性能 指标 流畅度(FPS,JANKY) 响应时延 特征 直观感受 复杂难查 策略 分流资源类性能 数据上报(卡上报,性能数据采集) 性能监控 竞品测试 性能监控 •  基于UI自动化测试的性能监控 发现类似这样的问题 交互类性能测试最佳实践 12 10 17 9 10 8 8 0 2 4 6 8 10 12 14 16 18 4.7 5 5.1 5.2 5.3 5.4 5.5 QT4A发现性能缺陷/版本 汇总 交互类性能测试最佳实践 •  优势 – 复杂->简单 •  场景 •  变更代码 – 数值敏感度 •  劣势 – 场景有限 – 固化思维 交互类性能建设 交互类性能 指标 流畅度(FPS,JANKY) 响应时延 特征 直观感受 复杂难查 策略 分流资源类性能 数据上报(卡上报,性能数据采集) 性能监控 竞品测试 交互类性能测试最佳实践 •  数据上报 – 被动上报 •  质量上报 (分析能力:低) •  卡上报 (分析能力:中) •  关键路径分析上报(分析能力:高) – 主动上报 •  用户反馈趋势分析(分析能力:低) framecounter/(currentTime-startTime) 记录startTime 质量上报:流畅度 滑动列表 Draw(回调) framecounter+1 reportScrollStateChange(回调) OnScrollListener. SCROLL_STATE_FLING 其他STATE 质量上报:流畅度 卡上报 卡上报 关键路径分析上报 发送指令 采集并返回关键路径trace/log 用户反馈分析 小结 01 03 02 04 优势 易于分析定位 客观公平 劣势 无法反应用户的真实感受 优势 表达真实感情 优化带来的真实口碑 劣势 难以形成客观数据 难以分析定位 主动反馈 被动反馈 资源专项体系建设 资源类性能 指标 CPU (cpu usage, overload,thread cpu cost) 内存 (内存泄漏,内存常驻,OOM,GC) 网络(流量合理性,流量兜底策略,传输速度) 磁盘(文件I/O, 数据库,磁盘空间占用, 安装包) 电量(mAh, wakeup, condion, 网络操作频率) 特征 后知后觉 易查 策略 静态检查 动态检查 反哺交互类性能 静态检查 •  静态检查 – I/O资源规则:select * – 内存资源规则:new String, webview独立进程, StacBitmap – CPU资源规则:for(xx)中调用复杂函数 – Bitmap使用规则 – 电量规则:new WakeLock 静态检查 0 50 100 150 200 250 300 静态检查-性能BUG 手Q 空间 静态检查 •  优点 – 敏捷速度快 – 稳定 – 直达代码,解单速度快 •  缺点 – 复杂的数据/逻辑无法覆盖 动态检查 性能测试 测试 性能监控 误报 分析内存Dump - GCPath白名单 不仅仅 内存泄漏 更多规则 动态检查 •  动态检查 LOG PROC信息 触发条件 导出分析类 数据 YES 内存dump Trace Bugreport Log event App Log 自动提单 动态检查:内存分析云 •  遇到的问题: – 内存泄漏误报怎么办? – 取dump引入ANR问题?(尤其是配合自动化) – 仅仅只是可以用来发现acvity泄漏吗? 动态检查:内存分析云 •  内存泄漏误报怎么办? •  在heapsize60%标准下,添加InApp SDK方式 •  GCPath白名单 •  GCPath + Value白名单 动态检查:内存分析云 •  InApp SDK内存泄漏的动态检查 New CheckMemLeak onDestory List, String>> 自动导出hrof Add Get 是否为空 NO YES 动态检查:内存分析云 •  取dump引入ANR问题? – 仅在研发流程中使用 – 取DUMP时弹出LOADING DIALOG – 自动化发现ANR, 分析当时机器的CPU占用 动态检查:内存分析云 – 仅仅只是可以用来发现acvity泄漏吗? • Acvity泄漏 • 图片尺寸分析 • 重复内存块分析 • Single Cache分析 • 565自动检查 动态检查 动态检查 0 2 4 6 8 10 12 14 16 18 5.3.1 5.3.2 5.3 5.4 内存分析云提单情况 有效单 动态检查 动态检查 资源类性能测试最佳实践 •  优点 – 补充静态检查的缺失 – 可以配合任何的UI自动化测试/手工测试 – 减少性能测试的人力投入 •  缺点 – 场景复杂,分析难度大 小结和展望 交互类性能 资源类性能 Break Rules &Cases 自动化测试 手工测试 数据上报 Findbugs 分析云 自动提单 @InfoQ infoqchina

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

1125281337

贡献于2017-01-01

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf