Presentation is loading. Please wait.

Presentation is loading. Please wait.

论app性能专项测试和监控 演讲者 金阳光(王劲松) 蔡植楷 职位 QA负责人 科长 来自 百度 努比亚.

Similar presentations


Presentation on theme: "论app性能专项测试和监控 演讲者 金阳光(王劲松) 蔡植楷 职位 QA负责人 科长 来自 百度 努比亚."— Presentation transcript:

1 论app性能专项测试和监控 演讲者 金阳光(王劲松) 蔡植楷 职位 QA负责人 科长 来自 百度 努比亚

2 2、曾中兴努比亚测试开发、腾讯TEG过亿日活负责人
金阳光(王劲松)介绍 1、重庆邮电大学计算机硕士 2、曾中兴努比亚测试开发、腾讯TEG过亿日活负责人 3、现就职于北京百度质量部 4、录制Android & IOS自动化测试视频 自我介绍

3 摘要 一 案例背景 二 性能测试挑战 三 性能测试在项目流程中重要性 四 性能测试技术难点分析 五 性能测试建构图 六 性能测试落地部署 七
性能测试数据分析 曾经尝试 案例ROI分析 案例启示

4 优秀APP 一 案例背景 ? 优秀的性能对app很重要 a)提升用户体验 b) 符合产品设计
性能测试是通过测试工具模拟多种正常、峰值,以及异常负载条件来对系统的各项性能指标进行测试

5 性能测试挑战 不连接 USB 指标 自动采集 测试用例 自动Run 不ROOT 不越狱 建立评测 说清楚性能测试难点和要点

6 线上阶段 Coding 线下阶段 系统提测 灰度发布 三 性能测试在项目流程中重要性 开发阶段 编 译 开发阶段 小范围体验 单元测试
专 项 众 测 监 控 线上阶段 性能测试在项目流程中重要性 Coding 开发阶段 线下阶段 编 译 代码扫描 Code review 单元测试 冒 烟 系统提测 开发阶段 灰度发布 小范围体验 详细讲黄色工具

7 性能测试配合使用平台和工具 性 能 专 项 评 测 监 控 编 译 代码扫描 工具APP类 腾讯APT 百度慕斯 腾讯bita 阿里TMTS
性 能 腾讯APT 百度慕斯 腾讯bita 阿里TMTS 百度mvp 专 项 百度crab 腾讯melt GT随时调 百度坚果 评 测 舆情平台 百度UFO VA平台 百度开放云 监 控 随身调GT Miss监控 扫雷平台 腾讯bugly 编 译 Jenkins 代码扫描 findBugs 腾讯卡帕莱sonar Coverity 百度godeyes PCLint 工具APP类 微信NewMonkey 百度SmartMonkey 百度SmallApple 坚果: 内存泄漏插件:一款基于开源的Leakcanary改造的坚果插件,支持Activity和Fragment的内存泄漏监控,正常操作过程中发生泄漏会弹Toast消息报警并Dump Hprof,通过坚果App能自动分析出每个泄漏结果的最短GC路径 App监控体验插件:集成了移动端线上监控平台 SDK,可以进行App端监控体验,或直接联系监控平台负责人进行接入 网络监控插件:能监控App的Http网络请求,目前只支持DefaultHttpClient类型的请求 UI性能插件:目前支持StrictMode开启,能监控UI主线程读写磁盘数据、发起网络请求等异常点,并显示完整堆栈信息 崩溃ANR插件

8 a、 通用指标Get b、 FPS、log不开Root c、 功耗和电量 d、 特殊app a、记ViewID,智能消除弹窗
性能测试技术难点分析 a、 通用指标Get b、 FPS、log不开Root c、 功耗和电量 d、 特殊app a、记ViewID,智能消除弹窗 b、算关键路径,智能回溯 c、跳出app智能回退 d、脚本自启动 e、弹出广告处理 f、 支付类加密SDK 标准:参照MTBF 稳定性测试万能脚本,关键技术 a、记录没个ViewID,智能消除弹窗 b、关键路径概率、停留时间,不重复 c、跳出app智能回退(调用UIautomator) d、脚本手机自启动(am start -instrumentation) 指标关键获取: a、 通用指标:cpu、内存、启动时长 (DumpSys命令或者 ActivityManager类) b、 FPS不需要开Root权限(游戏类app关注) b、 功耗和电量获取Cpu轮询jiffies c、 特殊app(、视频娱乐类)获取网络流量和下载、播放,get播放内 核 数据写入上报:json解析写存储卡,然后上报 json解析写存储卡,然后上报

