LoadRunner性能测试基本步骤_11_loadrunner-2021性能测试实战教程-程序员宅基地

技术标签: 压力测试  自动化  测试工具  职场和发展  

 

前言

本文旨在指导初学者使用LoadRunner进行基础的性能测试。
我们在接到一个性能测试任务的时候,需要从以下几点考虑:我们的测试对象是什么,测试要求是什么,测试环境怎么部署的,业务规模如何,哪些业务点是客户最关注的等等,下面将从性能测试启动开始讲解基本的测试流程。

1、测试脚本录制

在使用loadrunner工具前,需确定哪些业务需要使用该工具进行测试,不需要的时候坚决不用,不要认为这个工具万能。以本次测试中的综合查询(预付费综合业务信息查询)为例进行讲解。
 

1.1录制前准备工作

在录制脚本前需检查压测环境的整体功能是否正确,待测部分的功能是否正确,只有确保功能正确后才可进行压测。如本次测试,可先验证50环境是否正常,CICS服务器(49)是否正常,/var/cics_regions目录的使用率是否过高等等,一切确定OK后,开始验证功能,这些都保证没有问题后,检查一下测试工具loadrunner是否正常使用,可简单的点点用用,确保工具OK。

1.2录制及调试脚本

在准备工作OK后,进行脚本的录制,具体过程如下:

1、打开“开始->程序->Mercury LoadRunner->Mercury LoadRunner”出现下图

在这里插入图片描述

 2、点击“Create/Edir Scripts”,出现下图,如果没有出现,则可在“File”下选择New新建。

在这里插入图片描述

3、出现这个界面后,选择Web(HTTP/HTML)协议,我们测试的是B/S模式,采用的是Web协议。选择后,点【OK】按钮。出现下图:

在这里插入图片描述

 4、点击界面中的Start Record,这个表示开始录制脚本,点这个按钮后,出现下图:

在这里插入图片描述

 

图中的URL输入待测的网址,如本次测试网址:http://10.243.211.50/boss/loginauthservlet
在Record into Action中选择vuser_init,把登录部分放在vuser_init中,vuser_init与vuser_end在测试过程中仅执行一次,这里解释一下,Action的作用是讲测试功能主体放在里面执行,举例,假如做产品转换,我们讲登陆的部分放在vuser_init中, 具体业务操作放在Action中,退出部分放在vuser_end。这样,我们将压力集中在业务操作上,而不是登陆退出上。同时,可以创建多个Action,将业务操作分成多个部分,比如用户鉴权放在Confirm中,将选择产品放在Select_Prod中,将业务分开放在多个Action的好处是可以统计这个操作的处理时间,处理速度等,便于定位问题。

Action的增加、修改、删除:Action可以在录制前增加,具体方法是选中界面左边的
在这里插入图片描述

部分,然后点右键,可以看到有增加Action的按钮(Create New Action),也可进行删除、重命名。在测试前可以根据需要将业务分为几个操作部分,建立对应的Action,名称最好能清晰操作部分的功能。录制脚本的时候,可以将对应的操作放在对应的Action中。

这里我们假设综合查询需要以下几个步骤:

第一、登陆

第二、进入菜单

第三、输入测试号码、提交查询

则可设计Action为这几个:vuser_init(这个默认有)、IntoMenu、SubQue

5、设置好后,点【OK】,进行录制,在录制前,如果已经打开待测页面的话,建议关闭该页面。点【OK】后,这时会出现待测页面,如http://10.243.211.50/boss/loginauthservlet,同时会出现

在这里插入图片描述

 ,这表示现在已经开始录制,可根据需要将业务放在一个Action中,也可以分成多个,放在多个Action中,具体方法是在进行下一个业务操作前,点上图中的,选择对应的Action,如果事先没有创建Action的话,则可点击
在这里插入图片描述

增加新的Action。

在页面中输入用户名后,登陆到系统,待页面都加载完毕后,将vuser_init改为IntoMenu,点击相应的菜单,如查询统计 -> 营业受理查询 -> 预付费查询 -> 预付费综合业务信息查询,页面加载完毕后,将IntoMenu改为SubQue,在“服务号码:”中输入号码13539300000(测试号码),点击【查询】,待页面返回查询结果后,将SubQue改为vuser_end,退出系统。

注:页面加载完毕可以参考网页左下角有个信息提示“完毕”。

所有操作完成后,点击

在这里插入图片描述

 

中停止按钮


,停止录制,页面将自动关闭,返回到loadrunner录制界面,将在界面中显示录制脚本代码,保存录制的脚本。

