App的测试项目十分繁琐多样,不同程序应用和不同的公司项目要求也不全相同。按照自己查阅和使用的一些内容,做一个大致上的分类,不断梳理,分析,提升。
按照测试内容的需求强度和必要性,将App测试项先分为功能和非功能两个大类。
- 功能性测试:即是App应用程序的基本功能,像安装,卸载,升级,运行等等。
- 非功能性测试:(专项测试)就是一些操作环境的模拟和性能要求,像网络,电量,流量,适配,安全,体验,异常场景等等。
- 将非功能性测试(专项测试) 的各种场景需求模拟出来之后,在其中操作功能性测试 的基本内容,测试结果都达到产品的要求,或者是跟市面上的竞品相差无几,App的测试项内容就几乎完成了。
非功能性测试内容,有些也称为专项测试,即,基础功能性测试通过之后,需要增加各项测试内容来完善产品,以达到产品需求。这也是必不可少的部分,因为App的载体几乎是移动端手机,那么在使用场景,运行环境,用户量,时长等等方面都是不可控的,但是可以通过竞品分析,市场大致需求分析等手段得出最基本的测试项内容。
功能性测试 | |||
基础功能测试 参考案例 | |||
安装 | |||
运行 | |||
卸载 | |||
升级 | |||
UI自动化测试 | |||
非功能性测试 | |||
性能测试 | |||
负载测试 | |||
并发测试 | |||
压力测试 | |||
电量测试 | |||
流量测试 | |||
稳定性测试 | |||
兼容性测试 | |||
网络测试 | |||
安全测试 | |||
体验层面 | |||
异常场景 |
1. 性能测试
性能的课题十分的大,被测试的App在绝大部中低端机器上的性能表现也是十分重要的,如果App产品的性能只能在高端机器上体现,那么该款App也无法说做的很好。性能测试的内容像:基础的并发测试,压测,稳定性测试等等。关注的指标像:CPU,内存,FPS ,耗电量,流量等等
2. 兼容性测试
即是适配兼容测试,现在市面上的移动设备五花八门,十分的多,每年还在不断的更新。身为主要为移动端服务的产品,在兼容方面的功夫肯定是得下些力气的。
移动观象台:http://mi.talkingdata.com/
艾瑞数据:https://data.iresearch.com.cn/home.shtml
可以为一些市场手机设备占比,应用占比等等做一些客观分析和参考
当然云测平台更好,有钱能使磨推鬼:
Testin:https://www.testin.cn/
Testin是国内较早涉及云测试领域的公司之一。Testin在云端部署了300多款1000多部测试终端,终端种类及数量都比较全面。支持Android和IOS系统。但目前大多数服务都是收费的,成本较高。可进入官网咨询。
腾讯优测:https://newtest.21kunpeng.com/home
腾讯优测是腾讯旗下的云测试服务平台,拥有超过1000款测试终端,机型数量大。但不支持IOS系统。提供兼容测试服务,不提供性能测试。
贯众云测试:http://cloudtest.komect.com/
贯众云测试是中国移动旗下的云测试服务平台,目前拥有超过100款主流终端,支持Android和IOS系统。提供兼容性,功能,性能,稳定性测试。支持Appium脚本,很多功能是免费的,只是终端数量少。
百度MTC:http://mtc.baidu.com/
百度TMC是百度开放平台旗下的移动云测试中心,提供超过500款机型。提供的服务种类也有兼容,性能,功能。也提供录制脚本,类似Testin。不过也是收费的。
3. 网络测试
网络测试,一般也称弱网测试,因为移动端使用的产品,难免会有弱网环境。在这种情况下出现的网络抖动,上下行超时,丢包等等。网络测试,就是提前模拟各种情况,查看App在这些非正常网络情况下是否存在未知的BUG。
可以通过多种工具来模拟弱网情况,像一般的抓包工具fiddler,charles等都可以进行网络测试,众多的云测平台也提供弱网测试服务。
4. 安全测试
App在上线前,是需要做详细的安全测试的,这是为了检查应用是否容易被外界破解,是否存在被恶意代码注入的风险等等
一般安全考虑的方向是,安装包,敏感信息,软键盘,账户,数据通信,组件安全,服务端接口等等
软件权限:
- 扣费风险:包括发送短信,拨打电话,连接网络等
- 隐私泄露风险:包括访问手机信息,访问联系人信息等
- 对App的输入有效性校验,认证,授权,敏感数据存储,数据加密等
- 限制/允许使用手机功能接入互联网
- 限制/允许使用手机发送接收信息功能
- 限制/允许应用程序来注册自动启动应用程序
- 限制/允许使用本地连接
- 限制/允许使用手机拍照或录音
- 限制/允许使用手机读取用户数据
- 限制/允许使用手机写入用户数据
- 检测App的用户授权级别,数据泄露,非法授权访问等
安装与卸载安全性:
- 是否包含数字签名信息
- JAD文件和JAR包中包含的所有托管属性及其值必须是正确的
- JAD文件显示的资料内容与应用程序显示的资料内容应一致
- 安装路径能指定
- 没有用户的允许,应用程序不能预先设定自动启动
- 卸载是否安全,其安装的文件是否全部卸载
- 卸载用户使用过程中产生的文件是否有提示
- 其修改的配置信息是否复原
- 卸载是否影响其他软件的功能
数据安全性:
- 当将密码或其他的敏感数据输入到应用程序时,其不会被存储在设备中,同时密码也不会被解码
- 输入的密码将不以明文形式进行显示
- 密码,信用卡明细,或其他的敏感数据将不被存储在它们预输入的位置上
- 不同的应用程序的个人身份证或密码长度必须至少在4—8个数字长度之间
- 当应用程序处理信用卡明细,或其他的敏感数据时,不以明文形式将数据写到其它单独的文件或者临时文件中,以防止应用程序异常终止而又没有删除它的临时文件,文件可能遭受入侵,然后被读取数据信息
- 备份应该加密,恢复数据应考虑恢复过程的异常或通讯中断等,数据恢复后再次使用前应该经过校验
- 应用程序应考虑系统或者虚拟机器产生的用户提示信息或安全警告
- 应用程序不能忽略系统或者虚拟机器产生的用户提示信息或安全警告,更不能在安全警告显示前,利用显示误导信息欺骗用户,应用程序不应该模拟进行安全警告误导用户
- 在数据删除之前,应用程序应当通知用户或者应用程序提供一个取消命令的操作
- 应用程序应当能够处理当不允许应用软件连接到个人信息管理的情况
- 在没有用户明确许可的前提下,不删除修改个人信息管理中的任何内容
- 应用程序读写数据正确
- 应该程序应当有异常保护
- 能合理地处理出现的错误
- 意外情况下应提示用户
通讯安全性:
- 在运行其软件过程中,如果有来电,SMS,EMS,MMS,蓝牙,红外等通讯或充电时,是否能暂停程序,优先处理通信,并在处理完毕后能正常恢复软件,继续其原来的功能
- 当创立连接时,应用程序能够处理因为网络连接中断,进而告诉用户连接中断的情况
- 应用能处理通讯延时或中断
- 应用程序将保持工作到通讯超时,进而发送给用户一个错误信息指示
- 应能处理网路异常和及时将异常情况通报用户
- 应用程序关闭或网络连接不再使用时的处理情况
人机接口安全性:
- 返回菜单总保持可用
- 命令有优先权顺序
- 声音的设置不影响应用程序的功能
- 应用程序必须利用目标设备适用的全屏尺寸来显示上述内容
- 应用程序必须能够处理不可预知的用户操作,例如错误的操作,同时按下多个按钮
5. 体验测试
6. 异常