软件测试之APP测试要点(包含Monkey基础使用)
文章目录
- 前言
- APP测试基本流程
- 流程图
- 测试流程
- 测试周期
- 测试资源
- APP测试要点
- UI测试
- 功能测试
- 兼容性测试
- 安全测试
- 安装、卸载、升级测试
- 交叉事件测试
- 中断测试
- PUSH测试
- 性能测试
- CPU
- 内存
- 流量
- 电量
- 启动速度
- 流畅度
- APP性能测试工具介绍 —— SoloPi简介
- APP性能测试工具 —— SoloPi使用
- 用户体验
- 稳定性测试
- Monkey
- Monkey测试前准备
- Monkey 命令基本参数介绍
- Monkey脚本
- 硬件环境测试
- 接口测试(需抓包工具辅助)
- 参考目录
前言
阅读本文前请注意最后编辑时间,文章内容可能与目前最新的技术发展情况相去甚远。欢迎各位评论与私信,指出错误或是进行交流等。
APP测试基本流程
流程图
测试流程
APP测试流程与web测试流程类似,大致分为如下七个阶段:
1.根据需求说明书编写测试计划;
2.制定测试方案,主要是测试任务、测试人员和测试时间的分配;
3.测试准备,包括搭建测试环境,准备测试数据,确定测试方法;
4.测试用例的设计与编写,进行用例评审及补充完善;
5.执行测试时首先进行冒烟测试,然后对主功能流程进行测试,包括客户端的单个功能模块,及功能业务逻辑功能交互,回归测试;
6.提交测试结果,包括测试用例,测试计划;
7.日常维护性测试;
测试周期
测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。
测试资源
测试任务开始前,检查各项测试资源。
- 产品功能需求文档;
- 产品原型图;
- 产品效果图;
- 测试设备;
- 其他。
APP测试要点
UI测试
测试用户界面(如菜单、对话框、窗口和其它可规控件)布局、风格是否满足客户要求、文字是否正确、页面是否美观、文字、图片组合是否完美、操作是否友好等。
UI测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏觅功能。确保用户界面符合公司或行业的标准。包括用户友好性、人性化、易操作性测试。
- 导航测试
- 按钮、对话框、列表和窗口等;或在不同的连接页面之间需要导航
- 是否易于导航,导航是否直观
- 是否需要搜索引擎
- 导航帮助是否准确直观
- 导航与页面结构、菜单、连接页面的风格是否一致
- 图形测试
- 横向比较。各控件操作方式统一
- 自适应界面设计,内容根据窗口大小自适应
- 页面标签风格是否统一
- 页面是否美观
- 页面的图片应有其实际意义而要求整体有序美观
- 图片质量要高且图片尺寸在设计符合要求的情况下应尽量小
- 界面整体使用的颜色不宜过多
- 内容测试
- 输入框说明文字的内容与系统功能是否一致
- 文字长度是否加以限制
- 文字内容是否表意不明
- 是否有错别字
- 信息是否为中文显示
- 是否有敏感性词汇、关键词
- 是否有敏感性图片,如:涉及版权、专利、隐私等图片
功能测试
1、根据需求文档编写测试用例,执行测试,app客户端的单个功能,需要使用等价类、边界值,考虑正常和异常场景。
2、根据功能业务逻辑考虑功能交互。
注意:功能的测试点提取和用例设计方法都跟web测试一致,但是app有一些自己的特性测试,也要额外的加到测试点中。
-
运行
(1)App安装完成后的试运行,可正常打开软件。
(2)App打开测试,是否有加载状态进度提示。
(3)App打开速度测试,速度是否可观。
(4)App页面间的切换是否流畅,逻辑是否正确 -
应用的前后台切换
- APP切换到后台,再回到app,检查是否停留在上一次操作界面。
- APP切换到后台,再回到app,检查功能及应用状态是否正常,IOS4和IOS5的版本的处理机制有的不一样。
- app切换到后台,再回到前台时,注意程序是否崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。
- 手机锁屏解屏后进入app注意是否会崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。
- 当App使用过程中有电话进来中断后再切换到app,功能状态是否正常
- 当杀掉app进程后,再开启app,app能否正常启动。
- 出现必须处理的提示框后,切换到后台,再切换回来,检查提示框是否还存在,有时候会出现应用自动跳过提示框的缺陷。
- 对于有数据交换的页面,每个页面都必需要进行前后台切换、锁屏的测试,这种页面最容易出现崩溃。
- 登录测试
- 登陆方式:用户名密码、短信验证码、手势登录、人脸识别、指纹登录、第三方登录(QQ、微信、微博等)——根据需求来确定
- 未登录的用户:某些页面的操作,是否做了控制/点击某些资源,提示登录或者跳转到登录页面;用户主动退出登录后,下次启动app时,应该进入到app的登陆页面
- 切换账号登录:检验登录的信息是否做到及时更新
- 单个端登录:不允许多个端登录时,是否将原用户挤下线,并且给出提示信息
- 多个端登录:允许多个端登录时,提示信息,且数据库的操作准确无误,每个端可以及时看到数据的更新。
- 用户登录持续时间太久,账号信息会过期:强制退出,提示”账号信息已过期,请重新登录“或者跳转到登录界面
- 免登录
- app有免登录功能时,需要考虑IOS版本差异。
- 考虑无网络情况时能否正常进入免登录状态。
- 切换用户登录后,要校验用户登录信息及数据内容是否相应更新,确保原用户退出。
- 根据MTOP的现有规则,一个帐户只允许登录一台机器。所以,需要检查一个帐户登录多台手机的情况。原手机里的用户需要被踢出,给出友好提示。
- app切换到后台,再切回前台的校验
- 密码更换后,检查有数据交换时是否进行了有效身份的校验
- 支持自动登录的应用在进行数据交换时,检查系统是否能自动登录成功并且数据操作无误。
- 检查用户主动退出登录后,下次启动app,应停留在登录界面
- 离线浏览
很多应用会支持离线浏览,即在本地客户端会缓存一部分数据供用户查看。
- 在无网络情况可以浏览本地数据
- 退出app再开启app时能正常浏览
- 切换到后台再切回前台可以正常浏览
- 锁屏后再解屏回到应用前台可以正常浏览
- 在对服务端的数据有更新时会给予离线的相应提示
- 定位、照相机服务
- App有用到相机,定位服务时,需要注意系统版本差异
- 有用到定位服务、照相机服务的地方,需要进行前后台的切换测试,检查应用是否正常。
- 当定位服务没有开启时,使用定位服务,会友好性弹出是否允许设置定位提示。当确定允许开启定位时,能自动跳转到定位设置中开启定位服务。
- 测试定位、照相机服务时,需要采用真机进行测试。
兼容性测试
主要测试内部和外部兼容性
(1)与本地及主流App是否兼容
(2)基于开发环境和生产环境的不同,检验在各种网络连接下(WiFi、GSM、GPRS、EDGE、WCDMA、CDMA1x、CDMA2000、HSPDA等),App的数据和运用是否正确
(3)与各种设备是否兼容,若有跨系统支持则需要检验是否在各系统下,各种行为是否一致
- 不同操作系统的兼容性,是否适配
- 不同手机屏幕分辨率的兼容性
- 不同手机品牌的兼容性
注意:app兼容测试方法
(1)手工测试(一般适用于用户量小、且对兼容测试要求不高的项目)
(2)云测试平台(一般适用于用户量大、且对兼容测试要求高的项目)
目前市场上主流云测试平台包括:
(1)腾讯云测:http://wetest.qq.com
(2)百度云测:http://mtc.baidu.com
(3)阿里云测:http://mqc.aliyun.com/
(4)testin云测:https://www.testin.cn/
如何选择品牌、 机型、 系统、 分辨率网络?
查看线上排名网站( 流量研究院: https://mtj.baidu.com/data/mobile/device)
安全测试
- 软件权限
- 扣费风险:包括发送短信、拨打电话、连接网络等
- 隐私泄露风险:包括访问手机信息、访问联系人信息等
- 对App的输入有效性校验、认证、授权、敏感数据存储、数据加密等方面进行检测
- 限制/允许使用手机功能接人互联网
- 限制/允许使用手机发送接受信息功能
- 限制/允许应用程序来注册自动启动应用程序
- 限制或使用本地连接
- 限制/允许使用手机拍照或录音
- 限制/允许使用手机读取用户数据
- 限制/允许使用手机写人用户数据
- 检测App的用户授权级别、数据泄漏、非法授权访问等
- 安装与卸载安全性
- 应用程序应能正确安装到设备驱动程序上
- 能够在安装设备驱动程序上找到应用程序的相应图标
- 是否包含数字签名信息
- 没有用户的允许, 应用程序不能预先设定自动启动
- 卸载是否安全, 其安装进去的文件是否全部卸载
- 卸载用户使用过程中产生的文件是否有提示
- 其修改的配置信息是否复原
- 卸载是否影响其他软件的功能
- 卸载应该移除所有的文件
- 数据安全性
- 当将密码或其他的敏感数据输人到应用程序时, 其不会被储存在设备中, 同时密码也不会被解码
- 输人的密码将不以明文形式进行显示
- 密码, 信用卡明细, 或其他的敏感数据将不被储存在它们预输人的位置上
- 不同的应用程序的个人身份证或密码长度必需至少在4一8 个数字长度之间
- 当应用程序处理信用卡明细, 或其他的敏感数据时, 不以明文形式将数据写到其它单独的文件或者临时文件中。以6)防止应用程序异常终止而又没有侧除它的临时文件, 文件可能遭受人侵者的袭击, 然后读取这些数据信息。
- 当将敏感数据输人到应用程序时, 其不会被储存在设备中
- 备份应该加密, 恢复数据应考虑恢复过程的异常通讯中断等, 数据恢复后再使用前应该经过校验
- 应用程序应考虑系统或者虚拟机器产生的用户提示信息或安全替告
- 应用程序不能忽略系统或者虚拟机器产生的用户提示信息或安全警告, 更不能在安全警告显示前,,利用显示误导信息欺骗用户,应用程序不应该模拟进行安全警告误导用户
- 在数据删除之前,应用程序应当通知用户或者应用程序提供一个“取消”命令的操作
- “ 取消” 命令操作能够按照设计要求实现其功能-应-用程序应当能够处理当不允许应用软件连接到个人信息管理的情况
- 当进行读或写用户信息操作时, 应用程序将会向用户发送一个操作错误的提示信息
- 在没有用户明确许可的前提下不损坏侧除个人信息管理应用程序中的任何内容
- 应用程序读和写数据正确。
- 应用程序应当有异常保护。
- 如果数据库中重要的数据正要被重写, 应及时告知用户
- 能合理地处理出现的错误
- 意外情况下应提示用户
- 通讯安全性
- 在运行其软件过程中, 如果有来电、SMS、EMS、MMS、蓝牙、红外等通讯或充电时, 是否能暂停程序,优先处理通信, 并在处理完毕后能正常恢复软件, 继续其原来的功能
- 当创立连接时, 应用程序能够处理因为网络连接中断, 进而告诉用户连接中断的情况
- 应能处理通讯延时或中断
- 应用程序将保持工作到通讯超时, 进而发送给用户一个错误信息指示有连接错误
- 应能处理网络异常和及时将异常情况通报用户
- 应用程序关闭或网络连接不再使用时应及时关闭) 断开
- HTTP、HTTPS覆盖测试
- App和后台服务一般都是通过HTTP来交互的,验证HTTP环境下是否正常;
- 公共免费网络环境中(如:麦当劳、星巴克等)都要输入用户名和密码,通过SSL认证来访问网络,需要对使用HTTP Client的library异常作捕获处理。
- 人机接口安全性
- 返回菜单总保持可用
- 命令有优先权顺序
- 声音的设置不影响应用程序的功能
- 应用程序必需利用目标设备适用的全屏尺寸来显示上述内容
- 应用程序必需能够处理不可预知的用户操作, 例如错误的操作和同时按下多个键
安装、卸载、升级测试
- 安装
- 软件在不同操作系统下安装是否正常。
- 软件安装后的是否能够正常运行,安装后的文件夹及文件是否写到了指定的目录里。
- 软件安装各个选项的组合是否符合概要设计说明
- 软件安装向导的UI测试
- 软件安装过程是否可以取消,点击取消后,写入的文件是否如概要设计说明处理
- 软件安装过程中意外情况的处理是否符合需求(如死机,重启,断电)
- 安装空间不足时是否有相应提示
- 安装后没有生成多余的目录结构和文件
- 对于需要通过网络验证之类的安装,在断网情况下尝试一下
- 还需要对安装手册进行测试,依照安装手册是否能顺利安装
- 卸载
- 直接删除安装文件夹卸载是否有提示信息。
- 测试系统直接卸载程序是否有提示信息。
- 测试卸载后文件是否全部删除所有的安装文件夹。
- 卸载过程中出现的意外情况的测试(如死机、断电、重启)。
- 卸载是否支持取消功能,单击取消后软件卸载的情况 。
- 系统直接卸载UI测试,是否有卸载状态进度条提示 。
- 升级
- 当客户端有新版本时,有更新提示。
- 当版本为非强制升级版时,用户可以取消更新,老版本能正常使用。用户在下次启动app时,仍能出现更新提示。
- 当版本为强制升级版时,当给出强制更新后用户没有做更新时,退出客户端。下次启动app时,仍出现强制升级提示。
- 当客户端有新版本时,在本地不删除客户端的情况下,直接更新检查是否能正常更新。
- 当客户端有新版本时,在本地不删除客户端的情况下,检查更新后的客户端功能是否是新版本。
- 当客户端有新版本时,在本地不删除客户端的情况下,检查资源同名文件如图片是否能正常更新成最新版本。
交叉事件测试
针对智能终端应用的服务等级划分方式及实时特性所提出的测试方法。交叉测试又叫事件或冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试。如;App在前/后台运行状态时与来电、文件下载、音乐收听等关键运用的交互情况测试等。交叉事件测试非常重要,能发现很多应用中潜在的性能问题。
- 多个App同时运行是否影响正常功能
- App运行时前/后台切换是否影响正常功能
- App运行时拨打/接听电话
- App运行时发送/接收信息
- App运行时发送/收取邮件
- App运行时切换网络(2G、3G、wifi)
- App运行时浏览网络
- APP运行接上蓝牙设备
- App运行时使用蓝牙传送/接收数据
- App运行时使用相机、计算器等手机自带设备
- APP运行时查看应用推送
- APP运行时旋转屏幕
- App运行时电量告警、插拔充电器。
中断测试
(1)意外中断
a、来电
b、短信
c、闹铃
d、断网
e、断电
f、视频聊天
g、语音聊天
h、无响应
i、系统更新提醒
j、内存不足提醒
k、其他app的消息通知
(2)任务切换
a、锁屏
b、切换到其他应用
PUSH测试
1、开关设置:默认状态全部打开状态/安装后弹窗提醒选择,客户端可以接受到推送信息;设置开关可以打开、关闭;app设置开关关闭时,客户端接受不到消息推送
2、手机客户端未锁屏时:app应用后台运行,消息推送是否可以正常接受,且可以点击查看;主界面或者正在使用别的app,点击消息,跳转到app;应用前台使用,可以收到消息提醒,点击可以查看
3、手机客户端锁屏时:消息推送是否正常接受,提示音、亮屏、中间列表展示;点击消息推送,先解锁,解锁后跳转到app
4、登录状态:退出登录后,是否接受消息推送(根据需求来);未登录的用户再去登录,批量接受多条消息推送;当推送消息针对登录用户的时候,需要检查收到的推送消息与用户的身份是否相符,没有错误的将其他人的消息推送过来;手机通知栏是否可以接受到推送的消息,且点击后可查看,点击后,通知栏的消息消失。
性能测试
性能: 是衡量APP质量的一个重要指标
常见的性能指标有: 内存, CPU, 流量, 电量, 启动速度, 流畅度、 稳定性等
性能指标描述: 一定是某种时间内某种条件执行某种操作,性能指标如何
性能测试可以考虑和稳定性结合,monkey测试时使用性能监控工具监控性能数据.
例如: 2小时内持续刷新操作,性能如何?
持续运行8小时,性能如何
CPU
基线:如果有基线要求,CPU曲线图是否存在长期超过基线的现象(min)
如果没有基线,行业默认90%
CPU占用过高时可能出现的问题:
手机发烫
页面卡顿
电量消耗严重
快速恢复:清空后台运行的进程
下图 : 蓝色曲线是问题曲线(长时间超过基线),红色曲线是正常曲线
内存
内存泄露:内存的曲线持续增长(增的远比减的多)
内存溢出:一定是因为有内存泄露才会出现.内存持续增加突然降为0 (应用停止运行)
异常曲线图:
正常曲线图:
流量
使用了多长时间,消耗了多少流量
测试怎么测: 例如: 1小时持续刷新,查看流量消耗
流量优化方法:
- 数据的压缩
- 不同数据格式的采用
- 控制访问的频次
- 只获取必要的数据
- 缓存机制
- 针对不同的网络类型设置不同的访问策略
电量
- 使用了多长时间,消耗了多少电量
- 测试怎么测: 例如: 1小时持续刷新,查看电量消耗
- 常见的电量消耗较大的场景
- 定位,尤其是调用 GPS 定位。
- 网络传输,尤其是非 Wi-Fi 环境。
- 屏幕亮度
- CPU 运算:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电;
- wake_locker(锁屏-解锁)时间和次数
注意: 公司是否有基线要求,如果有要求,那么我们需要去检验产品是否达标;如果没有基线,可以和竞品对比测试
启动速度
冷启动、暖启动、热启动
APP启动会发生多个事件,测试人员需要知道整个环节是否出现问题,需要了解到具体是哪个环节存在问题:
冷启动:当进程不存在的时候,从进程创建开始到界面的展示的过程;
暖启动:有一部分资源已经存在,进程存在,相对于热启动要消耗更多资源。当用户退出应用程序时,进程还会存在,暖启动相较于冷启动只是少了进程的创建;
热启动:大部分资源都在,只是应用之间的切换;
命令获取: adb shell am start -W 包名/activity名
流畅度
帧率(FPS): 每秒切换多少帧
60fps为最佳
APP性能测试工具介绍 —— SoloPi简介
SoloPi: 是一个无线化、 非侵入式的 Android 自动化工具, 具备录制回放、 性能测试等功能。
作用如下:
基础性能测试: 能够记录待测应用的各项指标, 可以在悬浮窗中观察实时更新的数据, 也可以对性能数据进行录制, 在录制结束后查看图表; 同时, 还支持性能加压, 能够对CPU、 内存与网络环境进行限制, 复现应用在性能较差、 网络环境不佳场景下的表现。
录制回放: 通过SoloPi执行用例步骤, 能够将用户的操作记录下来, 支持在各个设备上进行回放, 这一切都能够在手机上独立完成。
一机多控:支持通过操作一台主机设备来控制多台从机设备, 不需要在各个设备上分别进行重复冗杂的兼容性测试, 能够极大提升兼容性测试的效率。
SoloPi安装:
可独立安装的 SoloPi( APK, IOS无该版本) , 像普通APP一样安装。
APP性能测试工具 —— SoloPi使用
注意事项: SoloPi使用时, 需要申请悬浮窗权限, adb权限, 读写权限
社区地址:https://testerhome.com/topics/node152
APK下载地址:https://www.pgyer.com/solopi
GitHub地址:https://github.com/alipay/SoloPi
gitee地址:https://gitee.com/jaawu/SoloPi/
- 打开SoloPi, 选择性能测试
- 选择被测应用, 勾选监控指标, 勾选后悬浮窗会出现在手机屏幕上
- 点击开始监控, 随后打开被测APP应用, 开始测试
- 结束监控,保存录制数据,查看数据采集结果
- 结果展示
可下拉选择其他性能项
用户体验
- UI界面测试(原型图设计是否合理)
- 横竖屏测试(内容展示是否异常)
- 易用性测试(空数据提示\菜单层次是否过深\业务操作步骤是否过多\按钮位置是否适中)
- 手机上的辅助功能(色盲模式\盲人模式)
真人体验 - 可以针对目标用户去找符合条件的人
- 可以找小白用户体验(公司内部其他团队未接触过该项目的人)
稳定性测试
Monkey
Monkey 是一款 app 的自动化测试工具,monkey 是猴子的意思,所以从原理上说,它的自动化测试就类似猴子一样在软件上乱敲按键,猴子什么都不懂,就爱捣乱。Monkey 原理也是类似,通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、滑动 Trackball、手势输入等操作),来对设备上的程序进行测试,检测程序长时间的稳定性,多久的时间会发生异常。
Monkey 工具存在 Android 系统中,使用 Java 语言写成,jar 包在 Android 文件系统中的存放路径是:
/system/framework/monkey.jar;Monkey.jar 程序是由一个名为“monkey”的 Shell脚本来启动执行,shell 脚本在 Android 文件系统中的存放路径是:/system/bin/monkey;monkey 需要通过 adb 来唤醒,即通过在 cmd 窗口中执行: adb shell monkey {+命令参数}来进行 Monkey 测试;
Monkey工作原理
在 Monkey 运行的时候,它会生成事件,并把它们发给系统。同时,Monkey 还对测试中的系统进行监测,对下列三种情况进行特殊处理:
(1)如果限定了 Monkey 运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止;
(2)如果应用程序崩溃或接收到任何失控异常,Monkey 将停止并报错;
(3)如果应用程序产生了应用程序不响应 ANR(application not responding)的错误,Monkey 将会停止并报错;按照选定的不同级别的反馈信息,在 Monkey 中还可以看到其执行过程报告和生成的事件。
Monkey弱点:
Monkey虽然可以根据一个指定的命令脚本发送按键消息,但不支持条件判断,不支持读取待测界面的信息来执行验证操作
Monkey测试前准备
1、执行Monkey测试前,一定要确保屏幕处于解锁状态。
2、设置屏幕超时时间为最大时间(设置->显示->休眠->30分钟或者从不)。以防测试过程中手机锁屏,影响Monkey测试。
3、打开usb调试,确保adb可以连接。
4、抓取adb log,(如果出现anr,需要将/data/anr下的anr log拿出来,需要手机有root权限)。
Application not responsing
Monkey 命令基本参数介绍
# –help :列出帮助文档
adb shell monkey -help# 允许启动手机里面所有的 App , 随机操作 1000 次
adb shell monkey 1000-p : 允许启动 App 的包名
#案例 随机操作 手机 QQ 1000 次
#获取App的包名,先启动qq并获取焦点
adb shell dumpsys window | findstr mCurrentFocus
# QQ 的包名为: com.tencent.mobileqq
#启动App
adb shell monkey -p com.tencent.mobileqq 1000# 随机操作 手机 QQ 和 微信 1000 次
# 启动指定的多个 App,微信的包名为:com.tencent.mm
adb shell monkey -p com.tencent.mobileqq -p com.tencent.mm 1000# -v : 操作日志记录
-v:Level 0(缺省值)除 启动提示、测试完成和最终结果之外,提供较少信息。
-v -v :Level 1提供较为详细的测试信息,如逐个发送到Activity的 事件。
-v -v -v :Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
adb shell monkey -p com.tencent.mobileqq -v -v -v 100# -s : 伪随机数生成器的seed值
# 如果用相同的seed值再次运行monkey,将生成相同的事件序列。
adb shell monkey -p com.tencent.mobileqq -s 12345 -v 10# --throttle : 插入固定延迟
# 在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被执行。
# 案例:随机执行 500 个事件,每个事件之间延迟 500 毫秒被执行。
adb shell monkey -p com.tencent.mobileqq –-throttle 500 -v 500# --ignore-crashes : 忽略操作是崩溃异常
# 通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
adb shell monkey -p com.tencent.mobileqq –-ignore-crashes -v 1000# --ignore-timeouts : 忽略超时
# 通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
adb shell monkey -p com.tencent.mobileqq –-ignore-timeouts -v 1000# --ignore-security-exceptions : 忽略程序发生许可异常
# 通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
adb shell monkey -p com.tencent.mobileqq–-ignore-security-exceptions -v 1000# 调整触摸事件百分比
#调整触摸事件百分比为100%
adb shell monkey -p com.tencent.mobileqq -v -v --pct-touch 100 200# 调整手势事件百分比
#调整手势占比为100%
adb shell monkey -p com.tencent.mobileqq -v -v --pct-motion 100 200# --pct-appswitch:后面接应用启动事件百分比。
adb shell monkey -p com.tencent.mobileqq --pct-appswitch# --pct-rotation 后面接屏幕旋转事件的比例值。
adb shell monkey -p com.tencent.mobileqq --pct-rotation
Monkey脚本
脚本名字为monkey.txt,内容如下:
type = raw events # 表示脚本的类型
count = 1 # 用于说明执行的次数,但是无论改成什么都只是执行一次??
speed = 1.0 # 用于调整两次执行随机事件的发送频率。
start data >> # 启动 或者start data >>LaunchActivity(com.qiniu.pili.droid.shortvideo.demo) # 包名,界面名
Tap(960,274) ## button 的坐标(点击)
UserWait(5000) # 等待时间
Tap(390,1538)
UserWait(13000)
Tap(780,1583)
UserWait(5000)
Tap(777,1183)
UserWait(5000)
Tap(30,1335)
UserWait(5000)
Tap(30,1456)
UserWait(5000)
Tap(945,81)
UserWait(5000)
DispatchPress(KEYCODE_BACK) # 点击返回键
第一步: 写monkey脚本,可以将其保存为monkey.txt( 名字任意)
第二步: 将脚本Push到手机某一个文件中
adb push monkey.txt /sdcard/第三步: 运行脚本
adb shell monkey -f /sdcard/monkey.txt -v -v 1
硬件环境测试
- 手势操作测试
- 手机开锁屏对运行中的App的影响
- 切换网络对运行中的App的影响
- 运行中的App前后台切换的影响
- 多个运行中的App的切换
- App运行时关机
- App运行时重启系统
- App运行时充电
- App运行时kill掉进程再打开
- 网络环境
手机的网络目前主要分为2G、3G、wifi。目前2G的网络相对于比较慢,测试时尤其要注意此块的测试。
- 无网络时,执行需要网络的操作,给予友好提示,确保程序不出现crash。
- 在网络信号不好时,检查功能状态是否正常,确保不因提交数据失败而造成crash。
- 在网络信号不好时,检查数据是否会一直处于提交中的状态,有无超时限制。如遇数据交换失败时要给予提示。
- 在网络信号不好时,执行操作后,在回调没有完成的情况下,退出本页面或者执行其他操作的情况,有无异常情况。此问题也会经常出现程序crash。
- 服务器宕机或出现404、502等情况下的测试
后台服务牵涉到DNS、空间服务商的情况下会影响其稳定性,如:当出现域名解析故障时,你对后台API的请求很可能就会出现404错误,抛出异常。这时需要对异常进行正确的处理,否则可能会导致程序不能正常工作。
接口测试(需抓包工具辅助)
参考目录
https://blog.csdn.net/huace3740/article/details/139861382
https://blog.csdn.net/qq_49624649/article/details/124142875
https://blog.csdn.net/weixin_43613890/article/details/106527486
https://blog.csdn.net/2301_79144798/article/details/143982708
https://blog.csdn.net/u010217055/article/details/128227662
https://blog.csdn.net/weixin_42421116/article/details/143822354
https://blog.csdn.net/2301_77709772/article/details/133026305
https://blog.csdn.net/qq_60219215/article/details/122027764
https://blog.csdn.net/weixin_42182599/article/details/120767056
https://blog.csdn.net/m0_60054525/article/details/132147381