• 性能测试 学习笔记


    Activity 启动过程

    system进程 --> 创建android虚拟机 --> Application onCreat
    -->创建主线程MainThead
    -->Activity init
    -->Activity onCreate
    -->界面渲染 #界面出现

    专项测试

    崩溃(crash、弱网)

    自动遍历、横竖屏切换、快速进退
    ANR: 主线程5s内没响应;常见原因: 主线程IO、计算、跨进程通讯耗时、死锁、同步锁等待
    JAVA Crash: 未捕获的Android vm异常
    捕获异常命令:

    adb logcat -s *:E
    
    adb root;adb shell ls /data/anr  # android新版本无权限访问
    

    弱网测试

    1. 通过模拟器 $(which emulator) -avd [avd-image] -netdelay 20000 -netspeed gsm
    2. 真机,通过代理 Charles模拟弱网
    3. 网关 Facebook 的 ATC

    卡顿 (掉帧、gc、cpu)

    卡顿测试、内存泄漏测试、method profile
    卡顿定义:人眼感知的流畅度不能小于60fps
    帧分析工具:systrace
    卡顿影响:
    gc
    cpu overdraw
    gpu 渲染
    卡顿指标:
    1.adb shell dumpsysy gfxinfo

    响应慢

    冷热启动、界面切换、h5性能

    冷启动

    进程不存在,从创建应用进程开始
    测试方法:

    1. adb logcat
    2. uiautomator 等自动化工具200ms巡检界面变化
    3. 录屏+拆帧

    测试流程:

    1. 冷启动 logcat(启动是否完成)
    package=com.xueqiu.android
    清理缓存数据:adb shell pm clear $package
    停止进程:adb shell am force-stop $package
    启动app:adb shell am start  -S -W $package/.view.WelcomeActivityAlias
    获取数据:adb logcat |grep -i displayed
    
    1. 录屏+拆帧(判断渲染是否完成)
    adb shell am force-stop $package
    adb shell screenrecord --bugreport --time-limit 30 /data/local/tmp/xueqiu.mp4 &
    adb shell am start  -S -W $package/.view.WelcomeActivityAlias
    wait
    adb pull /data/local/tmp/xueqiu.mp4 .
    ffmpeg -i xueqiu.mp4  xueqiu.gif
    ffmpeg -i xueqiu.mp4  -r 10 frames_%03d.jpg
    

    暖启动

    进程存在,界面不存在

    热启动

    后台启动应用

    发热

    method profile、gc统计、io统计、流量统计、硬件使用统计、耗电量分析

    耗电

    https://developer.android.com/topic/performance/power/setup-battery-historian

    1. usb连接设备,清除之前的电池数据,避免获取到的数据文件过大
    adb shell dumpsys batterystats --reset  # 因为设备会一直在后台收集电池数据,所以在使用之前要重置清除之前收集的电池数据
    
    1. 断开usb连接,避免设备通过usb充电,造成数据不准确
    2. 任意使用设备,过一段时间后在把设备连接电脑,收集数据
    adb shell dumpsys batterystats > [path/]batterystats.txt
    
    1. 创建报告
      Android7.0及以上
      adb bugreport > [path/]bugreport.zip
      Android6.0及以下
      adb bugreport > [path/]bugreport.txt

    这里遇到一个坑

    我的设备是Android5.1的,使用adb bugreport > [path/]bugreport.txt命令之后提示
    Failed to get bugreportz version, which is only available on devices running Android 7.0 or later.
    Trying a plain-text bug report instead
    解决办法:下载一个低版本的platform-tools(https://www.androiddevtools.cn/ 我下载的是22版本的)可正常生成报告
    5. 因为txt格式的报告不怎么容易分析,采用battery-historian工具
    根据官方文档,刚好我机子里已经安装好docker,就用dockers来尝试一下
    docker run -p port_number:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999

    遇到坑2

    运行后返回docker: Error response from daemon: Get https://gcr.io/v2/: net/http: request canceled while waiting for connection
    解决办法:查了资料,官方给的命令需要FQ,所以换了个镜像
    docker pull bhaavan/battery-historian 这个镜像拉下来也挺久的,幸好还是能获取成功
    按照文档,使用命令,运行
    docker run -d -p 9999:9999 bhaavan/battery-historian 成功
    6.打开浏览器,输入http://192.168.0.2:9999/(http://192.168.0.2为本机ip地址
    7.等待加载完成,打开本地生成好的bugreport.txt文件,最终

    兼容性问题(机型覆盖、回归)

    兼容性测试、自动化测试、自动遍历、monkey测试

    W3C web性能标准

    https://developers.google.com/web/tools/chrome-devtools/network/reference#timing-explanation

    1. network
      • Queueing 资源加载的排队时间
      • TTFB 发起请求之后,服务器首次返回的时间
      • content download 内容加载时间
      • DOMContentLoaded DOM加载完成时间(页面布局加载完成,可进行点击等操作)
      • Load 整个页面完整加载时间(包括图片、动效等)
    2. js获取
    • 获取每个阶段的时间 performance.timing.toJSON()
    • 获取每个资源加载过程的相关信息 performance.getEntries()[0].toJSON()

    发布前检测方式

    1. 健壮性检测:MONKEY、MAXIM
    2. 深度功能覆盖:appcrawler自动遍历
    3. 异常场景覆盖

    系统资源

    adb shell dumpsys procstats --hours 3 查看CPUINFO 数据
    adb shell dumpsys meminfo package_name|pid [-d] 当前包的内存信息

    method profile

    1. 打开as
    2. 打开 run-> profile 'app'
    3. call chart
    4. flame chart 记录函数耗费的cpu
    5. top dowm 从父函数开始调用的函数
  • 相关阅读:
    iscsi一致性的测试验证方法
    ceph各个版本之间参数变化分析
    rgw的rgw_thread_pool_size配置调整
    rgw前端替换civetweb为beast
    配置内网访问的TV
    关于vm.min_free_kbytes的合理设置推测
    rbd的删除回收站功能
    python爬取微博热门话题榜
    Selenium+Pytest自动化测试框架—禅道实战
    python带参数装饰器的两种写法
  • 原文地址:https://www.cnblogs.com/congyinew/p/12545296.html
Copyright © 2020-2023  润新知