目录

1. 安装卸载与更新

1.1 安装

1.2 卸载

1.3 版本更新

2. 业务功能

2.1 登录

2.2 按键与手势(iOS)

2.2 逻辑测试

2.3 接口测试

2.4 前后台切换

2.5 消息通知

2.6 数据更新

3. 界面(UI)

4. 安全性

4.1 安装包

4.2 数据安全

4.3 账户安全

4.4 软键盘劫持

4.5 通信安全

4.6 服务端接口

5. 交叉事件(多进程)

6. 性能

6.1 响应

6.2 内存

6.3 cpu

6.4 FPS

6.5 GPU过度绘制

6.6 耗电

7. 稳定性

8. 兼容性

1. 安装卸载与更新

1.1 安装

不同操作系统上是否正常安装。

不同的手机型号上是否正常安装。

不同屏幕分辨率/屏幕尺寸大小的手机上是否正常安装。

安装过程中,出现意外情况(如死机,重启,断电)的处理是否正常。

安装空间不足(内存或者磁盘空间不足)时是否有相应提示。

首次安装完成后,是否正常启动APP。

版本覆盖安装后,是否正常启动APP。

1.2 卸载

卸载过程中,出现的意外情况(如死机、断电、重启)的处理是否正常。

卸载完成后,是否删除所有的安装文件夹。

第三方卸载,是否可以正常卸载,是否卸载完全。

1.3 版本更新

强制更新:

不同的操作系统,强制更新是否可以正常更新APP。

后台设置强制更新,打开APP后,是否有强制更新提示,强制更新提示框是否可以关闭,强制更新是否有进度条显示。

强制更新过程中出现意外(如死机、断电、重启),再次打开APP,检查APP是否再次提示更新。

已注册账号的数据是否正常。

强制更新成功后,启动APP,APP的版本号是否显示正确,已注册账号的数据是否正常,已经删除或隐藏的功能模块是否还存在,新增的功能是否可以正常使用,新版本用户和老版本用户的交互是否正常(如互发消息/新版本的消息通知会不会发送到老版本上/新版本注册的用户登录到老版本上是否正常等)。

非强制更新:

不同的操作系统,非强制更新是否可以正常更新APP。

后台设置非强制更新,打开APP后,是否有非强制更新的提示,是否可以关闭提示。

关闭更新提示,历史版本用户是否可以正常使用,再次启动APP,是否再次弹出非强制更新的提示。

更新过程中出现意外(如死机、断电、重启),再次启动APP,是否再次提示更新,是否可以正常使用。

更新成功后,启动APP,APP的版本号是否显示正确,已注册账号的数据是否正常,已经删除或隐藏的功能模块是否还存在,新增的功能是否可以正常使用,新版本用户和老版本用户的交互是否正常(如互发消息/新版本的消息通知会不会发送到老版本上/新版本注册的用户登录到老版本上是否正常等)。

2. 业务功能

2.1 登录

新用户注册登录。

老用户是否能从不同路径正常登录:手机号+验证码,是否能在限定时间内收到验证码并正确登录;正确账号加密码是否正常登录,错误账号加密码是否弹出相应提示;第三方登录,是否能正常拉取第三方,是否能正常登录。

是否支持免登录浏览。

不同意隐私协议是否弹出相应提示,是否可以浏览部分内容。

进行APP前后台切换,杀进程重启,无网络(长时间断网和短暂断网),手机重启等操作,登录状态是否是最近一次登录的用户。

切换账号登录,APP内的登录用户是否是当前登录账号,数据信息和当前账号是否保持一致。

用户登出APP后,再打开APP,登录状态是否为未登录状态。

同一账号登录到多台设备(需求允许),检查多台设备的免登录状态是否正常。

用户更换密码后,有数据交互时,检查是否会再次进行身份的验证。

存在免登录日期限制的,检查在限制的日期外的登录状态是否为未登录。

2.2 按键与手势(iOS)