6、调试代码并进行参数化

录制后的代码需要进行调试才可用于压测,调试的办法就是进行回放操作,如果回放过程无错误,运行结果也正确的话,则可用于压测。具体调试步骤如下:

点击界面中的,进行单次运行调试,运行后,会弹出运行预览的一个窗口,可以看到每一个Action的执行过程,运行结束后,会出现一个结果报告,如果有错误,会在报告中以红色叉标志显示出来,同时在Execution log中也会打出错误信息,可以根据这些错误信息进行调试。如果无错误,则可进行插入事务、参数化设置等其他操作。现假设调试无错误,进行参数化设置。

在测试过程中,有可能需要不同的测试号码,如果产品转换,首次激活等,如果有同样的号码将导致测试失败,因为相同的号码不能做同样的业务操作多次,所以需要大量不同的测试号码,这个就需要用到参数化设置。我们在编写测试方案的时候,已经得出要准备多少测试号码,在测试工作准备的时候,已经准备好测试号码,那么可以利用这些准备的号码进行参数化设置。参数化设置的意思就是将需要用其他数据代替的地方设置为一个参数,在运行时读到这个参数,就使用其他的值代替,在这个例子中,我们需要设置参数的地方是服务号码。这样,我们需要先创建一个参数,步骤如下:

先准备好号码,可在数据中导出,存放在txt文本中,格式为:测试号码,一行一个号码,最后一行要为行,如果文件名为test_num.txt

a、点击界面中

在这里插入图片描述

 ,出现下面界面

在这里插入图片描述

 

在这个界面中,点击左边的New,创建一个新的参数,在界面的右边,Parameter type选择File,File path选择存放号码的txt文件路径,选定文件后,会在下面的表格中列出测试号码,我们在Select next row中选择Unique,这个表示整个测试过程仅使用唯一的号码,保证号码不重复,这样就要号码资源足够多,同时测试时间也需要控制好,否则会报错。

创建好参数后,返回到刚才录制的脚本中,找到对应的Action,如SubQue中服务号码字段,选择该号码,右键选择“Replace with a parameter”,在Parameter name的下拉列表中选择需要替换的参数,选定后点击OK。

设置OK后,可进行调试,如无问题,则可以进行场景的设置。这里有个注意点要说明一下,参数化也可以直接在脚本中选中需替换的地方,点右键,选择“Replace with a parameter”,改更Properties进行设置,但这样做经常出问题,不容易调试,不建议这样做。

2、设计测试场景

在脚本录制完成,调试通过后,可以进行测试场景的设计。具体步骤如下:

1、打开“开始->程序->Mercury LoadRunner->Mercury LoadRunner”出现下图

在这里插入图片描述

 2、点击图中的Run Load Tests,出现下图界面

在这里插入图片描述

 

在新建场景的窗口,选择一种场景类型。下面对三种类型进行简单的说明。

 Manual Scenario:该项要完全手动的设置场景。

 Manual Scenario with Percentage Mode:该项只有在“Manual Scenario”选中
的情况下才能选择。选择该项后,在场景中我们需要定义要使用的虚拟用户的总数,
Load Generator machine 机器集,然后我们为每一个脚本分配要运行的虚拟用户的
百分比。

2 Goal—Oriented Scenario: 在测试计划中,一般都包括性能测试要达到的目标。
选择该项后,LoadRunner 基于这个目标,自动为你创建一个场景。在场景中,我
们只要定义好我们的目标即可。

3、在上图中出现的Available scripts,选择要进行场景设计的脚本,若没有出现需要对应的脚本,可点击Browse查找后添加进来,选择好脚本后,点Add,则可加入到右边的窗口中,然后点【OK】,出现下图
在这里插入图片描述

 4、上图中的ScenarioGroups,显示的是脚本的路径与并发数个数,根据测试方案中的并发数可更改此处的并发数,在上图中点击Edit Schedule,出现下图

在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

 举个例子,假如我们设计的场景是每15秒增加2个,所有并发数增加完后持续运行5分钟,5分钟运行结束后,每30秒减少5个并发,则上面三张图的设置就行了,注意那个Initialize…必须勾选上。

5、再点击页面右下角的“Run-time Settings”,出现下图

在这里插入图片描述

 

