目录
一、功能测试
二、兼容适配测试
三、UI测试
四、用户体验测试
五、安装卸载
六、APP更新
七、中断测试
八、稳定性测试
九、性能测试
十、安全性测试
十一、APP测试相关工具
1、Emmagee
2、Monkey
3、Monkey参数大全
4、Monkey调试参数介绍
5、Monkey运行APP实例
6、Monkey日志分析
功能测试主要根据软件需求说明书或用户需求等资料,编写测试用例,以验证各个功能点的实现情况,具体实施过程参考如下:
兼容性及是适配测试主要包括以下几点:
UI界面样式参照一下标准进行测试验证:
用户体验测试一般都是以普通使用用户的角度的感知产品的使用感觉,带有明显的个人主观意识色彩,故用户体验测试一般均需多人进行体验感受,提出设计不合理的地方进行汇总,确定折中最佳修改方案,以满足大部分人的使用习惯体验,不应该以一个人或少数人的主观感受体验为主,避免以偏概全。用户体验可参考从以下几个方面:
稳定性测试主要目的为检测APP在频繁操作、长时间运行等情况下,程序是否会出现崩溃、闪退、卡死卡顿等现象,稳定性测试主要从两个方面入手:
客户端类的APP软件,性能指标主要有:安装卸载时间、启动APP时间、页面加载时间、APP占用CPU、内存、耗电量等。
Android的APP占用CPU和内存,可以借助开源工具emmagee获取,或者第三方的手机管理工具如腾讯手机管家、360手机卫士等,部分品牌的手机自带程序管理或任务器管理工具可查看程序资源消耗。
耗电量指标:Android系统可下载第三方带有电池管理工具的APP进行统计分析,iOS苹果手机可使用操作系统自带的电池使用分析工具即可
Android:
iOS:设置--电池
APP安全测试,主要包括软件权限、数据安全等
软件权限安全包括如下:
数据安全性包括如下:
Emmagee主要用于监控单个App的CPU,内存,流量,启动耗时,电量,电流等性能状态的变化,且用户可自定义配置监控的频率以及性能的实时显示,并最终生成一份性能统计文件。Emmagee是网易杭州研究院QA团队开发的一个简单易上手的Android性能监测小工具。
Emmagee功能介绍
1.检测应用从启动开始到当前时间消耗的流量数;
2.检测当前时间被测应用占用的CPU使用率以及总体CPU使用量;
3.检测当前时间被测应用占用的内存量,以及占用的总体内存百分比,剩余内存量
4.测试数据写入到CSV文件中,同时存储在手机中;
5.在浮窗中可以快速启动或者关闭手机的wifi网络;
6.可以选择开启浮窗功能,浮窗中实时显示被测应用占用性能数据信息。
Emmagee使用方法
启动Emmagee后,程序将自动检测已安装的APP软件,选择需要测试的软件,点击【开始测试】按钮,程序将启动需要测试的APP,被测试APP启动后,进行一系列模拟操作后,可看到APP上有Emmagee悬浮窗,记录实时的CPU和内存消耗等,点击停止测试后,Emmagee将统计记录数据到CSV格式文件中,文件存储在安卓手机SDCard目录下Emmagee文件夹下,文件名类似20190709134651_comXXX.csv。
Monkey是Android SDK提供的一个命令行工具,可以简单,方便地运行在任何版本的Android模拟器和实体设备上。Monke会发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试和稳定性测试等。
Monkey环境搭建
下载SDK和安装SDK
打开http://tools.android-studio.org/index.php/sd,选择windows版本SDK进行下载;
下载完成exe安装包后开始安装Android SDK,安装过程会检测你是否安装过java jdk,安装完成后双击根目录下SDK Manager.exe,在弹窗,更新和下载插件(默认勾选项就好)
配置Android SDK环境变量
方法类似与配置JDK环境变量,以本人个人电脑为例,需要配置如下三个环境变量
新建ANDROID_HOME,值为D:\Program Files\Android\sdk(以实际个人安装路径为准),
Path变量中尾部,添加android-sdk目录下的tools和platform-tools路径,即添加值为:
;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools(注意前方的英文分号)
验证ADB命令是否成功
安卓手机用usb数据线连接到电脑,开启开发者模式,允许USB调试。电脑打开cmd命令,输入adb,出现如下页面,就代表基本配置成功了
注:每个品牌手机开启开发者模式略有不同,可自行百度
输入命令adb devices,如果出现如下界面信息,说明手机连接电脑调试模式开启成功,(此处使用的的是MuMu模拟器,真机一般会出现810EBN655XHE device等字样),否则请检查是否正确开启手机开发者模式。
查找APP的pkg名称
(1)使用Monkey需要知道APP的pkg名字,输入命令adb shell pm list packages查看你的手机所有的安装包
(2)adb shell pm list packages -3: 查看手机上所有的第三方安装包
Monkey命令基本参数介绍
基本语法如下:
$ adb shell monkey [options]
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。
下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:
$ adb shell monkey -p your.package.name -v 500
-p <允许的包名列表>
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包, monkey将允许系统启动设备中的所有app。
指定一个包:adb shell monkey -p com.shjt.map 100
指定多个包:adb shell monkey -p fishjoy.control.menu -p com.shjt.map 100
-v 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,
分别对应的参数如下所示:
Level 0: adb shell monkey -p com.shjt.map –v 100
缺省值,仅提供启动提示、测试完成和最终结果等少量信息
Level 1: adb shell monkey -p com.shjt.map -v -v 100
提供较为详细的日志,包括每个发送到Activity的事件信息
Level 2: adb shell monkey -p com.shjt.map -v -v -v 100
最详细的日志,包括了测试中选中/未选中的Activity信息
-s(随机数种子)
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
示例:
monkey测试1:adb shell monkey -p com.shjt.map -s 10 100
monkey测试2:adb shell monkey -p com.shjt.map -s 10 100
--throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息
示例:adb shell monkey -p com.shjt.map --throttle 3000 100
Monkey事件类型参数介绍
--pct-touch
设定触屏事件生成的百分比。触屏事件是一个有手指按下,抬起事件的手势,即在屏幕某处按下并抬起的操作。
比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。如触摸返回、触摸签到等
--pct-motion
设定滑动事件生成的百分比。滑动事件是一个先在某一个位置手指按下,滑动一段距离后再抬起手指的手势。
--pct-trackball
设定轨迹球事件生成的百分比。轨迹球事件是包含一系列随机移动和单击事件的事件。如不规则滑动解锁
--pct-nav
设定基本导航事件生成的百分比。基本导航事件是模拟方向性在设备上输入向上、向下、向左、向右的事件
--pct-syskeys
设定按键消息的百分比,主页、后退、音量增减
--pct-anyevent
当没有指定该参数时,系统自动分配
Event percentages(事件百分比):
0:触摸事件百分比,参数--pct-touch
1:滑动事件百分比,参数--pct-motion
2:缩放事件百分比,参数--pct-pinchzoom
3:轨迹球事件百分比,参数--pct-trackball
4:屏幕旋转事件百分比,参数--pct-rotation
5:暂时不知道这个是什么
6:基本导航事件百分比,参数--pct-nav
7:主要导航事件百分比,参数--pct-majornav
8:系统事件百分比,参数--pct-syskeys
9:Activity启动事件百分比,参数--pct-appswitch
10:键盘翻转事件百分比,参数--pct-flip
11:其他事件百分比,参数--pct-anyevent
--ignore-timeouts
通常情况下,当应用程序发生任何超时错误(application not responding)时,monkey将停止运行。若指定了该参数,则monkey将会在产生错误信息后,继续向系统发送事件,直到指定事件全部运行完毕
--ignore-crashes
通常情况下,monkey会在测试应用程序崩溃或者发生异常后停止运行,若指定了该参数,则monkey将会在产生异常后,继续向系统发送事件,直到指定事件全部运行完毕。
--hprof
指定了该参数,Monkey会在发送事件序列的前、后,生成性能分析报告。
--ignore-security-exceptions
通常情况下,指定应用程序发生许可错误时(如证书许可,网络许可等),monkey将停止运行。若指定了该参数,即使应用程序发生许可错误,monkey会继续向系统发送事件,直到指定事件全部运行完毕。
--kill-process-after-error
错误发生时杀进程
--monitor-native-crashes
监视崩溃时的本地代码
以Monkey运行测试手机监控某APP为例;
注意:Monkey无法自动登录,使用前请手动输入用户名密码登录,再运行Monkey命令
adb shell monkey -p com.app.package --throttle 100 --pct-touch 50 --pct-motion 50 -v -v 1000>D:\monkey.log
命令解析:
-p com.app.package:启动运行app程序
--throttle 100:操作时间延迟100ms
--pct-touch 50:触摸事件百分比为50%
--pct-motion 50:滑动事件百分比为50%
–v -v:日志级别为Level 1,提供较为详细的日志
1000:表示Monkey模拟1000个伪用户行为事件
>D:\monkey.log:运行日志记录输出到指定目录下的文件中
正常情况,如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间。 // Monkey finished 代表执行完成.
异常情况:
Monkey 测试出现错误后,一般的分析步骤
看Monkey的日志 (注意第一个swith以及异常信息等)
1. 程序无响应的问题: 在日志中搜索 “ANR”
2. 崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bug
Monkey 执行中断,在log最后也能看到当前执行次数