用户行为 功能 测试 功能键(home键) 按一次 回到桌面 打开APP,点击Home键,APP是否切换到后台运行,APP后台运行的相关功能是否正常(如音乐播放) 锁屏键 点击 锁屏 打开APP,锁屏,APP后台运行的相关功能是否正常(如听书播放) 打开APP,锁屏,解锁,APP运行是否正常 关机键 长按 关闭手机 打开APP,关机,再开机,再打开APP,APP功能是否正常(特别是关机前正在付款等操作) 音量键 按音量+、-键 拉出音量调节条,音量加、减小 打开APP,打开声音相关功能,物理调节音量键,声音是否会随物理调节变大变小 打开APP,打开声音相关功能,系统声音设为静音,声音是否为静音 手势 点击 点击按钮:进入对应页面 阅读页面点击:出现上下功能框 是否进入详情页/功能框 从屏幕(右)侧边缘向右(左)滑动 可以翻页的页面:向前(后)翻页 是否正常翻页 从屏幕顶部向下滑动 拉出通知页面 是否正常翻页,页面通知栏阅读进度条是否一致 从屏幕底部向上滑动 拉出常用功能框 是否正常拉起功能框,相关功能是否可使用 向下滑动 刷新 网络正常的情况下是否正常刷新,相关内容是否更新 向上滑动 向下翻页 是否正常翻页,有无翻页内容

2.2 逻辑测试

从不同的入口进入某项功能,是否有清楚的提示或向导来帮指引用户完成,不同的操作路径是否具有一致的逻辑,系统的各种状态是否随业务流程变化保持稳定。

2.3 接口测试

接口配合多种硬件或者内部接口/外部接口,应保持其规范性/一致性/完备性,接口还需要是可定义或者可配置的,应具有良好的兼容性和扩充性。

2.4 前后台切换

APP切换到后台,手机锁屏解锁,APP使用过程中被电话中断,再打开app是否停留在上一次操作界面,相关功能是否正常、数据是否更新。

杀进程重启,或出现断电/意外关机重启等异常情况,再打开APP,相关功能是否正常、数据是否更新、用户登录状态是否正常。

存在必须处理的提示框,切换到后台,再切换到前台,提示框是否存在。

2.5 消息通知

启动手机(网络有连接,有权限),通知栏是否显示相关推荐信息。

APP运行时,通知栏显示(有权限)是否正常,是否与APP内功能运行同步(音乐播放进度,听书播放进度,下载进度等等)。

Badge(徽章通知) :标记通知是在程序图标的右上角显示的红色标记,里面显示的数字表示需要用户处理的通知的数量.

未启动APP计数的逻辑是否和需求设计一致,计数是否正确。

启动APP,查看计数的增加是否和需求设计一致,计数是否正确.。

例如:

Sound (声音) :声音提示是iOS的一种通知方式,可以自定义音效,可以与其他通知类型搭配使用

声音显示是否及时性,提示的声音音效是否正确

Alert:在APP应用内,用户必须做出选择,否则强制提醒弹框不会关闭(如比赛邀请,APP版本强制更新等)

启动APP,进行操作或者浏览,Alert提醒弹框是否正常弹出,是否强制用户做出选择,是否做出选择后弹框关闭。

前后台切换,杀进程重启,Alert提醒弹框是否会弹出; 消息推送的对象是否正确;消息推送时间是否和需求一致;同一手机(账号),切换账号(手机),打开APP,Alert提醒弹框是否会弹出。

标记: APP应用内的消息标记。

消息标记的数字(一般是计算的是未读消息),计数是否正确,计数最多显示多少条,超过后显示的合理性

在APP应用内/外,收到新消息,计数是否及时性和正确性

是否明确标识消息列表的未读已读消息;有新消息提醒,消息列表是否会自动更新;消息已读后,未读消息的计数是否相应的减少或消失;未读计数中是否加入了新增的消息类别;消息推送的对象是否正确;消息推送是否及时;

同一手机(账号),切换账号(手机),打开APP,消息的计数是否和当前账号相对

2.6 数据更新

手动更新:进行相关手动操作更新数据,更新过程是否正常,更新的数据是否正确。

自动实时更新:自动更新的频率/自动更新的数据量是否符合需求设计;是否让用户感知,是,能否正常感知,否,用户是否感知;更新的数据是否正确。显示是否正确。

数据更新时,前后台切换,APP显示是否正常。

