移动性能测试 Android 性能测试初探 (二)

卡斯 · 2014年02月19日 · 最后由 huangwang 回复于 2020年09月10日 · 4509 次阅读
本帖已被设为精华帖!

书接前文 Android 性能测试初探(一)。上回大体介绍了下在 android 端的性能测试项,现在我们就细节测试项做一些阐述(包括如何自己 DIY 测试)。

首先我们来说说启动时间。关于应用的启动时间的测试,分为三类:

1. 首次启动 --应用首次启动所花费的时间
2. 非首次启动 --应用非首次启动所花费的时间
3. 应用界面切换 -- 应用界面内切换所花费的时间

那么如何来做启动时间的测试呢,一般我们分为 2 类,一类为使用软件来测试,一类为使用硬件来测试,首先我们说说软件测试的方法,可能大部分人都比较通晓使用 android 提供的 DisplayManager 来获取 activity 的启动时间吧,在这里我简单说下如何通过批处理来 DIY

  • 通过日志过滤关键字 Displayed 来过滤所有 activity 所打印的,记录日志通过 adb logcat>/address/logcat.txt 然后使用 find “Displayed” /address/logcat.txt>/newaddress/fl.txt
  • 通过 activity 名来过滤获取所测应用 find “ActivityName” /newaddress/fl.txt>/newaddress/last.txt
  • 通过计算 activity 最后剩余的时间之和即可(这里可以使用 excel 表格自动相加也可以使用算法,我就不详细介绍了)

除了 DisplayManager 的打印时间方法后,还有通过关注 am 的启动时间及 DisplayManager 打印的结束时间,通过两者时间之间想减也能得到应用的启动时间,还有可以通过 PowerManager 来计算打印时间,在应用启动的时候,我们可以关注 ActivityManager-Launch 的变化来计算应用的启动时间,还有可以通过截图统计启动时间,对于自研应用,最效率的莫过于直接在程序中插入打印时间的节点了

说完了软件测试的方法,接下来我们聊聊硬件测试,这里我们可以使用高速相机或者手机,采用录像的方法把应用启动过程给录制下来,然后通过人工数帧或者程序数帧的方式计算启动时间

好了,今天就说到这里,下回继续说其他测试项

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 14 条回复 时间 点赞

我们也是通过告诉相机来数帧计算启动时间,这种和日志的差异,是否主要体现在渲染上的时间

楼主大人,请问一下,我的真机当前打开的应用是微信的情况下,我去通过 logcat 打印出的日志,然后在通过你上述的这个

find “Displayed” /address/logcat.txt>/newaddress/fl.txt 命令筛选出了,我并没有用 find “ActivityName” /newaddress/fl.txt>/newaddress/last.txt 这个命令,那么下面出来的这两条数据是不是也是启动时间呀?是不是要相加在一起呀
---------- C:\USERS\ADMINISTRATOR\DESKTOP\LOG.TXT
09-08 10:10:01.890 1654 1677 I ActivityManager: Displayed com.tencent.mm/.plugin.sns.ui.SnsTimeLineUI: +1s257ms
09-08 10:10:03.055 1654 1677 I ActivityManager: Displayed com.tencent.mm/.plugin.sns.ui.SnsMsgUI: +373ms

卡斯 Android 性能测试初探 (三) 中提及了此贴 12月08日 16:25
恒温 《Android 性能测试初探》合集 中提及了此贴 11月29日 15:15

find “ActivityName” /newaddress/fl.txt>/newaddress/last.txt
请问这里的 ActivityName 是指的哪个 Activity?

针对于这种启动时间,个人感觉还是用数帧这种方法最对的起用户,最贴近用户感受

卡斯 [该话题已被删除] 中提及了此贴 07月18日 15:54
恒温 [该话题已被删除] 中提及了此贴 07月18日 15:54

#2 楼 @pazzini 是的,视觉统计和软件内部统计,相差个 1s2s 很正常。还是视觉靠谱,但是,不同的人的结束点和开始点的帧又不同,差个二三百毫秒又很正常。总之,整个测试过程,最好由一个人执行,且主观感受的执行

@androider666 埋点都可以拿到数据的

这个文章进行了详细的启动时间分析,我觉得写得不错,就是不知道做实验难不难?

安卓 Activity 启动过程性能剖视: http://www.rudy-yuan.net/archives/59/

是不是性能测试必须要获得被测试程序源码,才能进行?

用户体验

学习了,启动时间可以用 ActivityInstrumentationTestCase2 中的 getActivity() 来做启动,然后计算时间差吗?还有楼主,我想请问一下,应用界面切换通常用什么来做呢?求指教

对的,时间差

其实就是 am start 的开始时间和 displayed 的完成时间之间的那段时间才是启动时间对吧.

学习了。
启动时间这块我们这边有尝试通过高速摄像头拍照来计算的 logcat 中获取的虽然比较方便 但跟用户的实际体验其实还是不一致的

果断关注 对于新手的我来说,获益良多,谢谢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册