基于loadrunner物流信息交易平台的性能测试与改进

2016-05-19 14:15王阅军卫文学
电脑知识与技术 2016年7期

王阅军++卫文学

摘要:为了改善物流行业信息化存在的问题,物流公司开始构建物流信息交易平台,由于数据量巨大,平台的性能极其需要保证。该文以鲁南物流信息交易平台作为此次的测试对象,针对信息交易平台的功能和性能特点,以及用户的需求,和客户管理要求,制订了详尽的测试方案,之后使用自动化性能测试工具loadrunner 对信息平台进行性能测试,并对测试结果进行了详细的分析,找出了系统存在的瓶颈,并对问题进行改进,提高物流信息交易平台的工作效率,满足用户的基本需求和客户要求。

关键词:物流信息交易平台;负载测试;自动化性能测试工具

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)06-0079-02

Based on Loadrunne Performance Test of Logistics Information Trading Platform

WANG Yue-jun, WEI Wen-xue

(Shandong University of Science and Technology Institute of Information Science and Engineering,Qingdao 266590, China)

Abstract: In order to improve the problems existing in the logistics industry informatization, the logistics company began to build a logistics information platform, because of the huge amount of data, the performance of the platform need to guarantee. Based on great logistics information exchange platform as the test object, in accordance with the functional and performance features of the information exchange platform, and the user's requirements, and customer management requirements, formulate the detailed test plan, then using the automatic performance test tools loadrunner to performance test of information platform, and the test results are analyzed in detail, finding out the system bottlenecks, and to improve the problem, improve the working efficiency of the logistics information platform, basic meet user needs and customer requirements.

Key words: logistics information trading platform; load tests; automated performance testing tool

如今,物流行业的信息化程度还比较低,大部分从事物流的企业还处在传统的运作阶段,表现为分散、低效的物流组织形式,粗放式经营的状况。通过建立“鲁南国际物流园区信息平台”,可以使商流、物流、资金流和信息流在物流信息系统的支持下实现互动,从而提供准确和及时的物流信息服务,提高社会物流运作效率。为了保证信息交易平台的工作效率,使其为物流行业创造出更大的价值,需要通过性能测试找出系统性能瓶颈并进行调优。

传统测试的测试方法是编程人员和测试人员同时登陆平台并进行相应的操作,观察浏览器响应速度的快慢,如果浏览器反应速度慢,对平台的各个模块进行单独测试,查找瓶颈所在并修改。传统方法浪费大量的人力物力,增加了研发成本,加长了开发周期。目前,自动化测试软件在市场上纷涌而出、种类繁多。其中,Loadrunner是惠普公司的一款适应于各种体系框架的预测系统行为和性能的负载测试工具。Loadrunner是一种黑盒测试工具,通过模拟实际用户的操作录制的软件脚本,将模拟出的用户用并发负载并实时性能监测的方式来确定和查找问题,在测试完之后,Loadrunner自动生成检测报告(PDF格式或HTML格式)[1]。通过使用loadrunner,企业能最大限度地缩短测试时间,优化性能并加速应用系统的发布周期。

1 Loadrunner工作原理

Loadrunner 11工作过程大致分为五个步骤:规划负载、录制脚本、定义场景、执行场景和分析结果[2]。规划负载:定义性能测试要求(定义自己理想情况下的平均事务响应时间),可以在执行场景下,观察服务器的CPU利用率来决定;录制脚本:录制实际用户对软件的操作;定义场景:设定模拟人数,初始时间,结束时间等环境,如图1所示;执行场景:实时监控,管理人数;分析结果:将结果导出,对结果进行处理。其中,录制脚本在Virtual User Generator模块中,定义场景和执行场景属于Controller模块,Analysis模块包含分析结果过程。

通过Controller实时监控,测试人员用Analysis来分析评估软件或网站的性能。分析测试结果是loadrunner中最关键的一部分,它将运行Controller的检测图生成报告,用来查看网站或软件性能参数。测试人员在测试报告中看见四大类表图:Vusers图、事务响应时间图、Web资源图和系统资源图。

2 测试过程

测试用例应主要以用户需求为基础,验证正确的功能和建立能暴露潜在错误并分析应确定哪些软件结构未被运行。

本次性能测试主要对象是系统登录、园区资源管理、园区日程管理、园区综合服务管理、辅助决策五个方面。按照负载测试计划,根据用户需求录制各个模块脚本,以固定时间增加运行人数,观察Vusers图、事务响应时间图、Web资源图和系统资源图的变化确定系统最大承受能力。

具体操作说明: 以 15 秒钟为运行阶梯逐一递增 10个虚拟用户,当系统任一主机 CPU 使用率在运行阶梯内的平均值高于 100% 或者总体事务错误率在运行阶梯内的平均值首次大于 1%,停止测试,观察虚拟人数数量,web服务器和数据库服务器CPU的利用率[3]。

3 测试结果分析

当自动化测试工具对物流信息交易平台进行性能测试之前,测试人员需要配置测试环境网络,一些系统参数,否则,这样的测试结果没有必要分析。