2.7 离线浏览

短暂断网部分功能是否可以正常使用。

无网络时是否可以查看已缓存的内容;进行APP前后台切换,杀进程重启,锁屏开屏重进等操作是否正常浏览已缓存的内容。

浏览需要请求服务端的内容时候,是否弹出无网络的提示。

连网后是否可以正常使用。

3. 界面(UI)

系统界面整体布局是否合理(适当考虑美观,视觉舒适),功能键、数据项信息是否齐全,是否可以自定义界面。

导航(用户在页面内操作的方式)导航路径是否正确,导航操作是否简单易懂。

按钮:按钮的可点击的条件,按钮按下的效果,按钮的的跳转引导。

目录:显示是否正确,点击是否可以跳转,跳转是否正确性。

菜单:隐形菜单(例如起点读书APP的右上角的“ ”,点击是否跳转正确)。

弹窗:消息弹窗,确认弹窗,信息提示弹窗,提交弹窗等等,已设定的操作是否会正确弹出窗口,弹窗信息显示是否完整,点击不同按钮,是否如需求说明一样正确跳转。

列表:在服务端是存在分页,查看是否存复用的问题。

等等

界面的图片、动画、边框、颜色、字体、排版,背景等图形

不同屏幕尺寸,屏幕分辨率以及竖屏,横屏是否可以正确显示(自适应)

图片、动画、边框、颜色、字体、背景、按钮等动画效果是否流畅

图片来源是用户自己上传/本地的/服务端配置的,查看图片在APP端的显示效果。

等等

内容文本:验证APP应用程序提供信息的正确性、准确性和相关性。

信息的正确性是指信息时可靠的还是误传的。信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口;

显示文案是否表意不明,是否有错别字,是否有敏感性词汇,是否布局和设计一致,是否不同的屏幕尺寸/屏幕分辨率的手机上显示完整,文案来源是本地的还是后台可以配置的,文案的长短是否有限制等

输入文字长度是否限制,是否有敏感性词汇限制,错误输入的处理方式,删除输入的内容是否再显示默认文案,输入过程光标是否一直显示在字的末尾等。

分享链接内容是否显示正确。

标题,时间,日期等等是否正确显示。

等等

4. 安全性

4.1 安装包

反编译:

代码审核和代码混淆(混淆后源代码通过反软件生成的源代码是可读性低)。能够一定程度上避免源码中可能存在的敏感信息泄露或者程序内部的错误逻辑。

反编译工具:Android端有dex2jar和jd-gui工具,iOS端有Hopper Disassembler、otool、ida pro等。

签名:

iOS的 APP stroe会校验签名。

Android发布前需要校验签名使用的key是否正确,以防被恶意第三方应用覆盖安装等。可使用下列命令检查:

jarsigner -verify -verbose -certs apk包路径

若结果为“jar 已验证”,说明签名校验成功。

完整性校验

对安装包进行完整性校验是为了确保安装包不会在测试完成到最终交付过程中因为某些原因发生文件损坏,比如检查文件的md5值。

权限设置

一般APP会询问用户定位权限、网络权限、相册权限、相机权限、通知权限等,关闭权限,涉及改权限的功能是否正常。

Android:直接检查manifest文件来读取应用所需要的全部权限,并结合需求进行校验此权限是否为必须。manifest文件的修改在增加新权限前需要进行评估。

iOS:iOS的用户权限只有在用户使用APP到了需要使用的权限时,系统才会弹出提示框,提示用户当前APP需要访问等哪些组件。可以扫描代码来查看项目工程中有哪些权限设置。

4.2 数据安全

(Android的个人信息泄露比较严重,很多app在安装时会要求获取很多权限,即使用户不同意,也会采取一些手段获取,进而盗取用户信息。而ios,苹果官方的审核机制比较严格,而且对于权限非必要不会给)。

数据库:某些应用会把cookie类数据保存在数据库中,一旦被他人获取,可能造成用户账户被盗用等严重问题,测试中在跑完一个包含数据库操作的测试用例后,可以直接查看数据库里的数据,观察是否有敏感信息存储在内。

日志:APP的发布版不使用日志。

