iOS APP的测试经历
要产出一个优秀的,稳定安全的的 APP,少不了测试人员这种 bug 探寻者和开发人员的配合。我们如果能很好的了解测试人员是如何从多方面,多维度的蹂躏我们开发的 APP,我们就更更好的在开发过程中,去考虑的更周全和更清晰。一般 APP 的测试可以归结为下面几项:
1.非功能测试
app测试的一个重要方面是app的非功能需求。移动app在推出市场或进行进一步开发前,测试人员有一定的职责做该类需求的跟踪工作。早期开发阶段要进行的第一个测试应该是实用性测试。例如很多公司正式推出新版本或者新 APP 的时候,会有一批试用客户,或者一定的市场调研,竞品分析等。前期收集到试用用户的反馈很重要,能在开始就完善符合用户习惯的功能。
测试方法:这属于前期一些数据收集的工作,主要是人员调研,问卷调研,现场体验感受,反馈汇总等。这个阶段对于产品是否受欢迎,是否切合用户喜好,是否易操作和黏性等都至关重要,不能轻视。
2.功能测试
不管是新立项的项目,还是迭代的项目,每次开发只要有新功能模块,就都需要测试。测试人员应该或者说很必要进行手动测试和后期的自动化测试维护。刚开始测试的时候,测试应该如“黑盒”一样进行手动测试,看看功能和产品设计是否正确并且一致。一般功能测试会测试以下:
- 功能
主要的功能是否实现(根据需求,这里就不一一展开)
测试手法: 前期手工过滤一遍所有主要功能,后期开始编写自动化测试用例,节省代码和功能越来越大的时间消耗。弹出窗口有无,取消或确定按钮的功能。测试手法: 脚本录制,带截屏验证
有可滑动的列表视图的时候,一定要将内容填充超过一屏,上下滑动查看有无问题。测试手法: 初期手动多次反复上拉下拉验证,后期编写单元测试,模拟返回的数据,调用刷新和加载的方法。
操作/状态类统计点上报正确。测试方法: 只能人工验证某些状态点,特别是 UI 的部分。对于简单逻辑的,可以通过 UI Test 搜索控件状态验证。
后台云配置软件功能是否成功。重启系统后,是否恢复。测试方法: 人工验证,对照后台配置一一检查
信息查询、搜索等功能,结果是否正确,有无错漏。测试方法: 人工测试,视图显示方面,数据方面可以 log 结合单元测试的数据 log 匹配。
读取、传输含有特殊符号的数据时,是否会出现乱码。测试方法: 单元测试覆盖,边界条件和异常条件的断言判断
数据的计算是否准确,如流量、内存等数据。不好说,只能结合第三方软件来验证是否偏差过大。
- 界面
按钮位置是否一致,名称显示完整与否,按钮名字是否与其功能相对应。测试方法: 人工测试,参照产品原型和 UI 设计界面。
界面(整体风格,界面切换,处于不同界面相对应的菜单栏选项显示)测试方法: 人工测试,是否风格统一,跟产品预期是否一致。
输入信息时键盘的的模式,弹出位置是否一致。测试方法: 人工测试,视觉验证。
除了整个手动测试过程,测试自动化对移动app也很重要。每个代码变化或新功能都可能影响现存功能及它们的状态。通常手动回归测试时间不够,所以测试员不得不找一个工具去进行自动化回归测试。现在市面上有很多自动化测试工具,有商业的也有开源的,面向各个不同平台,iPhone需要根据开发策略和结构,品质管理测试专家需找出最适合他们环境的自动化工具。
3.客户端性能测试
一个App做的好不好,不仅仅只反应在功能上。被测的app在中低端机上的性能表现也很重要。例如老机型4s,5 ,5c,5s 等是否流畅,老版本的系统,iOS7,8,9的系统上是否没有异常或者特别耗时耗资源等。考量是:CPU ,内存,耗电量,流量,FPS 等。具体细化到测试方面如下:
- 性能:是一个优化 APP 用户体验比较重要的指标。主要通过人工测试,体验式内测等方式来开展此类设置。关于,CPU,耗电量,FPS 等硬件指标,用三方的云平台或者 Xcode自带的检测工具。
- 连接网络、页面刷新时是否有转圈等待,等待时间是否过长,有没有超时提示异常等。
- 多次点击(或滑动,拖动)某控件(按钮,图片等)是否会异常,是否会崩溃。
- 按钮点击的有没有做响应阻隔,过快点击是否会出现事件异常,是否会崩溃。
- 界面的刷新率,是否会卡顿等。
- 多次切换页面是否会出现程序崩溃或者耗时导致的程序反映变慢。
- 程序使用,操作时间较长会不会卡住,反应慢,甚至出现死机。
- APP 里的动效效果是否与需求无异,是否多次运行出现性能问题。
- 易用性:额,只能人工了,而且需要审美比较好的
- APP的触控性,操作性是否符合用户行为习惯,是否反人性
- 程序加载图片时是否有风格合适的占位图,整个界面让人舒服,不突兀
- 一些控件的风格和功能是否符合苹果的的特点,整体的统一性。
- 屏幕旋转的视觉效果,有没有控件或者显示错位。
4.兼容性测试
苹果 产品这几年的快速迭代,出现了大量的机型和系统版本,屏幕适配和系统适配已经成了iOS开发者比较头痛的问题了,在越来越多的机型上,问题也是越发明显。一般兼容性测试囊括以下:
- 系统兼容性,从目前市场占有率来说,最低要从 iOS9.0开始测试,iOS 10.0, iOS 11.0等都进行测试,是否有异常。
- 机型适配,市面上现在已经淘汰32位系统的机型了,所以测试的时候5S 以上的机型都要测试,看看适配有没有异常。
- 安装同类型竞品产品,相关功能是否会被抢占,快捷图标、浮窗等是否重叠,替代,乱屏等。
- 在不同的机型上的安装、拉起、点击和卸载是否正常
- 在不同的系统版本上的安装、拉起、点击和卸载是否正常
- 覆盖安装、升级安装都要进行测试,注意覆盖安装后的各种数据、开关、配置和升级前一致等
兼容性测试最佳的方式是投放到机型数量和种类齐全,版本丰富的云平台进行测试,一般几十分钟就可以拿到测试报告
5.弱网络测试
App在使用的过程中,难免会遇到弱网络环境,例如在公车上、在地铁里。在这种情况下,常常会出现网络抖动、上行或下行超时,导致应用中出现丢包。测试会对app在上线前做一定场景的弱网络环境模型,并查看app在弱网络环境下是否存在某些未知的问题。下面是我们常用的弱网络环境场景:
- 3G弱网络信号场景模拟;
- 市区低速移动场景模拟;
- 郊区高速移动场景模拟;
- 请求回应超时_上行超时场景模拟;
- 请求回应超时_下行超时场景模拟;
- 网络抖动场景模拟
弱网络测试,在应用环境不复杂的情况下,测试人员可以通过真机的开发者模式里面模拟网络变化来测试 APP 在各种网络状态和弱网或者无网的环境下的表现及异常。对于测试全面性和可靠性,建议投放到比较大的云平台进行测试,结果更全面和细致。
6.耗电量测试
App在手机上的表现,除了功能外,app是否耗电,也是测试过程中重点要关注的一项。手机设备在满电的时候,这个App能玩多久;App每小时的耗电是多少;App在某个场景挂机10分钟耗电量是多少;这些都是我们平时在耗电量测试中比较关注的点。
国内各大平台都支持这项测试,只需要选择有 iOS 设备的平台,投放测试。
7.协议测试
通过抓包或者 postman 等工具,模拟客户端直接发送数据协议包给服务器,看看服务器是否有一定的校验,能否接收客户端发来的数据。协议测试主要是为了处理用户发送恶意协议到服务器,骗过服务器校验,造成数据异常等。
这项测试只能是专业测试人员,懂代码,会脚本,熟悉网络协议的人员进行测试,配合服务器端的开发人员一起验证。
8.安全测试
APP 在上线前,会进行必要和详细的安全测试。主要测试应用是否容易被外界反编译,被破解,是否会被劫持,注入恶意代码,外挂风险等。
专业的事情交给专业的人去做,Testin云测,阿里MQC都有安全测试的服务,我们应该提交带这些云测平台进行全面细致的安全性测试。
9.中断测试
针对应用的服务等级划分方式及实时特性所提出的测试方法,如:App在前台和后台运行状态时与来电、文件下载、音乐收听等关键运用的交互情况测试等。测试电话,短信,彩信,微博或其他通知进来时app的反应。
这个测试可以由测试人员手工模拟各种场景来测试 APP 的反应和表现,但是可能会有遗漏,考虑不全面等,这需要测试人员有比较丰富的经验和测试场景的熟悉。个人建议还是分发到云平台进行测试,由测试经理综合考虑再选择合适的平台。
10.压力测试
压力测试包括,服务器压力和终端压力。大量数据请求的时候,能否快速响应。疯狂点击请求的时候,会不会崩溃等。还有边界压力,边界条件的操作,会不会没有容错处理,导致应用 crash 等。
最佳方式是提测云平台,进行 Monkey测试,边界压力,响应压力等专家测试团队等测试。
以上测试就是大概测试会对我们APP所做的一些测试流程,我们在开发 APP 的时候,只要按照这些方面去开发,能更好的避过很多坑,减少 bug的产生。
参考: