基于LoadRunner网络教学平台的Web自动化测试与分析

2018-01-08 22:55黄小林申珅
电脑知识与技术 2017年36期
关键词:自动化测试性能测试脚本

黄小林 申珅

摘要:该文使用LoadRunner对徐州工程学院网络教学平台,进行初步的性能测试。首先,对项目分析,设计完善测试方案;然后录制相关脚本,并对脚本进行相应的优化处理,模拟多用户并发,设计场景,对场景进行调试,对测试用例进行系统化整理以及细致的分析;最后反馈缺陷资料和测试分析报告。该文主要研究如何设计和实现软件自动化测试技术。

关键词:LoadRunner;自动化测试;脚本;性能测试;Web

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)36-0242-03

Abstract: Online teaching platform of Xuzhou Institute of Technology is tested a preliminary performance test using LoadRunne in the paper. Firstly, the test program are designed and improved by analyzing project. Then we record the relevant scrip and optimize the script, simulate multi-user concurrency, design the scene, and debug the scene, furthermore we organize the test cases systematically and analyze meticulously. Finally, the information of feedback defect and test analysis report are obtained.

Key words: automated testing; Script; multi-user concurrency; performance testing; Web

随着Web应用技术的发展,用户对Web服务应用的质量要求更高[1]。现代软件规模的大型化,软件结构的复杂化增加了软件测试的难度。因此,有效地保证软件的质量,需要将软件开发和软件测试相结合,并且加强自动化测试在整个测试领域的应用。

与以往的软件相比,网站数据量大,业务量大,用途广泛等特点。同时,Web 服务器可能在同一时间内会接受大量来自不同地域的数据请求,一旦Web 服务器崩溃,会造成巨大的损失,这就对网站的稳定性提出了要求[2]。本文针对Web网站的性能测试进行研究,以“徐州工程学院网络教学平台”为例,用LoadRunner 测试工具,对其进行外部性能压力测试[4]。

1 性能测试工具

LoadRunner 是适用于各种体系架构,可以预测系统行为,并优化系统性能。LoadRunner 的测试对象是Web服务整个系统,它通过录制脚本来模拟实际用户的操作,大量的虚拟用户模拟高并发操作,在操作的同时实时监测系统性能,更快的发现问题[3]。

事务:事务可以说是系统的业务流程,判断系统的性能,需要去定义多个事务,去判断各个业务流程的性能使用情况。场景:场景就是每次测试时发生的事件,由多个事务组成,可以根据性能要求去定义不同的场景。Vuser:虚拟用户Vuser 去替代真实用户,Vuser 模拟真实用户的操作,去使用系统,更好地录制脚本。一个复杂的场景,可能会包含几十个甚至上千个 Vuser。Vuser脚本:录制的脚本其实就是模拟真实用户在实际情况中的操作,就是虚拟用户在场景中所需要去执行的操作。

2 项目分析

测试对象是网络教学平台,是学生和老师互动的平台,拓展和补充教学资源。该网站的主要功能是:通过课程名称、授课教师、课程类型和所属院系去查询课程,从而让学生更全面的了解这些课程,进入课程,学生之间、学生和老师之间能够互动,发表各自对于本课程的想法。

2.1 项目测试思路

对于网站进行压力测试的时,首先了解网站的基本功能点,测试服务器的承受能力,再对其施加高強度。压力测试的目的就是为了判断一个操作是否可以正常完成,并且在执行过程中是否会出现错误。压力测试时,网站是否能正常运行。压力测试必须满足以下四个关键条件。

重复:测试工作就是一遍又一遍根据某个功能去反复执行某些操作。并发:并发就是多个用户同时进行操作的现象。引入并发,意味着多线程,那么一个线程中的内容就非常有可能被其他线程中断,所以,错误很难被发现,只有在一个指令集以特定的顺序执行时才会被发现。量级:压力测试应该考虑软件系统重每个操作的负载量。随机变化:所有的压力测试都会存在一些随机性。通过改变操作的时间间隔、重复次数、或者是改变事务的顺序,进行不同的压力测试。

