随着科技的发展,购物、旅游、支付等日常衣食住行活动都离不开手机,由此衍生了很多APP。比如每天使用频率非常高的微信、支付宝、微博、抖音、王者荣耀等等。APP测试主要进行功能测试、性能测试、自动化测试、安全性测试、兼容性测试、专项测试。
APP测试流程
APP测试流程与web测试流程类似,分为如下七个阶段:
1.根据需求说明书编写测试计划;
2.制定测试方案,主要是测试任务、测试人员和测试时间的分配;
3.测试准备,包括搭建测试环境,准备测试数据,确定测试方法;
4.测试用例的设计与编写,进行用例评审及补充完善;
5.执行测试时首先进行冒烟测试,然后对主功能流程进行测试,包括客户端的单个功能模块,及功能业务逻辑功能交互,回归测试;
6.提交测试结果,包括测试用例,测试计划;
7.日常维护性测试;
APP测试周期可根据项目的开发周期来确定测试时间,一般测试时间为两三周,根据项目情况以及版本质量可适当缩短或延长测试时间。
APP测试通用测试用例
类型 | 测试项 | 测试点 | ||
功能 | 注册 |
略 |
||
登录 | 登录用户名和密码错误时,界面有提示信息 | |||
用户主动退出登录后,下次启动APP时,应该进入登录界面 | ||||
密码更改后,登录时是否做到了有效数据的校验 | ||||
对于未登录状态时,一些页面的操作,是否做到了控制 | ||||
切换账号登录,检验登录的信息是否做到了及时更新 | ||||
一个账号只允许登录一台机器的软件,需要账号登录多个手机时,是否将原用户踢下线,且能够给出提示信息 | ||||
用户登录状态太久,Session会过期,会出现“虽然是登录状态,系统会提示用户没有登录” | ||||
注销 | 略 | |||
上传 | 上传的文件是否有格式、大小要求,上传时间是否合适 | |||
没有上传资料,点击上传按钮是否有提示 | ||||
在点击提交后,是否上传成功,是否可以正常浏览 | ||||
上传文件后,刷新页面,系统是否正常处理 | ||||
上传文件后,多次使用回退、前进,APP是否正常响应 | ||||
图片是否支持主流的格式(jpeg,jpg,gif,png,bpm等) | ||||
音频文件是否支持主流格式(mp3,wav等) | ||||
视频文件是否支持主流格式(mp4,wmv,avi,mov,flv,swf等) | ||||
文档文件是否支持主流格式(doc,docx,xlsx,xls,excel等) | ||||
压缩包文件是否支持主流格式(zip,rar,tar,gz,7z) | ||||
是否支持单个文件上传或批量上传 | ||||
上传过程中网络中断,是否正常处理 | ||||
文件上传结束后,是否有提示信息并回到原来界面 | ||||
下载 | 下载文件是否有文件大小和格式要求 | |||
导出全部数据,数据是否准确 | ||||
导出大量数据,界面或程序是否会发生崩溃,导出时间是否合理 | ||||
下载时同时进行其他操作是否会导致文件损坏 | ||||
添加 | 输入必填项,点添加按钮,记录是否成功添加 | |||
必填项内容不填,点添加按钮,是否有相应提示 | ||||
内容项中输入空格,点添加按钮,记录能否添加成功 | ||||
仅填写必填项,点添加按钮,记录能否添加成功 | ||||
重复提交相同记录,系统是否有相应提示 | ||||
内容项中输入系统中不允许出现的字符、点添加按钮,系统是否有相应提示 | ||||
内容项中输入html,js脚本,点添加按钮,记录能否添加成功 | ||||
新添加的记录是否排列在首行 | ||||
删除 | 选择任意一条记录,进行删除,能否删除成功 | |||
选择不连续多条记录,进行批量删除,能否删除成功 | ||||
选择连续多条记录,进行批量删除,能否删除成功 | ||||
删除时,系统是否有确认删除的提示 | ||||
查询 | 默认显示全部 | |||
单个查询条件进行查询,系统能否查询出相关记录 | ||||
多个查询条件,进行组合查询,系统能否查询出相关记录 | ||||
系统能否支持模糊查询 | ||||
查询条件全为空时,系统能否查询出相关记录 | ||||
查询后,文本框中内容应保存上一次查询的条件 | ||||
查询大量数据时,按钮响应是否及时 | ||||
安装 | 软件安装后是否可以正常运行 | |||
安装过程中是否可以取消 |
||||
安装空间不足时是否有相应提示 | ||||
安装到本地还是SD卡,是否有提供选择路径 | ||||
是否支持第三方工具安装 | ||||
是否支持从不同的应用市场进行下载安装,是否可以重复安装 | ||||
卸载 | 是否可以通过桌面卸载或通过软件安装包卸载 | |||
卸载是否支持取消,单击取消后,软件是否正常 | ||||
卸载文件后,是否删除所有的安装文件夹 | ||||
升级 | 当客户端有新版本时,是否有更新提示 | |||
当版本为非强制升级版时,用户可以取消更新,老版本能正常使用,用户在下次启动App时,仍能出现更新提示 | ||||
当版本为强制升级版时,当给出强制更新后,用户没有更新时退出客户端,下次启动App时,仍出现强制升级提示 | ||||
在线跨版本升级后能否正常使用 | ||||
升级后数据不变(登录状态、设置的信息、加载的资源等) | ||||
离线 | 应用程序在本地客户端会缓存一部分数据以供程序下次调用,对于一些程序,离线状态下可以浏览本地数据 | |||
离线时,刷新获取新数据时,若不能获取新数据时,能给出友好提示 | ||||
界面的数据不提供离线查看,系统需要给出相应提示且界面更新后无任何数据 | ||||
离线后,退出APP再开启APP时能正常浏览 | ||||
离线后,切换到后台再回到APP应用时,可以正常浏览 | ||||
离线后,锁频后再解锁回到应用前台,可以正常浏览 | ||||
推送 | 略 | |||
交互 | 略 | |||
网络 | 略 | |||
安全 | 权限 | 发送短信、拨打电话、连接网络,没有网络时是否有提醒 | ||
是否允许访问相册、拍照、录音、定位等 | ||||
UI | 页面检查 | 页面按照UI设计原型图实现,布局符合用户使用习惯 | ||
恰当的利用窗体和控件的空白,以及分割线条 | ||||
窗口切换、移动、改变大小时,界面显示正常 | ||||
刷新后,页面显示正常 | ||||
不同浏览器下渲染出来的页面显示正常 | ||||
不同分辨率下页面布局显示正常 | ||||
无权限操作时按钮置灰或不显示,无法输入的输入框disable | ||||
无错别字,或者提示性文字措词恰当,准确 | ||||
页面显示无乱码 | ||||
必填的控件,有必填提醒,如 * | ||||
控件(如菜单、对话框、按钮,单选框、复选框)的布局、风格、是否正确,界面是否美观,操作是否友好 | ||||
兼容性 | 应用是否可以在Android和IOS两个平台上兼容 | |||
是否兼容不同的Android版本如4.1.1、4.2.1、IOS版本如8.3、9.1、10、11、12 | ||||
能否适配各种屏幕尺寸,Android系列如4.X、5.X,IOS系列如4英寸、4.8英寸、5.5英寸 |
||||
分辨率适配:分辨率不同,界面图标、文字大小会不同,保证主流分辨率下图标展示完整,文字不被遮挡 | ||||
Android手机和IOS手机选取市面上主流手机即可,例如:小米、华为、vivo、oppo等;ios系统手机就是6、6s、6plus、7、8、x、xr | ||||
专项 | CPU | 略 | ||
内存 | ||||
流量 | ||||
耗电量 | ||||
发热量 | ||||
FPS | ||||
GPU |
APP测试常见面试问题
一、APP的测试资源准备有哪些?
1.IOS设备、Android设备(选取市面上主流手机产品);
2.支付宝/银联支付的项目,需要提前申请支付宝/银联账户等等;
3.有秒杀专题的题目,需要规划秒杀时间表;
4.有优惠券使用的项目,需要添加优惠券数据;
二、APP测试的稳定性如何测试?
稳定性测试这项工作是在软件产品基本功能无缺陷后进行的一项测试工作,一般使软件系统满足持续运行模式,进行正常情况、临界情况的测试,看系统是否有异常。一般使用Monkey工具,向系统发送随机事件流,如按键输入、触摸屏输入、手势输入等,实现对软件的稳定性测试。
三、APP测试与Web测试的区别?
单纯从功能测试的层面上来讲的话,APP 测试、web 测试在流程和功能测试上是没有区别的。
相同点:
1.同样的测试用例设计方法;
2.同样的测试方法:都会依据原型图或效果图检查UI;
3.测试页面载入和翻页的速度、登录时长、内存是否溢出等;
4.测试应用系统的稳定性;
不同点:
(1)系统结构方面
web项目,b/s架构,基于浏览器的;web测试只要更新了服务器端,客户端就会同步会更新。
app项目,c/s结构的,必须要有客户端;app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。
(2)性能方面
web项目 需监测 响应时间、CPU、Memory
app项目 除了监测 响应时间、CPU、Memory外,还需监测 流量、电量等
(3)兼容性方面
web项目:
1. 浏览器(火狐、谷歌、IE等)
2. 操作系统(Windows7、Windows10、Linux等)
app项目:
1. 设备系统:iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)
2. 手机设备可根据 手机型号、分辨率、屏幕尺寸不同
(4)相对于 Wed 项目,APP有专项测试
1. 干扰测试:中断,来电,短信,关机,重启等
2. 弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)
3. 安装、更新、卸载,中断、前后台切换
安装:需考虑安装时的中断、弱网、安装后删除安装文件,全新安装、升级安装、第三方工具安装等情况;
卸载:需考虑第三方工具卸载、直接卸载卸,载后是否删除app相关的文件;
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新;
中断:来电中断、短信中断、闹钟中断、手机锁定、手机断电、手机死机
4. 界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换
5. 安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等
6. 边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等
7. 权限测试:设置某个App是否可以获取该权限,例是否可访问通讯录、相册、照相机等
(5)测试工具方面
自动化工具:APP 一般使用 Appium; Web 一般使用 Selenium
性能测试工具:APP 一般使用Monkey、 JMeter; Web 一般使用 LR、JMeter
四、你知道哪些APP云测平台?
百度云测、testin云测、众测平台等。
五、App测试中ios和Android有哪些区别呢?
1.Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;
2.多分辨率测试,Android端20多种,ios较少;
3.手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退;
4.操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等;
5.push测试:Android点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios点击home键关闭程序和屏幕锁屏的情况(红点的显示);
6.安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有app store,iTunes和testflight下载;
7.升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号);
六、APP出现ANR,是什么原因导致的?
简单的总结有以下两点:
1.主线程执行了耗时操作,比如数据库操作或网络编程
2.其他进程(就是其他程序)占用CPU导致本进程得不到CPU时间片,比如其他进程的频繁读写操作可能会导致这个问题。
细分的话,导致ANR的原因有如下几点:
1.耗时的网络访问
2.大量的数据读写
3.数据库操作
4.硬件操作(比如camera)
5.调用thread的join()方法、sleep()方法、wait()方法或者等待线程锁的时候
6.service binder的数量达到上限
7.system server中发生WatchDog ANR
8.service忙导致超时无响应
9.其他线程持有锁,导致主线程等待超时
10.其它线程终止或崩溃导致主线程一直等待。
七、App出现crash原因有哪些?
和App崩溃相关的几个因素:内存管理错误,程序逻辑错误,设备兼容,网络因素:
1.内存管理错误:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致App crash。或是内存泄露,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。亦或非授权的内存位置的使用也可能会导致App crash。
2.程序逻辑错误:数组越界、堆栈溢出、并发操作、逻辑错误。例如,app新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会crash。
3.设备兼容:由于设备多样性,app在不同的设备上可能会有不同的表现。
4.网络因素:可能是网速欠佳,无法达到app所需的快速响应时间,导致app crash。或者是不同网络的切换也可能会影响app的稳定性。