张 莹
(河北软件职业技术学院,河北 保定 071002)
在针对B/S结构的信息系统进行性能测试的时候,往往会遇到很多棘手的问题。本文采用的是自动化性能测试工具LoadRunner调用自动化功能测试工具Quick Test Professional脚本的方法实现性能测试,并针对发现的问题进行调优。
测试对象为基于WEB的销售与管理系统,该系统由基础信息模块、采购管理模块、库存管理模块、商品销售模块、查询统计模块、往来管理模块、系统设置模块等部分组成。基于MVC模式,Struts和Hibernate集成的体系结构,数据库使用SQL Server。
性能测试中的场景设计是实施性能测试的基础,是一种用来模拟大量用户操作的技术手段,只有合理地设计测试场景才能获得有价值的测试数据。LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。本次测试指标为:(1)响应时间采用业界2/5/10标准测试;(2)系统资源占用以不超过70%为标准;(3)事务成功率采用一般标准90%。针对本系统实际需求设计场景如下。
业务场景根据系统功能分为单一业务和混合业务两类,其中单一业务场景主要是考虑到单一业务流程而设计的,考察某一业务在各种情况下的网络响应时间、系统资源的占用情况、事务成功率等。混合业务场景主要是为了模拟系统真实生产环境而设计的,考察整个系统在各种客户操作情况下的网络响应时间、系统资源的占用情况、事务成功率等。根据系统需求分析设计本次测试设计脚本,如图1所示(以登陆模块为例)。
使用QTP测试登陆模块基本功能,测试用例设计如下:
输入正确的用户名和密码;
输入正确的用户名,错误的密码;
输入正确的用户名,不输入密码;
输入空的用户名和密码;
输入空的用户名,正确的密码;
输入错误的用户名;
不同账号在同一台机器上登陆;
同一个账号在同一台机器上登陆;
同一个账号在不同机器上登陆;
用户名和密码是否大小写敏感;
用户名和密码是否有长度限制;
用户名和密码是否有类型限制。
(1)链接测试
测试所有连接是否为正确页面;
图1 测试脚本(部分代码)
测试连接页面是否存在;
测试是否有孤立页面。
(2)表单测试
用户提交信息是否完整;
Cookies是否正常工作;
数据库测试(数据一致性错误和输出错误)。
测试结果显示基本功能正常,将输入正确用户名和口令成功登陆后而完成的一次该系统使用的全过程记录成脚本并保存,重复操作相同动作后再保存一份。针对两份脚本使用Windff比较(如图2所示),发现服务器端有动态数据产生,根据提示位置对测试脚本中捕获的数据进行参数化设置。
图2 相同脚本比较
(3)LoadRunner性能测试场景模型(以登录模块为例)见表1。
脚本执行完成后,收集数据(如图3所示)。从图3数据结果可以看出各项事务全部通过(Fail为0),加载全部虚拟用户后,没有产生错误。这表明该系统功能在加压过程中正常,但有些时间数据稍长,查看各项数据迭加图(图4)后发现趋势不稳定。
图4为虚拟用户加载过程中的每秒点击量和平均事务响应时间的一个迭加效果图。从图中可以看出,平均事务响应时间在用户增加到最大数量时有所增加,中间有不稳定现象,说明服务器端有不明原因的问题出现。
表1 场景模型设计
图3 结果分析报告
图4 每秒点击量和平均事务响应时间迭加
查看Windows计数器捕捉到的数据,其中CPU占用率在测试标准70%范围内,内存不存在瓶颈,硬件系统正常。接下来查看页面细分图(见图5),通过比较各个组件的响应时间,发现其中一项页面下载时间过长,手动方式连接测试页面连接速度仍然很慢,可以判断网络成为该系统性能的瓶颈。
整个系统测试完成后,测试结果及建议如下:
(1)登录模块
服务器当前可以处理标准级和负载级虚拟用户并发活动,各项事务均能成功处理,满足需求分析中的要求,完成确认测试。但是在极限级虚拟用户并发时,登录时间过长,平均达到75秒,系统资源超过安全指标,服务器端正常,建议通过提高服务器配置来优化性能。
图5 页面细分(部分组件响应时间)
(2)基础信息模块
基本功能正常,在加压过程中出现类似登录模块现象,建议同上。
(3)查询统计模块
进入查询统计模块后,当虚拟用户数达到负载级后出现网络传输时间过长,系统资源使用超过安全标准,页面访问有出错问题。通过手动测试相应业务,发现时间仍然过长,确定和服务器无关,建议调整网络状况以优化性能。
其他几个模块在此不进行详细分析。本次测试覆盖了系统的全部功能点,发现该系统基本功能正常,不存在明显性能缺陷。但对未来发展考虑不足,系统的扩展性存在问题,建议针对服务器配置以及网络状况进行调整。
随着WEB技术的广泛应用,人们的需求不断提高,系统中的功能也越来越复杂,保证质量成了头等重要的问题。使用混合的WEB性能测试模型测试指标在度量系统准确性、预测有效性和定位系统中故障等方面起到了很好的作用,它能帮助软件在部署到实际环境之前排除可能存在的问题,优化系统的性能,满足客户的需求。
[1]明仲等.一种Web系统性能测试框架及其混合建模过程[J].计算机研究与发展,2010(7).
[2]刘荷花.WEB系统性能测试及工具优化[J].电脑开发与应用,2010(9).
[3]陈小辉.WEB 性能测试技术探讨[J].科技广场,2011(1).
[4]李艳芹.基于web应用系统的性能测试及优化[D].上海:东华大学,2011.