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

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

书接前文 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 中获取的虽然比较方便 但跟用户的实际体验其实还是不一致的

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

对的,时间差

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

用户体验

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

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

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

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

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

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

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

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

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

楼主大人,请问一下,我的真机当前打开的应用是微信的情况下,我去通过 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

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

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