随着移动终端的迅速发展,移动应用正逐渐渗透到人们生活和工作的各个方面。手机游戏、移动流媒体、位置服务、新闻资讯、即时通讯、移动音乐等丰富多彩的移动互联网应用正在改变着信息时代的社会生活。随着应用程序功能的大量增多,逻辑越来越复杂,用户对应用的要求不再仅仅是实现功能,而更多关注的是处理业务时的性能指标,例如并发量、响应时间、吞吐率等是否满足需求。如何最大限度地利用资源、有效地整合资源、降低运行成本、节省运行移动终端所需要的能源,从而提高移动应用软件的整体性能,则变得更为重要。针对这种情况,提出基于移动终端的应用软件性能测试,分析移动应用软件性能测试技术和测试方法。
目前,移动应用大多数是部署在iOS、Android、WinCE/Windows Mobile等移动终端的操作系统上。通过建立统一的UI,功能和API接口来满足业务应用的跨平台特性;并通过建立移动应用支撑平台服务端和客户端之间的通信数据通道,来达到构建移动应用服务端逻辑和客户端逻辑的无缝结合的目的。同时,基于高效可靠的移动终端,采用移动通讯、3G/4G网络、WIFI等网络,建立一个安全可靠、稳定高效、智能便捷的移动平台,实现智能化移动应用运转的持续性与完整性、信息处理的实时性与精准性。
当前,移动应用的录制主要方式是虚拟脚本生成器通过Proxy实现的。通过一个Proxy,该Proxy作为客户端和服务器之间的中间人,接受从客户端发送的数据包,记录并转发服务端;接收从服务端返回的数据流,记录并返回给客户端。这样,无论是客户端还是服务端都认为自己在一个真实的运行环境中,而虚拟脚本生成器通过这种方式截获客户端和服务器之间的数据流。截获数据流之后,虚拟脚本生成器进一步根据录制时选择的协议类型,对数据流进行分析,然后用脚本函数将客户端和服务器之间的数据流交互过程体现为脚本语句。
接下来,我们选取一款移动终端应用,具体分析性能测试的目标和指标要求。
图1 网络拓扑结构
本次被测的移动应用软件是一款电子商务软件,为消费者提供网上交易服务,例如:网上订购、网上支付、电子账户、订单查询、统计分析等功能。被测移动应用软件部署在Android操作系统的移动终端上,用户可通过互联网访问此移动应用软件。具体的网络拓扑结构如图1所示。
本次测试目的主要是通过不同的并发用户数,对该移动应用软件进行性能测试,考察系统的响应情况及各服务器的资源使用情况。同时,验证系统的实际性能和稳定性是否能达到系统设计指标的要求。在测试期间,考察是否满足以下几点测能需求:
(1)事务失败率
信息系统事务失败率不得超过0.1%。
失败率=失败次数÷(成功次数+失败次数)。
(2)响应时间
响应时间即对发出的请求做出响应所需要的时间。响应时间包括网络传输时间、应用服务器处理时间和数据库服务器处理时间。
响应时间=网络传输时间+应用服务器处理时间+数据库服务器处理时间。
(3)系统资源性能
CPU利用率:当系统并发用户数在设计要求范围内时,应用服务器和数据库服务器的CPU平均利用率不得超过80%,且CPU利用率不得连续30秒超过95%。
内存使用率:当系统并发用户数在设计要求范围内时,应用服务器的内存平均使用率不得超过80%,且内存使用率不得连续60秒超过85%。
性能测试点的选择
选择具有代表性的和使用频繁的业务功能或使用核心(特殊)技术的功能作为性能采样点,可以由用户指定,也可根据关注程度、重要性作出选择。基于以上原则,本次测试选取三个性能测试点:网上订购、订单查询、统计分析。
脚本录制
使用Silk Performer工具对移动终端的应用软件进行性能测试,测试前需要在已安装Silk Performer的电脑上共享网络,并且手机可以连接上共享出的WIFI网络。同时,配置手机WIFI连接的HTTP代理地址和端口,代理地址配置为电脑的IP地址,端口可以写1-65535,而此次使用端口为8080。随后,便可使用Silk Performer脚本编辑器,录制协议选择为Mobile Devices协议,并且录制模式选择为通过移动设备录制,端口就填写手机上设置的8080端口。点击开始录制按钮,随后在手机上打开需要录制的移动应用程序,一步步操作需要录制的性能业务点,业务点操作完毕后,点击结束录制按钮。此时,通过Silk Performer代理方式将手机上的移动应用程序脚本录制下来了。
测试场景
对测试业务功能点,使用Silk Performer性能测试工具模拟多用户并发测试,考察各个业务点的响应时间,并同步监控服务器的资源利用情况。测试期间,并发用户运行设置采用如下方式进行:
单点操作负载测试场景设计为分别模拟1、50、100个用户并发,采用静态或动态加压方式(1个用户采用静态加压方式;50、100个用户采用动态加压方式),测试时不设置脚本的思考时间Think Time(或根据不同业务需求调整),测试持续5分钟,同时监控服务器的资源利用情况。
混合业务负载测试场景设计为模拟100个用户并发,对被测业务点进行混合压力测试,采用动态加压方式,平均分配用户比例,测试时不设置脚本的思考时间Think Time(或根据不同业务需求调整),测试持续时间为5分钟,同时监控服务器的资源利用情况。
稳定性测试场景设计为100个用户并发,对被测业务点进行稳定性测试,采用动态加压方式,平均分配用户比例,测试时不设置脚本的思考时间Think Time(或根据不同业务需求调整),测试持续时间为4小时,同时监控服务器的资源利用情况。
分析测试结果
网上订购、订单查询、统计分析在1、50个用户并发时平均响应时间均小于3秒,但在100个用户并发时,移动应用开始报错,报错信息为Java.sql.SQLException错误和WebLogic连接池泄露问题。在与开发方进行沟通后,排除服务器端网络性能问题和应用软件设计问题,将问题定位为数据库配置问题和应用软件参数设置问题。因此,配合开发方对数据库进行了调优,并对WebLogic连接池参数进行了配置。对调优后的移动应用软件执行第二轮回归测试,三个性能点的100个用户并发平均响应时间均小于5秒,混合业务和稳定性测试也均达到了本次测试目的与需求。同时,服务器CPU利用率、可用内存和磁盘I/O也未见异常波动。测试结果见图2、图3、表1、表2。

图2 统计分析100个用户并发时事务响应时间
表1 统计分析100个用户并发时事务响应时间
最小值[s]: | 0.91 |
平均值[s]: | 8.51 |
最大值[s]: | 331.63 |
标准偏差[s]: | 14.90 |

图3 统计分析100个用户并发时事务响应时间(回归测试)
表2 统计分析100个用户并发时事务响应时间(回归测试)
最小值[s]: | 0.17 |
平均值[s]: | 3.08 |
最大值[s]: | 28.36 |
标准偏差[s]: | 2.72 |