APP测试,主要针对的是Android和iOS两大主流操作系统,总体上来说Android碎片化是个难题,bug也多,iOS相对bug少。
主要考虑的就是功能、易用性、稳定性、兼容性、性能、接口、安全性。
1. 功能测试主要用手工来测试APP是否完成了所有功能需求。出现问题最多的也就是特殊符号、边界值、异常情况之类的。
2. 易用性(也就是用户体验)测试,主要是检查界面是否吸引人、容易理解,界面整洁、简单、无错别字。
3. 稳定性测试,主要是中断/弱网/压力测试时是否有闪退、崩溃、无响应之类的问题。
4. 兼容性测试,主要考虑手机的版本、型号、分辨率。不同的版本是存在差异的,一般低版本容易出现问题。
5. 性能测试,主要是靠工具来检测CPU占用、内存占用、响应速度、流量消耗等。
6. 接口测试,主要是测试系统组件间接口的一种测试。
7. 安全性测试,包括程序、网络、数据库安全性测试。
测试前的思考:
· 我们这个产品主要是做什么的?
· 为什么我们要做这个产品?
· 市场上有那些同类型的产品?
测试前的准备:
· 熟悉我们产品的需求文档,积极和产品交流。
· 写测试用例,没有时间至少要有一个checklist,避免漏测。
· 使用同类型的产品,不仅仅是使用,应该是测试同类型的产品。
1. 功能测试
功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到产品要求的功能。
APP的开发模型一般为敏捷开发模型,所以测试也应是敏捷测试。
测试过程我设计为三个阶段:
(1)冒烟测试:功能模块开发提测后进行,验证主功能是否正常;
(2)用例测试+探索性测试:冒烟测试通过后进行,系统测试阶段;
(3)回归测试:验证BUG和需求变动时进行,验收测试阶段;
若是运营级的产品,可适当利用appium等自动化工具实现功能自动化测试。
功能测试过程评估方法
1)采用时间、地点、对象、行为和背景五元素或业务分析等方法分析、提炼APP的用户使用场景,对比需求说明,整理出内在、外在及非功能直接相关的需求,构建测试点,并明确测试标准(若用户需求中无明确标准遵循,则需要参考行业或相关通用标准或规则)。
2)根据被测功能点的特性编写出相应类型的测试用例对其进行覆盖,如考虑通过等价类、边界值、因果图、场景分析、错误推测等方法设计测试用例。
3)在软件开发的各个阶段跟踪开发实现与需求输入的覆盖情况,及时修正业务或需求理解错误,并更新测试用例。
2. 易用性测试
易用性测试就是行业中简称的UI测试,即测试用户界面(如菜单、对话框、窗口和其它可视控件)布局、风格是否合理、文字是否正确,页面是否美观,操作是否友好等,整体风格是否一致,此外还要测试界面操作的便捷性、导航简单易懂性等等。
易用性测试的目标是确保用户界面符合公司或行业的标准。包括友好性、人性化、易操作性方面。
以下分享一下我在易用性测试时注意的一些测试点:
1)检查整个系统的界面是否和产品效果图一致(对照产品原型和UI效果图);
2)检查整个系统所有界面的界面风格和UI设计是否一致;
3)检查界面是否存在错别字或者是不合适的字(这个我们在测试的时候经常遇到,给使用者的第一感觉就是,这个软件也太low了,居然还有错别字);
4)检查界面上的所有的按钮的样式是否一致,是否正确;
5)检查界面操作是否友好,用户交互是否亲善;
6)检查界面所有的按钮、下拉框或者是导航箭头是否有响应,且是响应正确;
7)检查系统上的链接是否有正确的链接地址,且能正确跳转;
8)检查系统中是否存在无用的链接,即不需要做成链接的地方做成了链接,并且点击不能正常跳转或是跳转错误;
9)检查界面中所有的输入框是否都做了检验,比如输入框的最大限制字符,超过输入框的最大限度,系统是否会做处理,而不是报错或者是出现其他错误(这个在测试中也经常遇到);
10)检查界面中的标题或者是内容输入过多时,是否会进行换行或者是隐藏处理,而不是出现界面错位等现象;
11)检查系统在不同浏览器的兼容性问题,检查页面在不同浏览器下是否会发生异常,当用户调整浏览器窗口大小时,是否会出现界面不兼容的情况;
12)检查界面中使用的字体风格和大小是否一致,格式是否统一准确(当然根据不同的需求可做不同的调整);
13)检查所有的字段后面是否有需要的冒号,查看是否冒号为统一的中文冒号还是英文冒号,即中英文符号是否统一(测试中遇到账号字段名后面是中文符号,密码字段名后面是英文符号的情况,这些都是程序员在设计的时候不注意产生的);
14)检查界面中的图片是否显示正确,是否被裁减,是否被拉伸变形,是否显示完全;
15)一般的网页上的数据基本都是搭配后台使用的,即前台网页上的数据是由后台返回,前台网页显示数据的,这个时候我们要注意搭配前后台测试,检查数据是否一致,后台添加的数据内容过多时,前台界面是否会出现界面问题;
3. 稳定性测试
稳定性测试是测试软件在长时间运行或者异常情况下(如中断事件、网络异常)的运行情况,一般使用Monkey对APP进行稳定性测试。
Monkey可以模拟用户操作,向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对应用程序进行压力测试,检测程序多久的时间会发生异常。
中断测试指软件在运行时被其他的任务或意外事件等情况终止退出,中断测试有人为中断、新任务中断以及意外中断等几种情况。 中断详细包括以下:
1)来电中断:呼叫挂断、被呼叫挂断、通话挂断、通话被挂断
2)短信中断:接收短信、查看短信
3)其他中断:蓝牙、闹钟、插拔数据线、手机锁定、手机断电、关机重启;
稳定性测试也包含网络不稳定情况,如网络切换、弱网、断网情况下的APP运行情况。网络异常时,应用是否会崩溃,在请求超时的情况下,如果程序逻辑处理的不好,就有可能发生Crash。
4. 兼容性测试
兼容性测试即终端适配测试,因为手机操作系统类型,版本较多,生产厂家也五花八门的,所以对手机APP进行终端适配测试绝对是个体力活。
应用在不同品牌手机、不同系统版本、不同分辨率、不同网络(WiFi\3G\4G\5G)进行测试,检测各功能是否均能正常使用,界面是否均显示正常等
5. 性能测试
手机APP对平台的性能要求较严格,若存在性能问题,可能会出现严重的Crash问题,因此,对APP进行性能检测试很有必要的。进行性能测试时,我们可分五个阶段进行
(1)Monkey压力测试;
(2)手机内存泄漏检测;
(3)手机CPU使用率检测;
(4)手机缓存检测;
(5)服务器性能测试;
(6)流量消耗测试。
评估App的时间和空间特性
1)极限测试:在各种边界压力情况下(如电池、存储、网速等),验证APP是否正常运行。
2)响应时间测试:测试App中的各类操作是否满足用户响应时间要求
3)压力测试:反复/长期操作下,系统资源是否占用异常,如CPU、内存;
4)性能评估:评估典型用户应用场景下,系统资源的使用情况。
5)Benchmark测试(基线测试):与竞争产品的Benchmarking,产品演变对比测试等。
6)流量测试,主要目的是检测各业务模块的业务流量消耗。
6. 接口测试
在APP客户端开发设计时,一般服务端会提供相应的接口文档,接口文档的质量,决定了APP的开发进度。此部分的测试,首先检测接口的完整性,根据APP需求,检查是否所有数据都有相应的接口返回;其次正确性验证,验证返回的接口信息是否正确,提示代码是否符合要求;然后可采用jmeter、Postman等工具,对设计的测试用例进行测试。
7. 安全性测试
安全测试显得尤为重要,粗心、不谨慎的数据存储或传输方式使得非法、恶意目的有可乘之机。
智能终端安全涉及各信息交互、存储接点,借鉴于网络传输和相关安全测试经验,APP安全测试大概划分为以下几类:
1)从数据的本地存储到数据的传输、处理以及远程访问等各个环节,基于相应的安全标准/行业标准评估APP的安全特性;
2) 借鉴在Web APP和网络安全测试的一些成功经验在智能终端APP测试中进行裁减或适配;
3)检测APP的用户授权级别,数据泄漏,非法授权访问等;
4)对APP的输入有效性校验、认证、授权、敏感数据存储、数据加密等方面进行检测,以期发现潜在的安全问题;
5)基于各种通信协议或相应的行业安全标准检视APP是否满足相应的要求;
1)软件权限
-扣费风险:包括发送短信、拨打电话、连接网络等
-隐私泄露风险:包括访问手机信息、访问联系人信息等
2)开发者官方权限列表信息比对分析
安全性测试方法
软件安全性测试包括程序、网络、数据库安全性测试。根据系统安全指标不同,测试策略也不同。
1.应用程序安全的测试要考虑问题包括:
① 明确区分系统中不同用户权限;
② 系统中会不会出现用户冲突;
③ 系统会不会因用户的权限的改变造成混乱;
④ 用户登陆密码是否是可见、可复制;
⑤ 是否可以通过绝对路径登陆系统(拷贝用户登陆后的链接直接进入系统);
⑥ 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统。
2.系统网络安全的测试要考虑问题包括:
① 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上;
② 模拟非授权攻击,看防护系统是否坚固;
③ 采用成熟的网络漏洞检查工具检查系统相关漏洞;
④ 采用各种木马检查工具检查系统木马情况;
⑤ 采用各种防外挂工具检查系统各组程序的外挂漏洞。
3.数据库安全考虑问题:
① 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求);
② 系统数据的完整性;
③ 系统数据可管理性;
④ 系统数据的独立性;
⑤ 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)。
8. 常见问题
在进行APP功能测试时,总结了一些常出现BUG的地方如下:
1. 网络问题
网络不稳定时操作,对APP所需的快速响应时间可能不够,容易出现问题;
(1) 断开网络后,进行相应的增、删、改、查操作;此处若请求异常没作处理,容易crash;
(2)连接网络,当加载的文件较大,网络不稳定时,检测文件能否正常加载,是否会直接crash,如:地图加载
(3)测试时,应在2G、3G、4G、5G、WiFi网络中都进行测试。
(4)当启动APP要加载服务器数据时,若网络中断,应进行提示,并能弹出对话框引导设置。
2. 手机操作问题
(1)当按手机返回键时,检测APP是否与程序返回按钮一致;此处容易出现crash。
(2)当APP弹出对话框后,按手机返回键,检测对话框与主程序界面是否正常返回;此处容易对话框消失后,无法对主程序进行操作。
(3)当在首页按返回键时,检测程序退出是否有提示或按要求退出APP;
(4)按设置按键,查看是否有响应;
(5)按HOME键后,再次进入APP,检测是否能再次进入并运行正常;
(6)进行横竖屏操作,检测APP运行情况;
(7)APP并发操作,如当下拉加载操作时响应事件还未完成时,快速点击其它事件,检测响应情况,是否crash。