稳定的产品质量是留住用户的第一道阀门,所以稳定性测试是常规测试中必不可少的。这周我们介绍百度应用比较广泛的两款稳定性工具:系统级稳定性测试工具 SmartMonkey 和可定制模块级别的内核稳定性工具。
Android 自动化测试中,monkey 是系统自带的一款稳定性和压力测试工具。它可以随机产生事件,不带任何主观性,并且使用方便。但是,正是由于这种随机性,使得传统的 monkey 测试只能作为稳定性测试工具,在其上进行功能扩展较为不易。在 monkey 测试中,由于事件的随机性,使得 monkey 容易卡在某些简单页面,比如登陆页面这种可操作内容很少的页面。
针对这些问题,我们基于 Robotium 自动测试框架,开发了 SmartMonkey 工具。SmartMonkey 其本质上是深度遍历 activity 和操作节点的一个大型的 robotiumtest case,它具有以下这些特点:
1 准确识别页面上的操作,避免无效点击
2 支持关键路径配置,使测试范围可控
3 操作优先级动态变化,覆盖更多功能和页面
4 多进程基础性能信息自动采集
5 支持 Checklist 配置,提供简单的功能验证
6 结合性能专项工具,进一步挖掘性能隐患
在稳定性测试过程中同步挖掘性能隐患是 SmartMonkey 工具的一个亮点,接下来会对 SmartMonkey 提供的性能专项工具做进一步介绍。
1、建立一个 Android Test Project 工程
2、修改 AndroidManifest.xml 文件
修改 instrumentation TAG 中的 name 和 targetPackage 字段内容如下。
图 1
3、导入 SmartMonkey 所需的 lib
图 2
4、在测试工程的 src 文件中,新建 JUnit Test Case
该类需继承 LynQ 基础类。
图 3
5、在新建的 Case 中添加以下 code
其中 LAUNCHER_ACTIVITY_FULL_CLASSNAME 为被测 APP 的 launcheractivity,TARGET_PACKAGE 为被测包的包名。
6、添加配置项
在项目中新建 assets 文件夹,添加 AdvancedConfig.properties 和 config.properties 文件。
在 config.properties 文件中添加配置项:
其中 mReportPath 是设置输出报告的位置, 默认为/mnt/sdcard/lynq-report/目录,mLoginSwitch 是自动登录开关,当前仅限 baidupassport SDK 自动登录。mUsername 和 mPassword 分别为自动登录时输入的用户名和密码。
在 AdvancedConfig.properties 文件中添加配置项:
其中,mTimeSlot 是性能数据采集的间隔,mPerformanceReportType 是设置性能报告输出样式,1 为 xml 样式,0 为 html 样式。
mSleepTime 是两次事件的执行间隔,mDefaultText 是默认的 SmartMonkey 在 EditText 中输入的内容。mSpInputText 中可以配置在某些输入框中特殊输入的内容用竖线分割,比如” 1234,specialtextforeditTextwithid1234”,表示在 id 为 1234 的 view 中,输入"specialtextforeditTextwithid1234"内容。
mNeverClick 和 mMustClick 用来表示关键路径,分别为避免点击的 view 和必点的 view。View 可以用文字或十进制 id 或 id string 来表示。例如下图中右下角 OK 按钮,在 R 文件中是"publicstaticfinalintbtn_ok=0x7f09001d;”,所以,这个 view 可以用其上文字 “OK” 来表示,也可以用 idstring “btn_ok” 或十进制 id“2131296285” 来表示。
图 4
mMaxRunningTime 是 SmartMonkey 的最大执行时间,用时分秒来表示。
7、执行
通过 Run as AndroidJunit Test 方式执行。
1、crash 信息
SmartMonkey 会自动记录被测 APP 的 crash 栈信息,以及 nativecrash 信息。
Crash 信息会输出在你配置的目录中,以 stack 为开头的 txt 文件。每个 crash 单独输出一个文件。Native crash 信息记录在以 dmp 开头的文件中,可以通过 google-breakpad 进行查看。
2、基础性能报告
根据配置项,SmartMonkey 会输出性能报告到输出报告目录中。性能报告是以 performance 开头的 html 或 xml 文件。
Html 格式的性能报告中,首先会列出被测 app 的相关信息,包括包名、uid 和同 uid 下的每一个进程的 pid 和进程名等。随后列出 CPU、内存、流量的图表。CPU 图表中记录了每一个进程的 CPU 占用率,内存图表中记录了每个进程 PSS 和 USS 的占用情况,流量图表中记录了流量总使用情况和两个采集点之间的流量差值。
在每个图表上,用 node 记录了这个节点上 SmartMonkey 执行的事件,可以用来辅助定位造成曲线波动的操作。
图 5
图 6
Xml 格式的性能报告中,每个 operation 为一个采集点,其中记录了时间戳、测试手机总 CPU 占用率、流量差值、流量总和、节点上的事件,以及每个进程的 pid、CPU 占用率、PSS、USS 等。
图 7
如果你看的意犹未尽,如果你想随时随地充实自己,请扫描以下二维码,关注百度移动云测试中心(MTC),可以获取更多技术类干货,还有精彩活动与你分享~