2.2 项目测试特点

1) 主要任务为用户登录,用户申请以及课程搜索。2)负载期内,将有大量用户同时注册和登录,相应模块(登录,搜索课程,页面切换以及选课申请)的工作强度也将增加。3)结合学生数量,以及对于网络教学平台的使用情况来说,某些特殊时段登录/活动人数预计为10-100人。

2.3 项目测试用例设计

本次测试所用到的 6 个测试用例。具体描述:测试用例I为用户并发注册测试;测试用例II为用户随机注册测试;测试用例III、 IV、 V、 VI为服务器瓶颈测试。

3 项目性能测试的实现

3.1 创建用户脚本

本项目测试对象是Web 网站,脚本录制时选择Web(HTTP/HTML)协议[5]。在URL Address 中填写徐州工程学院网络教学平台的网址。用户登录,在脚本录制界面,设置相关参数,在登录时,输入用户名和密码,录制完成后,VuGen 组件会自动生成脚本。接着,如需查看录制时相关信息,点击“Recording Log”按钮就可以查看脚本录制日志,最后,如果脚本录制完成,对其进行回放,回放完成,点击“Replay Log”按钮,可以查看脚本回放日志[6,7]。endprint

3.2 完善测试脚本

当录制完用户脚本之后,需要对脚本进行完善,保证其使用效果。完善测试脚本包括事务设置、集合点和脚本检验这三种[8]。

1) 事務设置

LoadRunner能够将各个事务区分开,分别标记各个事务的性能状况,从事务的开始点计时,直到事务的结束点,计时结束。点击“事务按钮”进入脚本编写区,在事务开始点,点击“事务开始”按钮插入事务, “Ir_start_transaction(“login”)”为事务开始的代码,在选择事务结束点,点击“事务结束”按钮,“Ir_end_transaction(“login”,LR_AUTO)”为事务结束的代码。

以测试用例III的用户登录为例子,插入事务的代码。这个事务起点为徐州工程学院网络教学平台首页,结束点为我的课程页面,事务运行结束即为登录成功。

2) 集合点

LoadRunner 可以通过插入集合点的方式,来方便用户区分功能点,当运行到这个集合点时,需要提交数据,控制器需要对这些数据进行检查,判断其是否达到最初设置的条件。多个集合点时,需要达到一定的用户数量,才会让所有用户同时提交数据。

在测试用例I、 II、 III、 IV中并没有加入集合点这个功能,而是通过事务之间的时间间隔去取代的。在测试用例V和测试用例VI中,为了保障测试时的负载情况,使用了集合点这一功能,对于先到达集合点的用户,让其停留等候,只有在所有用户都完成了相关任务并且到达集合点,才在控制器的命令下所有用户同时实现功能。在集合点按钮界面,点击“Insert”下拉菜单,选择“Rendezvous”按钮,插入集合点,在脚本编写区生成插入集合点的代码,为了保证负载情况,其中“Lr_rendezvous(“SubmitQueryData”)”为集合点代码。

3) 脚本检验

对脚本进行优化处理之后,脚本就可以初步运行了。运行之后,VuGen会先对脚本进行编译,判断脚本是否存在语法错误。根据运行设置,开始从Generator中调试相关的脚本,脚本会根据Runtime Setting中的设置开始运行,并输出相关日志。当脚本运行完成,如果没有错误,而且从关键日志看,所有参数替换和动态关联都成功,那么就表示脚本已经完全通过,可以使用。

3.3 测试方案执行

1) 创建负载测试场景

本次创建测试方案为手动方案,以测试用例 VI 为例,阐述如何创建负载测试场景,模拟 100 个用户依次登录网络教学平台,并且在一定时间内高强度访问服务器。首先, 我们需要将 Load Generator 与 Controller 建立连接,在负载生成器中,可以看出目前使用的负载生成器为 local host,其状态为 Down,平台为 Windows7。点击“Connect”按钮,将Load Generator组件与Controller 组件建立连接,负载生成器状态就会变成 Ready。然后,模拟真实环境,通过配置加压的方式, LoadRunner 测试工具让用户逐步登录并且逐步退出系统。同时,确定测试场景持续的时间和场景是以何种方式停止,可以更加准确地反映实际情况。