9 性能自动化建设-线下 分析内存 优化布局分析 FPS采集 智能遍历 追踪Trace堆栈 1、配合Uiautomator+智能Monkey算法
2、层级嵌套分析工具(权重分析) 3、测试UI界面响应和娱乐类app响应 4、函数响应时间追踪Trace堆数据 5、提取内存HPROF,分析内存泄露 分析内存 优化布局分析 FPS采集 智能遍历 追踪Trace堆栈

10 危机 性能线上建设-E2E 网络的DNS 查询的时间 APP启动时长 页面切换耗时 关键场景路径耗时 数据更新率监控 Push推送监控
网络响应时间 Bug定位 网络异常 Crash上报 性能线上建设-E2E 危机 场景 e2e

11 网络关注点 响应时长关注点 响应时长 网 络 首字节时间(TTFB) 1. 页面加载时间 开启GZIP压缩 FPS
使用长连接(keep alive) 是否合并CSS和JS文件 是否设置静态内容缓存时间 合理用cookie 网 络 网络关注点 开启严苛 7.webP格式图片 8.大图片 9.大文本 1. 页面加载时间 FPS 静态分析工具 函数响应时间 6. StrictMode GC 响应时长 响应时长关注点 详细 说cookie和大文本图片 断点续传 严苛模式:虚拟机和开发线程 1. 页面加载时间 通过抓取logcat日志或者代码埋点 FPS 通过GPU呈现模式分析(Profile GPU rendering)得到帧数据 静态分析工具 Lint可以静态扫描找出布局可优化的代码 另外可自定义一些规则如:ListView中没有重用convertView, 没有使用固定行高等… 函数响应时间 Total call排序(函数的调用次数 InclusiveCpuTime排序,包含子函数的调用函数耗时 6. StrictMode 找出在UI Main Thread上进行I/O、网络请求 GC 应用运行过程中GC是否频繁,在3.0以下将会阻塞主线程 网络响应度量指标 首字节时间(TTFB) 开启GZIP压缩 使用长连接(keep alive) 是否合并CSS和JS文件 是否设置静态内容缓存时间 合理使用COOKIE webP格式图片 大图片 大文本

12 电量关注点 稳定性关注点 稳 定 性 电 量 Cpu单进程jiffies 1.特殊场景的内存泄露、 兼容性 必须cpu固定频率下
休眠 wakeLock唤醒锁 电 量 1.特殊场景的内存泄露、 兼容性 2.Low memory 3.弱网络 4.异常场景crash 稳 定 性 电量关注点 稳定性关注点 1. 页面加载时间 通过抓取logcat日志或者代码埋点 FPS 通过GPU呈现模式分析(Profile GPU rendering)得到帧数据 静态分析工具 Lint可以静态扫描找出布局可优化的代码 另外可自定义一些规则如:ListView中没有重用convertView, 没有使用固定行高等… 函数响应时间 Total call排序(函数的调用次数 InclusiveCpuTime排序,包含子函数的调用函数耗时 6. StrictMode 找出在UI Main Thread上进行I/O、网络请求 GC 应用运行过程中GC是否频繁,在3.0以下将会阻塞主线程 网络响应度量指标 首字节时间(TTFB) 开启GZIP压缩 使用长连接(keep alive) 是否合并CSS和JS文件 是否设置静态内容缓存时间 合理使用COOKIE webP格式图片 大图片 大文本

13 内存关注点 CPU关注点 CPU OOM内存溢出 ANR 压测提取堆空间log Crash 指标:Davlik Pss Unkown Pss
Total Pss 内 存 内存关注点 CPU CPU关注点 User(用户使用) SYS(系统等待) IOW(磁盘IO等待) 1. 页面加载时间 通过抓取logcat日志或者代码埋点 FPS 通过GPU呈现模式分析(Profile GPU rendering)得到帧数据 静态分析工具 Lint可以静态扫描找出布局可优化的代码 另外可自定义一些规则如:ListView中没有重用convertView, 没有使用固定行高等… 函数响应时间 Total call排序(函数的调用次数 InclusiveCpuTime排序,包含子函数的调用函数耗时 6. StrictMode 找出在UI Main Thread上进行I/O、网络请求 GC 应用运行过程中GC是否频繁,在3.0以下将会阻塞主线程 网络响应度量指标 首字节时间(TTFB) 开启GZIP压缩 使用长连接(keep alive) 是否合并CSS和JS文件 是否设置静态内容缓存时间 合理使用COOKIE webP格式图片 大图片 大文本

14 性能监控 Server Driver 被测APP GetViewID TestCase RemoteServer BackApp 五
性能测试设计架构图 性能监控 Server 进程1-- writeData 进程3-- sendData 进程2-- performance Driver TestCase 被测APP RemoteServer GetViewID BackApp 举个滴滴uber例子

15 01 02 03 04 本地百台机器跑定制化Case脚本收集指标 App和自动化 嵌入用户反馈 Case平台众包 和数据统计上 下发
性能测试落地部署 01 02 03 04 本地百台机器跑定制化Case脚本收集指标 异地靠用户众测 App和自动化 Case平台众包 下发 嵌入用户反馈 和数据统计上 报SDK 阿里tmts、itesin、易测云等等

16 七 性能测试数据分析 做到这步完成了? Kaopu-app(iphone5s) Ionic-demo(note4)
Weixin(iphone5s) 点击时间 加载时间 帧数 25.05 25.19 17 17.03 17.21 8 0.11 0.14 3 26.24 27.08 14 18.01 10 1.10 1.14 4 28.14 29.14 20 18.11 18.21 2.29 3.07 30.12 30.26 19.01 19.10 9 3.22 4.00 31.12 31.24 12 19.22 20.01 4.22 4.27 5 32.26 32.22 20.10 20.20 5.13 5.18 32.29 33.10 11 21.00 21.09 6.10 6.17 7 33.20 34.07 21.18 21.26 7.03 7.09 6 34.13 34.25 16.12 16.21 7.29 8.85 35.05 35.20 15 15.24 16.03 8.21 8.28 做到这步完成了?

17 一拖多 抓取堆日志 Junit 内存泄露抓取 GET-hprof 云端下发 用原生态 开Root 测试任务 读取ANR 无线wifi-USB
曾经尝试 开Root 读取ANR 连接数据线 app代码监控 云端下发 测试任务 抓取堆日志 内存泄露抓取 GET-hprof 用原生态 代码插桩 配合EMMA 一拖多 Junit 无线wifi-USB Android Ios 动态

18 A B C F G E D 2-3个人 Case 自动化 平台智 能分析 用户参与 整合 Jenkins 用户不 用操作 自动收 集指标
案例ROI分析 A 2-3个人 B C F G E D Case 自动化 平台智 能分析 用户参与 整合 Jenkins 用户不 用操作 自动收 集指标 推广产品线 项目周期时间短 QA人员不足 在项目周期时间短、QA人员不足的情况下,不但能够提高产品质量,而且能够不断CI、去适应不断变化的产品需求 1、只需要2-3个人维护(Android和IOS) 2、手工操作Case变成自动化 3、让用户参与(二维码或者Push下发app) 4、系统方便整合到Jenkins 不用买机器 不用排场测QA 用户调起app不用操作 性能指标自动收集 数据上报server,一个专门QA分析

19 统一性能指标 聚焦TOP问题 多纬度评估 性 能 众 测 指 标 智 能 过 滤 线上监控预警分析 监控定位模块 提升召回率
案例启示 统一性能指标 聚焦TOP问题 多纬度评估 性 能 众 测 指 标 智 能 过 滤 线上监控预警分析 监控定位模块 提升召回率

20


Download ppt "论app性能专项测试和监控 演讲者 金阳光(王劲松) 蔡植楷 职位 QA负责人 科长 来自 百度 努比亚."

Similar presentations


Ads by Google