选择图中的Think Time,在右边选择Replay think time,再勾选中Limit think time to:1 seconds,表示即使脚本think time时间可能超过1秒,也用1秒替换,可以自行调整这个时间。这样做的目的是在测试过程中使得每个业务操作里加上think time,表示用户在操作的时候,有个时间延迟,真实的模拟用户的操作,比如用户在做产品转换的时候,可能在选择产品的时候,有个停顿思考的时间,这样loadrunner会记录下来。如果选择Ignore think time,这样对服务器造成的压力是最大的,在运行时,会没有停顿的,持续对服务器加压,不太符合实际使用情况。
设置好Think Time后,选择Miscellaneous,在出现的窗口中勾中Continue on error,表示在遇到错误的时候,继续执行场景,直到场景运行结束。

6、一切设置OK后,点击

在这里插入图片描述

,运行测试场景,如下图 

在这里插入图片描述

在图中的左边可以查看并发用户数的运行情况,右边可以查看通过的事务数、失败的事务等,如果运行过程中有错误出现,则可以点击Errors右边的放大镜,查看详细错误信息。窗口下面是各种监控窗口,Running Vusers展示的是目前并发用户数的运行情况,Trans Response Time表示的是事务的响应时间,即每个事务处理的时间是多少秒。

3、测试结果分析

场景执行结束后,可以使用loadrunner自带的分析工具进行结果分析,这里我们主要考察两个地方,第一是平均事务响应时间Average Transaction Response Time,第二是并发数运行情况Running Vusers,这两个显示了场景运行过程中并发数的执行情况与每笔事务的处理时间。还有其他几个考察点,做简要解释。
注:事务数概念解释:事务就是脚本中定义的每个Action。
具体分析步骤是先打开“开始->程序->Mercury LoadRunner->Mercury LoadRunner”出现下图
在这里插入图片描述

 点击Analyze Load Tests,出现下图

在这里插入图片描述

 在图中的菜单栏中选择打开,找到要分析的场景执行结果,点【打开】即可,还可以直接在场景运行结束后,点击Controller菜单栏的

在这里插入图片描述

,直接收集场景运行结果进行分析。

打开场景执行结果后的界面如下:

 在这里插入图片描述

 

右边是图形的显示,下面是指标对应的采集数据。接下来将重点选择几个指标做解释。

3.1 并发数执行情况(Running Vusers)

并发数执行情况反映了在场景执行过程中各个并发数的运行情况,成功了多少,失败了多少,是否按照既定的场景执行计划运行,是否达到预期的执行效果,如果在某个时间,执行失败了,或者存在异常,那么并发数的图表将是波动,可以从图中直观的看出来,同样根据场景中Error的信息,定位在何时出现了错误,此时执行的并发数是多少。并发数的图表如下:
在这里插入图片描述

3.2事务通过数(Throughput)

事务通过数的意思是每个特定时间间隔内通过的事务数,如果随着场景执行时间的推延,通过事务数曲线应该是平缓的,如果突然上升,则可能是服务不稳定,或者网络因素导致的,如果持续下降,则表示服务的处理能力在下降,此时可以查看服务器段是否有进程堵塞,或者服务器的连接数不够,也可能是网络带宽不够。事务通过数的图表如下
在这里插入图片描述

 

3.3平均事务响应时间(Average Transaction Response Time)

平均事务响应时间在整个测试过程中是一个很重要的参考指标,他能清晰的反映出场景执行过程中,每个事务的执行时长,整个业务中哪个操作最耗时等等。场景执行结束后,可以根据这个图表分析出在一定响应时间要求下,系统可支持的并发数,假如我们要求在查询的时候要求这个返回结果的时候不超过5秒,那么可以在场景中找到对应的SubQue事务在处理时间为5秒左右的时间点,再从Running Vuser图中找到对应的时间点,查看对应的并发用户数。同样,在整个执行过程中,当并发数达到一定数值后,平均事务响应时间曲线应该是平缓的,如果出现突然升高或者降低的情况,则表示系统存在异常,这样我们可以找到这个时间点去查看服务器端的运行日志,查找原因。平均事务响应时间的图表如下:

在这里插入图片描述

 

3.4服务器资源分析

服务器资源监控利用的是nmon工具,在得出分析结果后,可以查看对应的图表进行分析。

4、总结

整个测试过程是有序的,需要事先计划好,在录制脚本,调试脚本的时候需要注意的是要单个单个号码的试,不可一次把号码都跑完,这样不经济。这里仅仅介绍了简单的测试流程,更深刻更精妙的功能未能列出,请自行学习。本文档重点介绍的LoadRunner的使用。
在这里插入图片描述

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你,评论区扣666免费领取这份资料

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_48811377/article/details/130561629

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签