基于Web性能测试的贴吧网站自动化测试研究
2018-01-05黄小林申珅
黄小林+申珅
摘 要:本文使用LoadRunner工具对贴吧网站进行Web性能测试。贴吧是为学生们提供一个互动的空间。在开发和使用过程中,不可避免地会出现用户访问规模大、负载重等性能方面的问题。因此,可以采用LoadRunner专业工具,进行性能测试,检测这些问题。首先,通过对项目分析,设计完善的测试方案;然后,录制相关脚本,对脚本进行优化处理,并模拟多用户并发,设计场景;最后,对测试用例进行系统化的整理,生成测试分析报告。本文为研究采用LoadRunner工具对Web网站进行自动化测试提供一种技术方案。
关键词:Web;性能测试;自动化测试;LoadRunner
中图分类号:TP311 文献标识码:A
Abstract:In this paper,LoadRunner tools are applied to implement web performance testing on post bars.Post bars provide students with interactive space.In the development and application of post bars,some performance problems are unavoidable,such as the excessive load caused by too many visitors.Therefore,professional LoadRunner tools can be applied to implement performance testing and detect the problems.Firstly,the paper designs a thorough test scheme based on the project analysis.Then,the paper records and optimizes relevant scripts,simulates multi-user concurrency,and designs the scene.Finally,the test cases are systematically organized to generate test analysis reports.This paper offers a technical solution to automated website testing with LoadRunner tools.
Keywords:web;performance testing;automated testing;LoadRunner
1 引言(Introduction)
本測试主要针对徐州工程学院贴吧进行性能方面的测试,目的是检测网站功能和性能上的缺陷,完善该平台。性能测试是指在软件开发后期,为了证实该软件的可用性、稳定性和可靠性,通过增加变换负载对软件系统进行的压力测试,主要目的是检测出软件系统最大承受的负载量是否能够达到需求的标准[1]。
测试方法为基于LoadRunner的负载测试。测试目标为检测出软件系统能承受的最大负载和检测性能是否符合基本客户要求。通过不断改变负载环境来全面检测系统性能,避免性能盲点,以及一台计算机运行脚本、多台客户机进行重复,并给出这种方法在Web应用性能测试实践中的一个具体应用[2]。
LoadRunner是当下测试工作中较为常用的负载测试工具[3]。该软件分为三个部分,先由测试者根据需求自行录制对应的脚本,再通过设置负载环境对脚本进行用户模拟操作,最后使用自动化分析插件对运行结果进行分析,生成线形图。
2 LoadRunner功能(LoadRunner features)
2.1 LoadRunner术语
(1)场景:场景文件是根据性能需求来定义每次测试期间通过的事务。
(2)Vuser:虚拟用户处于场景中,LoadRunner用虚拟用户来代替真实用户,模仿真实用户的操作来使用应用系统。一个场景可以包含成百上千个Vuser。
(3)脚本:脚本描述Vuser在场景中所执行的动作。
(4)事务:要检测服务器的性能,首先需要定义事务。事务表示要评测的终端用户业务流程。
2.2 创建虚拟用户
通过使用Virtual User Generator组件[4],录制相关用户脚本。首先模拟真实用户操作,录制相关模块的脚本,待录制完毕,对脚本进行优化处理。然后将其转换成测试脚本。该组件通过模拟真实环境的业务操作来对网站进行性能测试,让很多虚拟用户模拟真实用户,并发操作,对服务器进行负载。利用这些虚拟用户,测试人员能够在多个服务器上并发访问网站,从而对服务器生成负载。LoadRunner测试工具能有效地减少测试过程中的资源耗费。在通过Virtual User Generator组件创建并优化测试脚本后,需要对相关参数进行设置,可以通过模拟多种实际情况来测试网站性能。
2.3 创建真实的负载
在建立虚拟用户之后,测试人员需要根据测试需要来确定虚拟用户的数量,从而更好地测试网站性能[5]。利用LoadRunner测试工具中的Controller组件,能够快速设置测试场景,并且确定虚拟用户数,并明确测试方案。Controller组件中有一个Rendezvous功能,能够有效提供给测试人员一个互动的环境,让负载循环操作,并且能够让测试人员更好地管理负载测试方案。同时,测试人员还可以设定虚拟用户访问网站的时间对网站设定不同的负载。在一定程度上,让测试过程更加智能化。Controller组件还可以设定虚拟用户同时执行,从而达到模拟峰值数据的目的。endprint
2.4 定位性能问题
LoadRunner测试工具中,有一个实时监测的功能。在运行测试过程中,测试人员可以通过折线图来观察系统每个时间段的运行情况。这样,测试人员可以及时发现系统运行过程中性能的不足,能够实时定位性能的弱点。通过LoadRunner中的ContentCheck TM组件,还能有效判断哪个模块的哪个功能是否正常运行。ContentCheck组件在虚拟用户运行过程中,能够判断是否有错误数据传出,能够有效地帮助测试人员查看系统性能情况。
2.5 测试报告
当测试结束以后,LoadRunner会自动收集并汇总,生成测试结果数据,提供高级的分析报告,测试人员可通过此工具及时发现性能问题并进行实时反馈。使用分析工具,可以很快地查找到缺陷所在,并及时将错误内容和需要改进的地方做出反馈。
通过Controller对目标进行负载测试之后,进入Analysis进行性能测试分析,拟写测试报告。完整的测试报告应当包含几个部分[6]:
(1)摘要报告:查看平均时间、最大时间、前一次时间等各项数据。
(2)Vuser日志:虚拟用户在运行的过程中所产生的运行明细。
(3)测试状态(Controller中查看):查看虚拟用户在场景中的运行情况。
(4)正在运行的Vuser:在指定的时间内Vuser运行的数量。
(5)每秒点击次数线形图:根据线形图观察用户对服务器发出的请求量。
(6)吞吐量:单位时间内传输数据的数量(以比特、字节、分组等测量)。
(7)事务概要:查看在特定数量的并发用户运行时,能够通过的事务数量和不能通过的事务数量。
(8)事务响应时间:在特定时间内,随着并发用户数量的变化而变化的事务响应所需的时间。
(9)CPU和内存使用情况:随着时间和并发用户数量的变动,CPU占用百分比和内存占用量产生的变化。
3 测试项目(Project undertesting)
黑盒测试主要采用自动化测试的方法。选用LoadRunner这个测试工具,对贴吧重要的功能进行性能测试,找出运行缺陷,从而拟写完善的测试报告。
3.1 测试内容
测试用户注册、用户登录、我的帖子和我的设置这四个大模块,其中我的帖子测试中包括四个子功能的测试:发帖、删帖、评论和回复;我的设置测试中也包括四個子功能的测试:签到、关注、刷新和分享。根据这些内容编写测试用例,对每个功能进行测试分析,从而发现缺陷,完善功能。
3.2 测试思路
根据对徐州工程学院百度贴吧实际运用中出现的特点,分析出徐州工程学院贴吧在实际运用中将会出现以下特点:
(1)VIP用户模块使用率较低,普通用户使用率很高。
(2)主任务为登录、发帖、页面的切换。
(3)负载期间,将会有大量用户登录,相应模块的压力增强。
(4)结合本校和百度贴吧的普及率考虑,特定时间段预计登录人数约为10到500人,相应的测试方案也会在此基础上形成。
3.3 测试方案设计
网站主要操作为用户登录、用户注册和游客浏览等功能,可以确定主任务为用户注册、用户登录、发帖评论和游客页面切换。
基本流程为(1)进入页面首页,点击注册按钮。(2)进入用户注册页面,输入用户注册的账号和密码,点击发送验证码,输入验证码。(3)注册成功,跳转到贴吧首页并且自动登录。(4)点击发帖按钮,在标题和正文文本框中输入内容,点击“我要发表”发表成功。(5)点击进入帖子页面。点击“我也说一句”按钮,输入内容,点击发表。(6)点击删除按钮,确认删除。(7)退出登录,返回徐州工程学院贴吧首页。
根据测试思路,本次测试将创建Vuser脚本去模拟用户在操作时的不同情况,根据测试目标去定义虚拟用户并发形式、并发数量,设置合适的负载,并且在录制过程中将脚本完善、具体化,用集合点来模拟高峰期的使用情况。
3.4 测试用例设计
测试用例Ⅰ为10Vuser低负载发帖操作,测试用例Ⅱ为50Vuser中负载发帖操作,测试用例Ⅲ为500Vuser高负载发帖操作,测试用例Ⅳ为10Vuser低负载注册登录操作,测试用例Ⅴ为50Vuser中负载注册登录操作,测试用例Ⅵ为500Vuser高负载注册登录操作。根据本次测试的需求情况,从所有用例中筛选出6个较为典型的测试用例。
以测试用例Ⅲ为例,测试场景描述:总共登录500个用户,登录模式为每5秒100个用户并发操作。(1)用户在用户发帖模块中活动,过程包括:输入标题与正文内容,界面输出相应数据,此过程重复两次。(2)用户点击“我要发表”链接,提交并提示发表成功。(3)用户进行界面切换,顺序为:主页面、帖子界面。(4)返回用户主页并退出。
4 测试报告(Report)
4.1 性能概要
以测试用例Ⅲ为例,Analysis对脚本运行的结果的摘要报告如图1所示。
4.2 图形方式查看性能
(1)正在运行Vuser
运行开始后,虚拟用户的数量逐步增加,之后逐步递减。并发线形图如图2所示。
(2)吞吐量
吞吐量指的是系统在负载测试中单位时间内通过的事务数量即交换的数据量。如图3所示为测试用例Ⅲ吞吐量的情况,网络资源呈平稳趋势。
(3)平均事务响应时间
图4中曲线表示action,通过观察可以看出,随着虚拟用户的增加,action没有呈现稳定趋势,而且突然急剧拉长呈快速上升和下降趋势。因此,当并发用户为500时,服务器无法承受这样的负载,将会崩溃。endprint
(4)每秒点击次数
每秒点击次数表示用户每秒向Web服务器发出的请求次数,服务器承受的压力与点击次数成正比,通过查看点击对服务器产生的影响来进行性能分析。运行的初期,纵坐标有很大的波动,当虚拟用户开始减少时,纵坐标趋向稳定,结合running vuser进行观察,当虚拟用户在50左右时,性能相对达到比较稳定的阶段。
(5)事务概要
图5中,最高柱形图为未通过事务,最低柱形图为通过的事务,最后两个为被终止的事务。可以看出,大部分事务都没有通过,因此当虚拟用户为500时,性能很不稳定,服务器几近崩溃,性能达到一个瓶颈。虚拟用户为10时,运行良好,不能说明性能有问题。
5 结论(Conclusion)
通过设计测试用例,使用LoadRunner录制脚本,通过Controller模拟多用户并发测试场景,调试,收集测试数据,再由Analysis对测试的结果进行分析探讨,对贴吧性能实现了初步的检测并最终生成测试报告。测试结果显示的是贴吧服务器软件各事务的平均响应时间与负载的关系;当虚拟用户并发量达到60的时候,通过率极佳,比重约为100%。在所有通过的事务之中,登录事务所占比重最大,这个决定因素主要在于事务的性质;在高并发高负载的情况下,事务响应时间和每秒点击次数会发生骤升,也就是通过这样的情况来检测系统的瓶颈所在;当并发用户达到300时,服务器会直接面临崩溃。
参考文献(References)
[1] Bozic J,Garn B,Kapsalis I,et al.Attack Pattern-Based Combinatorial Testing with Constraints for Web Security Testing[C].IEEE International Conference on Software Quality,Reliability and Security.IEEE,2015:207-212.
[2] Novak S,Stefanovi D,Popovi M,et al.Web based system for automatic testing[C].IEEE International Workshop on Consumer Electronics.IEEE, 2017:30-31.
[3] Abbas R,Sultan Z,Shahid N.Comparative Analysis of Automated Load Testing Tools:Apache JMeter,Microsoft Visual Studio (TFS),LoadRunner,Siege[C].Internation Conference on Communication Technologies Comtech,2017:56-61.
[4] 陳英,孙忠林.基于LoadRunner的Web系统性能测试与优化[J].软件导刊,2017,16(9):26-27.
[5] 宋巍,张春柳,邬斌亮.Web系统性能测试研究与实践[J].计算机应用与软件, 2015(3):4-6.
[6] 魏娜娣,李文斌,裴军霞.软件性能测试[M].北京:清华大学出版社,2012:45-72.
作者简介:
黄小林(1975-),男,硕士,实验师.研究领域:软件测试,软件开发.
申 珅(1980-),女,硕士,讲师.研究领域:软件测试,智能优化.endprint