软件测试技术指南——移动端APP测试
一、APP测试流程移动应用软件开发的周期一般都比较短,基本都是敏捷开发,而且开发的模式跟传统互联网也有一些差异。通常开发模式都采用平行模式,开发人员比较少,但是分工比较明确,各团队之间(Android、IOS、后台)根据指定好的接口进行联调,也就是集成测试。
APP的整个研发的周期一般在2~3个月左右,具体根据产品功能的复杂度来确定,而且测试周期一般是1~3周左右,所以测试人员比较少,大多数都是一个人负责,所以要求测试工程师熟悉APP的整个测试的流程和方法。
APP的测试流程如下:
1.计划阶段
首先要确认产品的需求文档、原型设计图、接口文档以及相关的说明文档,然后根据这些文档规划项目的测试计划,整理测试思路,最后确认测试设备(Android和ISO不同版本的真机)以及测试工具。
2.设计阶段
测试用例的设计,通常根据业务流程结合用例设计方法来设计测试用例,然后在项目组内召开用例评审会,评审通过后再将测试用例进行归档。
3.执行阶段
为了测试数据的准确,通常都是使用实体机执行测试用例。如果发现Bug,经确认后在缺陷管理工具中提交Bug单,等待开发修复,然后再进行回归测试。如果回归测试不通过,重新激活Bug;如果回归测试通过,将Bug状态修改为关闭状态;如果开发人员拒绝修改Bug,则进行沟通交流,还可以在项目组内开会讨论。
4.评估报告阶段
对遗留Bug进行风险评估,并给出处理方式以及意见,最后编写测试报告,待项目上线后进行测试总结。
二、APP测试方法
要想做好APP测试,首先需要了解Android与IOS操作系统的区别,再熟悉APP测试的方法,才能更全面进行测试,建议采用真机进行测试。
1. Android与IOS
Android最早成立于2003年,在2005年被Google收购,现归属Google。在2008年9月发布了第一个版本Android1.0,代表产品是T-Mobile G1,这个产品是Android系统很重要的里程碑。Android是Google开发、发行的一个智能的、开放式的软件平台。它的内核是Linux,其应用程序都用Java编程语言来编写。由于Android的运行机制采用虚拟机,系统需要占用大量内存来换取执行速度,再加上不定期的内存自动回收机制,从而导致出现卡顿的现象。IOS是苹果公司在2007年1月推出的封闭式手机操作系统,它指定使用的一种开发语言——Objective-C语言。它的运行机制采用沙盒运行,整个运行过程中不需要虚拟机,所以相比Android来看其执行效率要高一点。
由于Android是采用了开放的策略,所以很多厂商对其进行了订制。这也使得Android手机在设计上相比IOS变得多样化,但是同时带来安全隐患,也就是说在测试APP软件时,Android的安全性比IOS要考虑得多一些;同时在测试兼容性时,Android也比IOS考虑得多一些。由于Android的设备比较多,基于市面上的辅助工具也比IOS要应用要广泛一些。另外还需要注意的是系统版本,Android系统的版本可升、可降,而IOS系统的版本只能升级(越狱除外)。
除了上述问题之外,APP测试最大的问题是网络的不稳定以及隐私的安全问题。
2. UI测试
UI测试即用户界面测试,具体测试方法如下:
1)首先确保UI界面设计符合国家的、行业的、企业的标准规范;
2)关注窗口、菜单、对话框以及按钮控件的布局、风格是否满足用户要求;
3)不同页面中控件大小、风格是否一致;
4)页面中颜色的搭配是否合理,整体的颜色不宜过多;
5)文字的提示是否友好,是否存在敏感词、关键词等;
6)操作是否简单、人性化,是否有帮助指引;
7)自适应界面设计,内容是否根据窗口的大小自适应调整;
8)图片是否涉及版权、隐私、专利等问题。
3. 功能测试
能测试就是验证各个功能是否与需求实现一致,可以从以下几个方面进行测试:
3.1 安装卸载
1)在不同的操作系统下验证安装卸载是否正常,如Android、IOS等;
2)软件是否可以通过第三方工具进行安装、卸载;
3)安装卸载过程中是否可以取消;
4)安装卸载过程中出现异常处理是否妥当,如重启、死机、断电、断网等;
5)安装过程中空间不足是否有提示信息;
6)安装文件是否写到指定的目录里,卸载后所有的文件及文件夹是否全部删除;
7)卸载后是否可以重新安装,安装后数据是否同步,功能是否正常;
8)重复安装是否会有提示信息;
9)直接卸载程序是否有提示信息。
3.2 启动运行
1)安装后启动软件测试功能是否可以正常运行;
2)首次打开软件是否有访问提示,如允许访问通讯录、获取地理位置等;
3)首次启动运行时速度是否满足要求,页面之间切换是否流畅。
3.3 注册登录
1)注册时要考虑用户名和密码的长度、格式是否有限制或规则要求等;
2)重名注册是否有提示信息;
3)注册成功后,用户是否可以正常登录;
4)软件是否有快捷登录,如手机号码,获取验证码之间进行登录;
5)是否支持第三方账号登录,如QQ、微信、微博等账号;
6)登录时密码输入错误次数有没有限制;
7)登录时网络中断是否会有友好提示;
8)APP是否实现免登录功能;
9)当用户主动退出后,下次启动APP应切换到登录界面。
3.4 前后台切换
1)APP切换到后台,再次返回APP时,是否停留在上一次操作的界面;
2)APP切换到后台,再次返回APP时,功能是否正常,数据是否更新;
3)手机锁屏后,再解锁进入APP,功能是否正常,数据是否更新;
4)出现提示信息后,切换到后台,再次返回APP,检测提示信息是否存在;
5)多个APP软件之间切换,功能是否正常,数据是否更新;
6)使用APP时,与手机功能的交互测试,如来电话、收短信、闹钟等。
3.5 升级更新
1)当APP有新版本时,是否有更新提示信息;
2)当版本为非强制升级更新时,不更新是否可以正常使用;
3)当不更新退出后,下次启动APP,是否仍然有提示更新信息;
4)设置APP软件自动升级更新时,在无wifi的情况下,是否自动更新;
5)当版本为强制升级更新时,不更新是否可以正常使用;
6)升级更新后功能是否正常使用,数据是否会同步。
3.6 异常测试
1)电量测试,如电量10%、50%、90%时,验证APP功能是否正常;
2)低电量提示时,验证APP功能是否正常;
3)充电、拔电时,验证APP功能是否正常;
4)弱网测试,模拟2G、3G、4G、wifi时,验证APP功能是否正常;
5)模拟网络2G、3G、4G、wifi之间的切换,验证APP功能是否正常;
6)离线测试,检查APP是否支持离线浏览;
7)Push测试,检查用户在免打扰模式下能否接受Push。
4. 性能测试
APP的性能测试分手机端和服务端的性能。
4.1 手机端性能
手机端性能主要检查资源问题,如CPU,内的占用,耗电量、流量的情况。
(1)CPU占用
据经验表明,在使用APP软件时,如果CPU占用率低于20%表示为最佳状态,如果CPU占用在20%~60%之间表示资源使用比较稳定,如果CPU占用率在60%~80%之间表示资源使用饱和,如果CPU占用率超过80%属于性能的瓶颈,必须尽快进行资源调整与优化。
(2)内存使用
手机的内存是非常有限的,为每个APP进程分配的私有内存也是有限制。一方面,要合理的申请内存使用,以免导致内存溢出;另一方面,要及时释放内存,以免发生内存泄漏。不合理使用内存,经常会造成APP软件出现无响应、死机、崩溃、闪退等现象。
(3)耗电量
智能手机的电池都是内嵌的,它的电量也是非常有限的,而且智能手机本身耗电量就比较多(如屏幕、GPS定位、传感器等),所以在进行APP测试时,必须要检查APP的电量使用,以免导致手机耗电发热,带来不良的影响。
(4)流量的使用
目前手机网络类型主要包含2G、3G、4G、wifi,其中还有不同运营商的区分,在使用APP软件时,经常遇到重复请求、响应慢等各种情况。在测试时要注意不同的网络下,流量的使用。
可以借助一些Monkey工具来检测Android手机端的性能问题。
4.2 服务端性能
APP服务端性能跟Web性能大同小异,主要是模拟大量手机用户调用接口对服务器产生负载。可以使用Loadrunner12.0以上(或者Loadrunner11.0+补丁包Patch3)、Jmeter、HyperPacer等工具,进行并发测试、负载测试、压力测试等。
5. 安全测试
近年来,移动APP存在一个非常重要的问题就是安全问题,即用户的隐私泄漏。针对APP的安全测试可以参考以下几个方面。
5.1 安装包安全性
1)首先验证安装包是否对签名进行了校验,以防止被恶意第三方应用覆盖安装等;
2)开发人员是否对源代码进行混淆,以免被反编译软件查看源代码;
3)用户隐私,特别是访问通讯录,需要对特定权限进行检查。
5.2 用户安全性
1)用户拨打电话、发短信、连接网络等是否存在扣费的风险;
2)用户密码在传输中是否进行加密,在数据库中存储是否进行了加密;
3)免登录是否设置了过期时间;
4)用户的账号、密码等敏感数据是否存储在设备上;
5)当用户注销账号时需要身份验证的接口是否可以调用;
6)对Cookie的使用是否设置了合理的过期时间。
5.3 数据安全性
1)用户的敏感数据是否写到日志或配置文件中;
2)当用户使用敏感数据时是否给用户提示信息或安全警告;
3)在输入敏感数据时是否支持第三方输入法输入;
4)用户输入的数据是否进行了数据合法性的校验;
5)在含有敏感数据的连接中是否使用了安全通信,如HTTPS;
6)对安全通信的数字证书是否进行合法的验证。
5.4 通信安全性
1)所有手机的功能应优先处理,如接电话、收短信等;
2)当网络中断或出现异常时需要给用户网络异常的提示;
5.5 服务端安全性
服务端主要关注接口,其安全性跟Web端的安全性类似,主要考虑SQL注入、XSS跨站脚本攻击、CSRF跨站请求伪造以及越权访问等。
6. 兼容性测试
众所周知,APP兼容性测试是一个耗时、耗人力,而且成本很高的测试工作,且APP兼容性测试又是一项必须要进行的测试活动,其测试时主要考虑手机端的软、硬件兼容性,一方面要考虑与主流APP的兼容性;另一方面又要考虑手机设备的兼容性,如不同品牌的手机,不同的操作系统,不同手机的屏幕分辨率等。
具体的测试方法可以使用模拟器来进行模拟不同的手机品牌、系统、分辨率进行测试,但是模拟器测试的数据会有差异,针对一些实力雄厚的公司,建议购买真机进行测试。还可以借助第三方工具(如Spider工具)以及云测试平台来进行测试,这样可以即能保证兼容质量的同时、又能高效地完成APP兼容性测试的覆盖。
7. 接口测试
不管是Web端还是APP接口,其测试的方法思路大致相同(请参考Web端接口测试)。
8. 用户体验测试
由于APP软件的研发人员、研发周期以及测试周期都比较短,所以进行用户体验测试在APP测试中是一项非常有必要的测试活动。通常公司组织内部人员,从用户的角度来评价产品的特性,提出修改意见,从而提升客户的满意度。体验可以从以下几点考虑:
1)UI界面的设计,从用户视觉评价产品;
2)使用真机对手机兼容性进行体验测试;
3)用户的指引设计是否合理;
4)APP页面跳转设计和深度是否合理;
5)体验锁屏、横竖屏的设计以及各种异常操作等。
三、APP测试工具(ADB、AAPT、Monkey、DDMS、Fiddler)
工具这块就不展开了
四、APP测试和Web测试的区别
不管是APP测试,还是Web测试,相对于测试而言,其测试流程、测试思路都没有太大区别。由于测试环境不一样,测试涉及的工具不同,测试方法考虑略有不同,其主要的区别归纳为以下几点:
1. 系统架构不同
Web项目主要是基于浏览器的B/S架构,当Web服务端更新后,客户端就会同步更新。而APP项目主要是基于手机端的C/S架构,当APP服务端更新后,如果更新版本为强制更新版时,则手机端必须更新,否则功能无法使用;如果更新版本不是强制更新,手机端可以选择性更新,此时除了测试新版本以外,还要测试老版本的核心功能是否受到影响。
2. 测试方法不同
1)功能测试,测试思路同样为逐一分析软件质量的六大特性,唯一不同的是Web项目不支持离线浏览,有些APP支持离线浏览,待有网络时再同步更新数据。
2)性能测试,Web项目的主要关注服务器的压力以及Web页面的响应,而APP项目除了考虑服务端的压力之外,还需要考虑手机端的性能,主要是内存使用问题。
3)兼容性测试,Web项目主要考虑浏览器的兼容性,而APP项目需要考虑不同设备,不同系统、不同系统的版本、不同分辨率等。
4)专项测试,相对于Web测试,在APP测试中多了一些专项测试,如电量测试、弱网测试、安装卸载、升级更新、中断测试、访问权限测试以及用户体验测试等。
3. 测试工具不同
自动化测试工具:APP一般使用Monkey Runner和Appium;而Web端一般使用QTP和Selenium。
性能测试工具:APP一般使用HyperPacer、Monkey、Jmeter、Loadrunner12.0;而Web端一般使用Jmeter和Loadrunner。
弱网测试工具:Fiddler、Network Link Conditioner(IOS)。
五、H5页面测试
2014年10月29日,万维网联盟宣布,H5的标准规范制定完成,它是超文本标记语言(HTML)的第五次重大修改,简称H5。HTML5的设计目的是为了在移动设备上支持多媒体,它还引进了新的功能,可以真正改变用户与文档的交互方式。所以在进行H5测试需要注意以下几点:
1. 功能相关
1)关注每个页面的请求是否正确,是否有重复。
2)关注APP缓存,清除缓存后功能是否正确,获取数据失败后是否有重试机制。
3)关注在登录时H5与Native切换。
4)关注页面的加载与刷新,加载的
5)关注网络问题,特别是弱网以及网络之间的切换,对H5页面有没有影响。
6)关注前后台切换时页面的情况。
7)关注mtop接口的处理。
2. 性能相关
1)关注每个页面的加载时间、大小以及请求数。
2)关注弱网下页面的响应。
3)是否适当添加本地缓存。
3. H5适配
1)关注不同品牌手机的浏览器。
2)关注不同品牌手机屏幕大小和分辨率问题。
有用
页:
[1]