在确定分析接获之后,就是对测试数据进行深度挖掘,一般测试人员遵循的普遍原则是“由外而内,由表及里,层层深入”[4]。例如,最终用户体验交易响应时间到网络和服务器响应交易时间(系统性能响应时间),再到各组件的性能。

通过Loadrunner的分析组件Analysis,根据测试原则“由外而内,由表及里,层层深入”进行分析,快速定位问题。如图2可以看出问题出现在事务活动。

分析组件Analysis可以直观地看出在测试时间内事务的成功与失败情况,所以比第一步更容易判断出被测系统运行是否正常。然后分析事务平均响应时间(Average Transaciton Response Time),若事务平均响应时间曲线趋高,则说明被测系统处理事务的速度开始逐渐变慢,即被测系统随着运行时间的变化,整体性能不断下降。当系统性能存在问题时,该曲线的走向一般表现为开始缓慢上升,然后趋于平稳,最后缓慢下降。原因是:被测系统处理事务能力下降,事务平均响应时间变长,在曲线上表现为缓慢上升;而并发事务达到一定数量时,被测系统无法处理多余的事务,此时曲线变现为趋于平稳;当一段时间后,事务不断被处理,其数量减少,在曲线上表现为下降。如果被测系统没有等待机制,那么事务响应时间会越来越长,最后系统崩溃。如图3所示。

根据录制脚本和Loadrunner的分析组件Analysis的数据,测试人员可以在日志看见出错最多的action编号,找到相应的脚本,查找发生的问题的代码或配置。

4 Loadrunner定位问题及分析问题

测试对软件来说事关重要,从软件需求开始每一步都要得到认证、评估、需求。对于软件的缺陷发现的越早对于软件开发公司和客户公司的风险和成本越少。每个阶段都有每个阶段的测试,数据库有数据库的性能测试,代码冗余等。

软件的性能测试主要集中在数据库和代码。首先,数据库表结构设计出现问题,表与表缺乏有效的连接。多数情况下,表与表的连接是主键和外键的连接。但是当出现错误或需求变更时,表与表的连接断开或丢失导致程序无法运行,项目组把表与表的连接用显示连接或隐式链接防止表的删除或添加导致数据库的查询降低,减少客户的体验;表冗余或表内容冗余,例如水电费的单价和费用,各种车辆表格统计;低效率的SQL语句同样降低数据库的性能,例如多个项目表用AND连接:

SELECTHFlexibleFee.ChargeItemName,HFlexibleFee.Amount, dMember.MembNo,HFlexibleFee.ReceivableTime,Member.MembName,HFlexibleFee.HFlexibleFeeGUID,

IndustryType.IndustryTypeName,HFlexibleFee.IfPaid,Member.TransIDCardNo

FROMHFlexibleFee,Member,IndustryType

WhereHFlexibleFee.MembGUID=Member.MembGUIDAND

Member.IndustryTypeNo=IndustryType.IndustryTypeNo

另一个方面,数据库的配置参数也是数据库性能问题的表现,数据库的大小会对数据库的缓存等造成负载,造成页面响应缓慢、网页找不到等现象。

代码的书写和逻辑也是影响软件性能的方面。软件逻辑的好坏关系到处理器处理的速度,同样的list语句,第一个list.addAll(queryObject.list())方法被调用,与第二个Lista=queryObject.list()方法被调用,把第一个list直接赋值在前台显示会出现错误但第二个list与第一个list一样赋值就不会出现错误。关于不同的语言计算机处理的速度各不相同。一般情况,除二进制语言,汇编语言是我们常用语言但也随时间的变化退出时代的舞台;C或C#是我们常用的语言,计算机对它们的处理速度远远高于其他的编程语言。

性能测试结果表明系统存在严重的性能问题。响应时间迟缓,内存占用过多,不能支持大量的数据请求,在大量用户并发访问的情况下系统崩溃。应该注意每一行代码的效率,所谓“积少成多,滴水穿石”,一些看似细小的问题可以经过多次的执行累积成一个大问题。就是一个量变到质变的过程。

5 结束语

通过性能测试,软件测试的目的就是发现各种缺陷,测试在正常工作的状态下工作量非常大,实现起来非常困难。从性能测试软件的脚本发现,软件某模块运行不正常,代码冗余造 成服务器负载运行:在有限的时间内,有限的测试资源下,想证明程序在所有情况下都能正常工作是不可能的。因此自动化性能测试工具并发的、稳定的、最大吞吐量的对已开发的软件进行全面的具体的测试,验证事务响应时间是否满足用户的需求。同时,在测试环境求出最大吞吐量与合适的响应时间,保留对软件的扩展空间而超出正常范围的测试。

参考文献:

[1] 赵斌.软件测试技术经典教程[M]. 2版.北京:科学出版社,2011.

[2] 蓸晋元. LoadRunner在软件性能测试中的应用[J].电脑开发与应用,2008,21(5):36-37.

[3] 戴晓婧,张宁.基于loadrunner数据分析平台性能测试及优化[J].计算技术与发展,2013(7):202-206.

[4] 陈绍英,刘建华,金成姬.Loadrunner性能测试实战[M]. 北京: 电子工业出版社, 2007.