2) 运行负载测试

负载测试场景创建完毕,可以开始运行。根据上述的情况,将测试用例III 设置为设置 10 个Vuser,每10秒往上递增1个 Vuser,持续一分钟,按每 10 秒停止 1 个 Vuser,设置完负载参数,可以开始运行负载测试。如图1所示为负载场景运行视图,可以看出负载场景在运行期间的运行状况,根据每个窗格可以查看不同的信息。

在场景运行结束,场景状态窗格会显示运行结果。如果运行中出现错误,在场景状态窗格,显示错误事务数和失败的数量。从场景状态,可以看出,红色的区域为报错的地方。

本例Login 这个事务,点击“通过的事务”按钮,通过的数量为 2396。点击“失败的事务”按钮,失败的数量为 4。点击“错误消息”按钮,查看场景运行过程中出现的一些错误。点击“Details”按钮,可以查看错误的详细信息。

4 测试报告

LoadRunner 测试工具将使用Analysis组件对运行结果进行分析处理, 主要生成各种报告图。在测试用例I、 II、 III、 IV、 V和VI中,测试结束,都会生成摘要报告。如图2所示为测试用例 III 的 Analysis 摘要报告,上半部分可以看出统计信息摘要部分,显示本次测试最大并发数为10,总吞吐量为249498501字节,平均每秒的吞吐量是1030985字节,总的请求数为88454,平均每秒的请求为365.512。从下半部分可以看出,事务摘要显示的是, login这个事务的最小响应时间为0.037s, 最大响应时间为3.343s, 平均响应时间为0.132s, 标准响应时间为0.148s,90%响应时间为0.166s,其中通过的events为3150个,未通过的为0个。测试间的login事务的90%的响应时间为0.166s, 而平均响应时间为0.132s,90%的响应时间,略大于平均响应时间,这说明,只有10个用户的时候,该网络教学平台的响应时间比较短,性能较好。

如图3 所示为网络响应摘要所示,LoadRunner共模拟了88454次请求,与统计信息摘要中的总请求数相同,其中“Http 200”的是88447次。 “Http 302”的是7次, “Http 200”表示服务器成功处理了请求, 并且请求被正确响应, “Http 302”表示服务器成功处理了请求,但是没有返回任何内容。说明在本次过程中,发生的请求大部分都能正确响应,但还是有部分没有得到任何返回内容,但是没有影响到测试结果。

5 结论endprint

通過对网络教学平台这个网站进行分析,对其功能进行初步了解,然后设计出一套完善的测试方案。使用LoadRunner 性能测试工具,通过录制测试脚本的方法, 能够更加真实地模拟多个用户操作,组合出较为真实的用户场景,并且进行相关的调试工作,收集并整理测试数据,对相关数据进行合理的概括与分析,最终生成相关资料和测试报告。

参考文献:

[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] Khan R, Amjad M. Web application's performance testing using HP LoadRunner and CA Wily introscope tools[C]. International Conference on Computing, Communication and Automation. IEEE, 2017.

[4] 布朗.软件测试:原理与实践[M].北京:机械工业出版社,2012:78-131.

[5] 高丽萍. 云环境下自动化测试的研究与实现[D]. 西安:西安工业大学, 2016:20-32.

[6] 郑润萍. 基于LoadRunner的Web软件性能瓶颈分析调优研究与实践[D]. 广州:华南农业大学, 2016:34-41.

[7] 魏娜娣,李文斌,裴军霞.软件性能测试[M].北京:清华大学出版社,2012:45-72.

[8] 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.endprint

猜你喜欢
自动化测试性能测试脚本
酒驾
数据库系统shell脚本应用
快乐假期
浅谈空调控制器自动化测试