基于12306互联网售票系统的手机APP测试方法研究
2019-04-03杨佳愉李天翼
冯 菲,杨佳愉,李天翼,于 澎
(1.中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081;2.北京经纬信息技术有限公司,北京 100081)
2013年12月,铁路手机售票公共服务平台(简称:12306手机APP)正式上线,推出了Android和IOS两个主流平台版本的客户端,作为窗口、自动售票机和电话订票等传统售票渠道的补充,12306互联网售票系统(简称:12306)网站的延伸。系统推出后经过多次版本升级,累积了丰富的测试经验。目前,客户端总装机量超过3亿,已经成为旅客购票的重要渠道。
随着12306 手机APP软件的规模增大、复杂度增加以及质量需求的提高,对其测试技术、测试质量、测试效率提出了更高要求。平台推出1.0版本时,主要以基本功能测试、业务流程测试、UI界面测试为主;为了保证平台的稳定性,针对APP的后台模块进行了负载、压力、配置、并发、可靠性、失效恢复等性能测试;为了保护客户信息和系统数据,阻挡非法访问,对平台进行了整体的安全性测试。随着12306网站注册用户的增加、APP装机量的迅速增长,在2.0版本推出时,引入了兼容性测试,测试应用在不同的机型、系统平台、分辨率、网络、厂商、数据的兼容性;为了保证APP在不同机型的响应速度、资源合理占用,使用过程中与手机其他功能的正常切换,进行了APP在手机上的性能测试和交叉事件测试。平台推出3.0版本,为了更好地提升用户体验、及时了解客户反馈,对平台进行A/B测试和灰度发布。引入多种测试方法,通过对平台进行全面测试,修复软件、硬件、网络、应用等各方面存在的缺陷,验证平台的功能、性能、可靠性、易用性和安全性等方面能够满足设计需求,同时为平台的下一次升级工作提供数据支撑[1]。
1 APP软件测试常用方法介绍
1.1 功能测试
手机APP的功能测试,和常规的软件测试一样,要验证系统是否满足了用户需求说明书及相关设计文档中的业务需求。另外,基于手机APP使用平台的特点,还要从APP启动、前后台间的切换、免登陆、离线浏览、APP更新、获取定位信息、获取相机权限等方面进行测试。
1.2 性能测试
性能测试,主要测试 APP在极限的时间或空间特性下的状态反应[2]。一般包含两个方面:(1)APP安装、卸载及执行各类功能操作时的响应时间。(2)反复执行安装卸载或反复执行某一功能时对手机软硬件资源的占用情况。性能测试主要评估 APP的时间和空间特性,APP性能的好坏直接影响 APP未来的发展[3]。
1.3 兼容性测试
手机APP兼容性测试,一般包含两个方面:(1)APP与手机操作系统软件及其它应用程序的兼容性。(2)APP与手机硬件(不同品牌、不同的屏幕分辨率)的兼容性。
1.4 安全性测试
安全测试是检查软件中已存在的安全性、保密性措施是否有效的测试[4]。针对移动APP的安全测试包括:安装包测试、敏感信息测试、软键盘劫持、账户安全、数据通信安全、组件安全测试、服务器接口[5]。
1.5 安装卸载测试
手机APP的安装测试,一般包含应用是否能够正确安装、是否能够创建正确的应用图标、安装时是否能够指定安装位置、是否可以设置自启动权限等。卸载测试,一般包含卸载文件是否彻底、删除用户个人文件时是否会提示、系统及个人配置信息是否还原、是否会影响其它应用的正常使用等。
1.6 交叉事件测试
又称冲突测试或事件,是一个正在执行的模块被另一个模块干扰的测试操作[6]。目前,智能手机的功能越来越多,手机APP的交叉事件测试也相当重要,例如,多个APP是否能够同时运行、APP在前后台间切换、APP运行时是否能够拨打接听电话、发送接收短信、启用相机、蓝牙设备等。
1.7 用户体验测试
用户体验测试,要以使用者的角度测试APP是否易用,界面是否友好,菜单、操作流程是否简洁合理,尽可能地提高用户的使用体验。用户体验性测试的重要目的是判定软件产品是否能让用户快速接受和使用、是否符合用户习惯等[7]。
1.8 手势操作测试等
除了上述需要重点关注的测试外,还有诸如UI测试、手势操作测试、客户端数据库测试等。
2 12306手机APP测试实践
随着12306手机APP功能的不断增加,用户群体的不断扩大,APP各方面的承受能力都在增加,测试难度和复杂度也随之上升,对APP的测试包括功能、兼容性、性能和安全性等多方面测试,现分别从功能、性能和兼容性3个方面对12306手机APP测试进行描述。
2.1 功能测试
12306手机APP功能测试的用例设计方法包括等价类划分法、边界值分析法、错误推测法、场景法等。场景法是通过设计场景来描述软件,由 Rational公司提出,是黑盒测试技术中重要测试方法之一[8]。简单来说,场景法是通过将系统的业务流程或功能点通过场景来进行描述,从而更高效地完成测试的一种方法。场景法包含基本流和备选。一个业务仅存在一个基本流,且基本流仅有一个起点和一个终点。备选流为除了基本流之外的各支流,包含多种不同情况[9]。
2.1.1 流程图
以改签为例,使用场景法结合相应的业务规则对其测试过程进行阐述。根据业务规则,绘制流程图如图1所示。
图1 场景法流程图
2.1.2 基本流和备选流
根据场景法,设计基本流和备选流,流程描述如表1所示。
表1 场景法基本流和备选流描述
流运用场景法根据图1和表1生成场景指导测试,场景举例如下:
(1)场景1:基本流+E4+E7+E10
改签原票距开车时间小于48 h,对多张车票进行批量改签,可选乘车日期为开车前,也可改签开车后至票面日期当日24:00之间,在查询结果中选择某个车次,提交订单,某乘车人新票与已有车票存在行程冲突,不满足实名制购票规则,扣票失败。
(2)场景2:基本流+E4+E9
对购买返程优惠的返程动卧车票进行批量改签,票面日期距开车时间超过48 h,乘车日期可为预售期内任意一天,查询并选择某个动卧车次,购买的车票仍可执行返程优惠,改签核收的手续费需按照距改签原票票面乘车站开车的时间进行计算,支付或退差额后,改签成功。
(3)场景3:基本流+E4+E8+E11
对距开车时间大于30 min的广深港跨境高铁列车车票(发站不为香港西九龙)进行批量改签,改签新票乘车日期可为预售期内任意一天,查询并选择某个车次,提交订单,支付订单,广深港跨境高铁车票改签不收取退差额手续费,改签成功。
2.2 性能测试
客户端的性能是影响用户体验的重要方面,移动客户端的性能测试指标通常包括安装时间、启动时间、CPU占用、图形处理器(GPU)占用和内存占用等。CPU的性能体现了手机的运算能力,是标志手机性能的主要衡量指标。GPU的性能体现了手机对于图形图像的处理能力,GPU占用直接影响手机软件的输出效果。内存占用指的是RAM,即手机的运行内存,是体现手机实际处理能力的重要指标,直接影响到手机软件的运行速度。
12306手机APP应用的性能测试,也是基于上述通用指标完成的,性能测试通常分为3个步骤:(1)设计性能测试用例,分析12306应用的特点,确定要测试的业务功能点,开发测试脚本。再根据市场使用情况,确定待测机型,鉴于手机12306用户基数庞大,为保证测试准确性、严谨性,在选取待测机型时,除了考虑覆盖最常用的机型(如Top100)外,还会选择一些配置较低但仍具有一定保有量的机型作为补充。(2)执行性能测试,12306升级频率高,性能测试工作量大,为了提高性能测试执行效率,节约测试时间,在执行手机性能测试时通过性能测试平台同时调用多台手机批量执行性能测试脚本,生成测试结果。(3)分析测试结果,平台以图表的形式生成直观的测试结果,为开发人员进一步优化提供依据。
本文选取V3.X和V4.X两个版本的测试结果进行比较,如表2所示。其中,安装时间、启动时间和CPU占用都明显得到了优化,安装时间平均值由25.5 s缩短至17.4 s;启动时间平均值由4.3 s缩短至1.5 s;CPU占用平均值由3.4%降低至2.6%。GPU占用和内存占用还有优化空间,不排除与UI界面的优化和新增功能有关。
表2 12306手机APPV3.X版本与V4.X版本性能测试结果对比
2.3 兼容性测试
虽然业界普遍认为,手机APP的兼容性测试是一个高成本、高耗时、低效率的工作,需要投入大量的人力、物力资源,但考虑到12306网站数以亿计的手机用户群体,本着用户至上的宗旨,每次应用升级前的兼容性测试都是重点工作之一。
12306手机APP的兼容性测试,通常从需求阶段开始,依次分为3个阶段:测试用例设计阶段、执行测试阶段、应用上线后的跟踪测试阶段。
2.3.1 测试用例设计阶段
通过市场调研并结合历年来积累的数据,确定当前用户群体主流手机的系统平台、厂商品牌、屏幕分辨率等数据,生成APP兼容性测试矩阵,覆盖尽可能多的手机用户的同时减少用例的重复和冗余。
在设计用例时我们一般遵守以下原则。
(1)系统版本覆盖原则:例如Android系统4.3以下版本和IOS系统8.X以下版本当前的用户使用率均不超过5%,使用份额小,适配难度高,如果项目需求中没有明确要求支持上述版本,在设计兼容性测试用例时就暂时不予考虑。
(2)版本差异筛选原则:对于使用率较高的版本,通过分析需求设计说明书,与开发人员沟通,了解程序底层交互及接口调用关系,确定重点检查的页面和交互,如果多个版本之间的差异并无前端UI和交互变动,则可以继续进行优化精简,只需选取某一个版本进行覆盖。
(3)屏幕分辨率和尺寸覆盖原则:尽早与开发、设计人员沟通不同分辨率下的适配方案,尽量覆盖主流分辨率和尺寸,剔除已经不能适配的分辨率和尺寸。
2.3.2 执行测试阶段
在测试用例设计阶段,已经设计好了兼容性测试用例,能够保证测试用例执行时的有效性和高效性,执行测试时可以按照一定的策略来提高执行效率,缩短测试周期。
(1)测试执行过程中,不同的迭代轮次可以切换不同测试机执行测试。
(2)在做功能测试时,可以选取以前经常出现兼容性问题的机型进行测试覆盖,尽早发现更多的兼容性问题。
(3)利用一些测试工具,如STF(TesterHome)平台提高测试机的利用率,通过PC端远程控制测试机的方式提高测试执行效率。
(4)利用第3方测试平台进行兼容性测试,可以轻松完成数百种常用机型的覆盖,得到事半功倍的效果。
2.3.3 上线后跟踪测试
12306手机APP上线后,需要进行持续的跟踪测试,收集广大用户的反馈意见,及时发现系统上线前未能发现的兼容性问题,例如,在某些特殊型号上出现的闪退、无法安装、无法运行等问题,及时进行问题分析总结,并补充到兼容性测试用例矩阵中,为后续版本的测试打好基础。另外,还需时刻关注主流手机厂商推出的新版本系统,迅速与12306手机APP应用进行适配性测试,适应市场的变化,提升用户体验。
2.4 A/B测试
除了传统的测试方法,12306手机APP还进行了A/B测试,为页面改版、功能设计、业务优化等提供了数据支持。所谓A/B测试,就是对同一个优化目标制定两个方案,让一部分用户使用A方案,同时另一部分用户使用B方案,统计并比对AB两个方案的转化率、点击量、留存量等指标,以判断不同方案的优劣进行决策。简单地说,A/B测试是一种用于提升产品转化率、优化获得客户成本的数据决策方法。
以12306 手机APP的“铁路畅行”功能为例,“铁路畅行”推出的目的是将12306网站的注册用户转化为铁路的积分用户,积分用户可以用积分购买铁路产品。设计团队设计了两种方案:(1)A方案,将“铁路畅行”作为二级菜单放在了“我的12306”下,这种方案对于APP首页无变动;(2)B方案,将“铁路畅行”放在了首页,并将主要功能以BUTTON的形式显示在主页面上,如图2所示。
通过测试配置,分别为两个方案分配了100万的外部用户,经过7天左右的实验观察,数据显示,A方案用户中由普通用户转化为积分用户的不足0.34%,B方案用户的转化率达到了2.97%。为防止样本随机性带来的偏差,第2次分配了100万的不同用户,这次,A方案的用户转化率为0.38%,B方案的用户转化率为3.01%。基于这个实验结果,最终选择了版本B推送给了全部用户,显著提升了积分用户的转化率。
图2 A/B方案界面图
3 结束语
本文基于12306手机APP测试工作中的具体实践,结合当前手机APP测试的一般方法,阐述了这些测试方法在12306手机APP测试中的运用与升华。有效地发现了系统在软件、硬件、网络、应用等各方面存在的缺陷,提高了系统的整体质量,验证和确认了系统的功能、性能、可靠性、易用性和安全性。