前言
在移动互联网高速发展的今天,测试作为技术研发流程中最重要的环节之一,其地位是不言而喻的。一个测试人员需要具备什么样的技术能力,怎么样快速对移动互联网测试有一个全面的认识和学习,是测试人员必须面对和考虑的,也给测试人员提出了新的挑战。
功能自动化测试
如果仅仅依靠纯手工的测试,很快就会面临瓶颈,因为每个功能几乎都要经过 bug修复、验证和回归的过程。另外针对接口协议的验证,也必须依赖自动化才能验证。
移动互联网的产品和Web互联网产品类似,后台都有大量的接口提供相应的服务,很多的业务逻辑都是放在后台来处理的,所以可以针对这部分逻辑做轻量级的接口自动化测试。技术方案上,从界面发起相关请求的做法效率不高且不够稳定,所以我们一般采用直接从接口层面发起请求来验证。
除了接口的自动化,App UI 自动化也可以帮助快速地进行App功能的回归。考虑到UI自动化用例建设和维护成本,可以针对相对稳定的功能进行App UI 自动化用例建设,这些用例除了UI的自动化验证之外,持续集成和兼容性测试中也能发挥他们的价值。目前业界用的比较多的App UI自动化测试框架有Robotium和Appium,Robotium相对原生的UI自动化测试框架,提供了更友好的定位控件的方法,在写自动化脚本的时候建议使用Robotium类库来提高测试效率。Appium框架是一个开源的重量级的自动化测试框架,支持iOS和Android等平台的自动化测试,支持跨平台,支持真机和模拟器,也支持多种语言编写测试脚本。每种测试框架都有其优缺点,可以根据实际的项目来挑选适合自己的。
性能测试
产品经过了功能层面的验证,还达不到发布的要求,还有很多影响用户体验的问题需要重点关注,比如App使用时不流畅,操作时服务端响应慢,高峰期使用应用频繁报错,莫名闪退,App使用一段时间后占用内存过高,界面打开速度变慢等等。这些问题虽然不关乎功能,但很有可能造成用户的流失,影响产品的口碑。所以我们需要做充分的性能测试来规避相关风险。
性能测试是一个非常综合的测试技术,涉及面广,测试人员需要有一定的积累才能发现隐藏较深的问题,对于移动App的性能测试,分为Web前端的性能测试、App端的性能测试,后台服务的性能测试。Web前端的性能测试已经较为成熟,Fiddler、FireBug等工具都能辅助测试。App端的性能测试在这三项中是最重要的,页面渲染的时间,CPU的使用情况、内存泄露,都会直接影响到App的运行性能,甚至导致程序崩溃。测试的时候可以借助一些工具帮助分析内存使用情况。基于后台服务的性能测试主要是从负载、压力、持久性等方面量化地评估系统的响应时间和容量等指标。
专项测试
针对某个特殊问题进行的测试,我们称为专项测试,它是移动互联网产品中重要的测试类型,可以从不同的维度发现更多深层次的问题,必不可少。主要有以下几类:
兼容性测试
随着终端设备的型号多样化,用户多了以后自然而然就会遇到兼容性问题,因此需要覆盖不同的软硬件环境来进行兼容性测试。操作系统的版本、屏幕分辨率、网络类型、浏览器类型都是需要考虑的。执行方案上,一般会借助UI自动化和云测试平台来进一步提升兼容性测试的效率和覆盖面。
流量测试
App 使用过程中,很多用户会关心流量用了多少,特别是非宽带的流量需要付费时。如果App设计有缺陷,频繁联网去服务端获取信息,会导致流量消耗较快,最终结果是导致用户卸载App。所以流量测试从两个方面入手,前台用户的操作和后台的流量消耗情况。对于Android系统,可以通过系统提供的API接口来获取流量数据,而对于iOS系统,可以通过Instrument自带的Network来查看网络流量。当然还有其他方法,比如可以通过手机抓包、Wifi代理的方式来获取流量数据进行分析。控制流量的策略也有很多,数据压缩、访问控制、缓存、不同访问策略和不同的数据格式等等,在App设计之初最好能提前考虑到这些方面,避免后续架构改动较多带来一定的风险。
电量测试
电量和流量一样,也是用户较为关心的一个方面。耗电太快,也会导致用户流失。Android系统上,可以借助第三方App来评估手机上各个App的耗电情况。针对iOS系统,还是依赖Instrument提供的Energy工具,从多个维度来查看App的耗电情况,同时苹果提供了类库也可以获取当前设备电量信息。
弱网路测试
很多时候,问题总是在环境比较复杂的情况下才会暴露出来,弱网络就是其中之一。与其让用户遇到带来不好的体验,不如在测试阶段模拟弱网络环境,及早解决。iOS系统中自带的开发者选项可以对网络状态进行设置。另外目前还有好多弱网络模拟工具比如Charles可以帮助测试,还可以采用真机模拟弱网络的方式。
稳定性测试
说起移动App稳定性测试,第一个想到的肯定是Monkey测试,Monkey工具使用起来也比较简单,通过命令就可以执行。当应用程序崩溃或者产生了ANR(Application not responding),Monkey就会停止并报错。
安全测试
移动App产品的安全测试主要有以下几个方面:安装包的安全测试,能否反编译、是否签名、权限检查、完整性校验;敏感信息测试,包括数据库、日志、配置文件中的信息;账户安全和数据通信安全;服务端接口的安全测试,常用的SQL注入,XSS跨站脚本攻击、CSRF跨站请求伪造,越权访问。
以上各项测试可以独立执行,也可以交叉结合,构造更加复杂的测试场景。
写在最后
也许这里的技术/工具方案并不是最好的,但是各维度领域的测试思路,希望能对你有所帮助。