01_App理论
APP相关知识
- 在移动终端领域,到目前为止,最流行的移动终端操作系统,就是安卓和IOS。
- 安卓系统,是基于linux系统的内核进行开发的开源的操作系统,运行在安卓系统上的app采用java语言编写,安卓APP软件包的后缀为.apk。
IOS系统,是苹果公司开发的一款移动终端操作系统,以运行稳定,资源消耗低等优点闻名于世。IOS的APP开发语言涉及到C、Object-C、Swift、C++等,后缀名为.ipa。 - APP的环境架构
一般情况下,APP的web应用服务器会采用Nginx,数据库采用MySQL。但这样看情况,也有用tomcat等其他容器做web服务器的,数据库也有用oracle或其他类型的数据库。一般访问量不大的app,一台web服务器,一个数据库服务器就够了,访问量大,安全性要求高的,服务器会多些。
APP测试流程
其实,大部分的软件测试流程都是差不多的。
测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。正式测试前先向主管确认项目排期。
测试任务开始前,检查各项测试资源:
--产品功能需求文档;
--产品原型图;
--测试设备(真实的手机,如:OPPO R17,vivox23,华为p20,mate20, iPhone 8, iPhone xs)
APP测试策略
功能测试
和PC端测试一样,APP测试也要根据软件说明或用户需求来验证App的各个功能实现,采用如下方法实现并评估功能测试过程:
1)根据用户需求提炼App的用户使用场景,构建测试点,并明确测试标准,若用户需求中无明确标准遵循,则需要参考行业或相关国际标准或准则。
2)根据被测功能点的特性列出相应类型的测试用例对其进行覆盖,如;涉及输入的地方需要考虑等价类、边界值、判定表、探索性测试方法等对其进行覆盖。
3)在测试实现的各个阶段跟踪测试实现与需求输入的覆盖情况,及时修正业务或需求理解错误。
- 应用的前后台切换
APP切换到后台及应用状态是否正常
手机锁屏解屏后进入APP时,再回到APP,是否停留在上一次操作界面
APP切换到后台,再回到APP,功能否会崩溃,功能状态是否正常
当App使用过程中有电话进来中断后再切换到APP,功能状态是否正常
当杀掉APP进程后,再开启APP,APP能否正常启动
出现必须处理的提示框后,切换到后台,再切换回来,检查提示框是否还存在,有时候会出现应用自动跳过提示框的缺陷
对于有数据交换的页面,每个页面都必需要进行前后台切换、锁屏的测试,这种页面最容易出现崩溃
- 免登陆:很多应用提供免登录功能,当应用开启时自动以上一次登录的用户身份来使用app。
以7天内免登陆为例,测试点:
1、选择7天内免登录,登录后退出再次登录,是否免登录
2、选择7天内免登录,登录后,第七天登录,是否免登录
3、选择7天内免登录,登录后,第八天登录,是否免登录
4、考虑跨周的测试
5、考虑到跨月份的测试(28天、29天、30天、31天)
6、考虑跨年的测试
7、免登录期间,手动输入密码登录,确认免登录的有效期是否往后延长
8、关于缓存的测试(清除缓存、覆盖安装、卸载安装等等)
-
数据更新:根据应用的业务规则,以及数据更新量的情况,来确定最优的数据更新方案
需要确定哪些地方需要提供手动刷新,哪些地方需要自动刷新,哪些地方需要手动+自动刷新。
确定哪些地方从后台切换回前台时需要进行数据更新。
根据业务、速度及流量的合理分配,确定哪些内容需要实时更新,哪些需要定时更新
确定数据展示部分的处理逻辑,是每次从服务端请求,还是有缓存到本地,这样才能有针对性的进行相应测试
检查有数据交换的地方,均有相应的异常处理 -
离线浏览:很多应用会支持离线浏览,即在本地客户端会缓存一部分数据供用户查看
在无网络情况可以浏览本地数据
退出APP再开启APP时能正常浏览
切换到后台再切回前台可以正常浏览
锁屏后再解屏回到应用前台可以正常浏览
在对服务端的数据有更新时会给予离线的相应提示 -
定位、照相机服务:测试定位、照相机服务时,需要采用真机进行测试
有用到定位服务、照相机服务的地方,需要进行前后台的切换测试,检查应用是否正常。
当定位服务没有开启时,使用定位服务,会友好性弹出是否允许设置定位提示。当确定允许开启定位时,能自动跳转到定位设置中开启定位服务。
-
时间测试:
客户端自行设置手机的时区、时间,检查文字的发布时间、评论时间是否合理。 -
PUSH测试:就是把信息推送到APP上
检查push消息是否按照指定的业务规则发送
检查不接受推送消息时,检查用户不会再接收到push
免打扰测试
推送消息是否准
安全测试
敏感信息是否在前端加密,在网络传送过程中是否加密;
密码过于简单检查;
重要数据,如信用卡密码,支付密码,不会被保存的设备中,且不会被解码;
同一个账号在不同的终端登陆,是否有提示;
异地登陆是否有提示;
系统是否允许多次非法的登陆,是否有次数限制;
限制/允许使用手机某些功能,如:读取联系人信息,调取相机,接入网络等;
手机的验证码是否能重复使用,是否有超时限制,使用自己接收到的验证码修改别人的信息;
程序是否能防SQL注入,防XSS攻击
反编译,即将编译后的数据转换成源代码,进而篡改程序。
用户体验测试
用户体验测试,就是以主观的普通消费者的角度去感知产品或服务的舒适、有用、易用和友好亲切程度。
用户体验测试功能点:
是否有空数据界面设计,引导用户去执行操作。
是否滥用用户引导
是否有不可点击的效果
交互流程分支是否太多
相关的选项是否离得很远
一次是否载入太多的数据
界面中按钮可点击范围是否适中
标签页是否跟内容有从属关系
操作应该有主次从属关系
是否有横屏模式的设计
App页面间的切换是否流畅,逻辑是否正确
出错提醒的UI设计能否接受,错误信息内容是否容易理解
系统会因为长时间运行而慢慢停止,然后崩溃
交叉事件
交叉事件测试,即冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试。
交叉测试功能点:
多个App同时运行是否影响正常功能
App运行时前/后台切换是否影响正常功能
App运行时拨打/接听电话
App运行时发送/接收信息
App运行时发送/收取邮件
App运行时切换网络(2G、3G、4G、wifi)
(为什么要限速/模拟弱网?主要是为了模拟app端(也包括pc端)在低网络速度的情况,用于测试各终端是否有bug以及对用户体验是否有影响)
App运行时浏览网络
App运行时使用蓝牙传送/接收数据
App运行时使用相机、计算器等手机自带设备
兼容性测试
兼容性测试,是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操纵系统平台上、不同的网络等环境中是否能够很友好的运行的测试。
app兼容性测试应该考虑以下几个方面:
1、主流手机的分辨率测试。比如(高*宽):1280x800、1280x720、1920x1080、800x480、854x480。
不同操作系统的兼容性,是否适配。比如,安卓从7.0到9.0
不同手机品牌。比如,华为,小米,oppo,vivo等等
PS: iphone系统的app也要考虑这些方面。
性能测试
App的性能测试,分为服务器端的性能测试和手机端的性能测试。我们这里主要是讨论手机端的。
手机端的app的性能测试,主要关注的性能测试指标是:CPU,内存,上传流量,下载流量,和电量的使用情况,我们稍后会结合monkey和性能测试的监控工具来讲解。
安装/升级/卸载测试
-
安装测试
1.正常安装测试,检查是否安装成功。
2.APP版本覆盖测试。
例如:先安装一个1.0版本的APP,再安装一个高版本(1.1版本)的APP,检查是否被覆盖。
3.回退版本测试。
例如:先装一个2.0版本的APP,再安装一个1.0版本的APP,正常情况下版本是可以回退的。
4.安装时内存不足,弹出提示。
5.根据安装手册操作,是否正确安装。
6.安装过程中的意外情况(断电、断网、来电话了、查看信息)等等,检查会发生的情况。
7.在不同型号、系统、屏幕大小、分辨率上的手机进行安装。
8.安装完成后,能否正常启动应用程序。
9.安装完成后,重启手机能否正常启动应用程序。
10.安装完成后,检查是否对其他应用程序造成影响。
11.安装完成后,杀毒软件是否会对其当做病毒处理。
12.在安装过程中,所有的提示信息必须是英文或者中文,提示信息中不能出现代码、符号、乱码等。
13.是否支持第三方安装。 -
卸载测试
1.直接卸载,检查是否卸载干净。
2.用第三方工具卸载,检查是否卸载干净。
3.卸载过程中,出现意外(比如手机关机,没电,查看信息,接打电话),程序是否还能运行。
4.在卸载过程中,突然重启设备,再次访问程序,是否还能运行。
5.在没用使用程序时,删除目录文件,看程序是否能运行。
6.在使用过程中,直接删除目录文件,程序是否还能运行。
7.不同系统、硬件环境、网络环境下进行卸载。
8.卸载成功后,是否对其他程序有影响。
9.卸载后再次安装,是否正常使用。
10.在卸载过程中,所有的提示信息必须是英文或者中文,提示信息中不能出现代码、符号、乱码等。 -
升级测试
1.当客户端有新版本时,提示更新。
2.非强制更新,可以取消更新,旧版本正常使用,下次使用软件时,仍然会出现更新提示。
3.强制更新,强制更新而用户没有更新时,退出客户端,下次启动,依然提示更新。
4.不卸载更新,检查是否可以更新。
5.不卸载更新,检查资源同名文件如图片等是否更新成最新版本。
6.非wifi网络下,提示是否更新,取消就加入待下载,wifi下自动更新。
7.跨版本升级,检查是否可以更新。
UI测试
UI测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏觅功能。确保用户界面符合公司或行业的标准。包括用户友好性、人性化、易操作性测试。
UI测试点:
窗口:
• 窗口能否改变大小、移动和滚动
• 窗口中的数据内容能否用鼠标、功能键、方向键和键盘访问
• 当被覆盖并重新调用后,窗口能否正确地再生
• 需要时能否使用所有窗口相关的功能
• 是否有相关的下拉式菜单、工具条、滚动条、对话框、按钮、图标和其他控制可为窗口使用,并适当地显示
• 显示多个窗口时,窗口的名称是否被适当地表示
下拉式菜单和鼠标操作:
• 菜单条是否显示在合适的语境中
• 应用程序的菜单条是否显示系统相关的特性(如时钟显示)
• 下拉式操作能正确工作
• 是否适当地列出了所有的菜单功能和下拉式子功能
• 文本字体、大小和格式是否正确
• 是否能够用其他的文本命令激活每个菜单功能
• 菜单功能是否随当前的窗口操作加亮或变灰
数据项:
• 字母数字数据项是否能够正确回显,并输入到系统中
• 图形模式的数据项(如滚动条)是否正常工作
• 是否能够识别非法数据
• 数据输入消息是否可理解
[success] APP的分类
- native app 原生app
- webview app 网页app html5
- hybrid app 混合app