配置文件:检查配置文件中是否包含敏感信息。

4.3 账户安全

是否对用户密码难度有一定要求,例如不允许设置过于简单的密码。

用户登录密码是否明文存储在后台数据库。

密码是否加密传输(可以抓包查看)。

用户输入错误密码次数过多,是否会将账户临时锁定,避免被暴力破解。

多方登录or使用,多台设备在线是否提示用户,防止盗号,信息泄露。

在客户端注销后,是否任何的来自该用户的,需要身份验证的接口调用都不能成功。

4.4 软键盘劫持

如果用户安装了第三方键盘,可能存在劫持情况

需要检查敏感信息的输入,例如金融类APP登录界面的用户名密码输入框等,看是否支持第三方输入法,一般建议使用应用内的软键盘。

4.5 通信安全

关键连接是否使用安全通信,例如HTTPS。

是否对数字证书合法性进行验证(使用Fiddler工具模拟中间人攻击)。

4.6 服务端接口

  检查是否存在常见攻击,如SQL注入,XSS跨站脚本攻击,CSRF跨站请求伪造,越权访问等等。

5. 交叉事件(多进程)

一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试。暨同一手机设备上,多个APP同时运行,是否影响APP应用程序正常功能使用。

APP使用过程中,进行前/后台切换,拨打/接听电话,发送/接收信息,切换网络(4G、wifi),使用蓝牙传送/接收数据,插入/拔出耳机,付款收款,使用相机、计算器等手机自带的应用功能,使用其他APP收听音乐,通过通知栏打开其他应用APP,再回到APP中等等交叉操作,app是否正常运行。

6. 性能

6.1 响应

冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)

热启动:非首次启动app的时间间隔(只是启动时间,不包括页面加载)

完全启动:从启动到首页完全加载出来的时间间隔

有网启动:从发起跳转,到页面完全加载出来的时间间隔

无网启动:从发起跳转,到页面完全加载出来的时间间隔

6.2 内存

通常使用PSS(私有内存+比例分配共享内存)来衡量APP的内存开销

空闲状态:切换至后台或者启动后不做任何操作,消耗的内存。

中强度状态:时间偏长的操作应用消耗的内存。

高强度状态:高强度使用应用消耗的内存。

6.3 cpu

空闲时间(切换至后台) cpu的消耗。

在运行一些应用(cpu已占50%),cpu的消耗情况。

高负荷(cpu占用在80%以上)cpu的消耗情况。

6.4 FPS

FPS测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。

6.5 GPU过度绘制

GPU过度绘制是指在一个像素点上绘制多次(超过一次)

(已经较少关注)

6.6 耗电

测试手机安装目标APK前后待机功耗无明显差异;

长时间连续使用应用有无异常耗电现象

7. 稳定性

稳定性测试:软件长时间的持续运行,系统版本是否稳定,能否持续提供服务。

长期各种场景是否可以正常使用,不出现或极少出现崩溃(闪退)、无响应等问题。

  

8. 兼容性

版本兼容性:APP服务端兼容客户端的历史版本,新功能的服务端逻辑是否对旧版本有影响

第三方兼容性:第三方接口或者SDK的兼容性

第三方接口:APP中有调用登录或者支付等的第三方API接口(如在APP用微信或者QQ登录,用微信或者支付宝付款等),接口是否正常请求和返回。

第三方SDK:APP的第三方SDK的使用,不同操作系统或者不同的品牌手机上涉及的功能是否正常。

操作系统兼容性:在不同的手机型号(iOS如iPhone 5、 iPhone 6/6 plus、iPhone 7/7 plus、iPhone 8/8 plus、iPhone X/XR等;Android在不同的操作系统版本,如华为的鸿蒙系统)上是否正常安装。

屏幕分辨率兼容性:iOS 例如iPhone 5、 iPhone 6/6 plus、iPhone 7/7 plus、iPhone 8/8 plus、iPhone X/XR等的屏幕兼容性。

Android例如在不同的屏幕大小,类型上(小米,华为,OV,三星等等)等的屏幕兼容性。

网络兼容性:在WIFI/4G/弱网下,APP是否可以正常使用。

查看原文