性能测试------LoadRunner的使用
一、什么是LoadRunner
LoadRunner是一款由Micro Focus(以前是Hewlett-Packard或HP公司)开发的性能测试工具。它用于测试和分析系统在负载下的行为和性能。具体来说,LoadRunner可以模拟数千名用户同时访问应用程序,以测量和评估系统的性能表现,从而帮助识别性能瓶颈和系统容量
二、为什么使用LoadRunner
1)LoadRunner有非常强大的录制功能。
2)LoadRunner能模拟各种场景
3)LoadRunner可以产出非常详细的测试报告
【注】如果在做性能测试的时候,发现了软件的缺陷,此次是我们叫这个缺陷叫性能瓶颈
在性能测试的时候,开发修改这些瓶颈,不叫修复BUG也不叫修复瓶颈,而叫性能优化
三、LoadRunner三大组件之间的关系
LoadRunner安装完成之后,会有三个部分:
这三大组件都是干什么的:
他们之间的关系:
四、LoadRunner的使用
了解WebTours这个网站
Web Tours是 loadrunner 自带的一个飞机订票系统网站;是一个常用于LoadRunner和其他性能测试工具的示例应用程序。它通常作为演示和学习的工具,帮助用户了解如何使用这些工具进行性能测试。
如何启动
首先,我们来到LoadRunner的安装目录下,找到 StartServer.bat,双击启动
启动之后,就是这个界面:
如何访问
在浏览器中输入 http://192.168.121.63:1080/WebTours/
就可以访问了
192.168.121.63 是IP地址
1080 是默认的端口号
WebTours 是名字
【注意】这个网址每次打开可能都不一样,记得看一眼
相关配置
端口
用户名、密码
如果要自己添加,新建一个文件,在里面输入密码即可:
脚本录制(Virtual User Generator)
脚本录制使用这个软件(VUG)
创建文件
我们现在是Web项目,所以用这个:
创建好之后,是这个界面:
录制
点击录制之后,会出来这个,并且也会自动打开你要访问的网站,接下来你在该网站上的一切操作都会被记录下来
【注】在录制之前,若要访问WebTours这个网站,一定要先启动那个 .bat文件
点击停止录制后,就会出现这个界面,等他加载好,就算录制完成了
编译
也许有人会问,这写代码不都是他自动录制的吗,怎么还要编译检查一下呢?
上述代码确实是自动生成的,也不会出现错误,而编译是为了我们。在后续的操作中,我们是可以自己再添加一些代码的,比如事务,集合点等,编译是为了这些操作,防止由于疏忽,出现语法错误
运行
编译没有错误之后,我们就可以运行脚本了
执行日志:
脚本加强
为什么要进行脚本加强?
录制好的脚本,使我们一个用户的操作,不能体现出来相关的性能指标。
通过对脚本进行加强,性能测试可以更真实地模拟用户行为,更准确地捕捉动态数据,更全面地覆盖测试场景,并提高脚本的可维护性和稳定性
插入事务
事务(Transaction):为了衡量服务器的性能,我们需要定义事务。比如:我们在脚本中有一个数据 查询操作,为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个事务,这样在运行测试脚 本时,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束 点,计时结束。
表示:
开始事务:lr_start_transaction("事务名字");
结束事务:lr_end_transaction("事务名字", LR_AUTO);
【注】
事务必须成对出现,有开始,有结束,不然会报错
事务处理过程中不能插入其他影响时间的语句,因为最后结果会显示这个事务的时间,若。
事务开始名称和事务结束名称必须相同。
插入事务有三种方式:
①
②在需要插入的位置,右键点击Insert,选择事务
③在这里搜索,然后双击就行了
例子:我们在这里插入事务,看看执行效果
在LoadRunner中,事务的持续时间(Duration)通常 包括了整个事务执行过程中消耗的总时间,而 事务浪费时间(Wasted Time)指的是事务执行过程中不必要的等待时间或资源消耗时间。例如,某些系统调用或网络延迟可能导致的非必需时间消耗。让我们具体说明这些概念:
Duration: 这是 事务从开始到结束的总时间,包括所有操作执行的时间以及任何可能的延迟时间。Duration是你用来评估事务整体性能的关键指标。
Wasted Time: 这是事务执行过程中非必要的时间消耗,例如等待资源或网络延迟。Wasted Time通常是希望最小化的时间,因为它代表了不必要的性能损耗。
基于你的例子:
- Duration: 0.1248秒: 这是事务的总持续时间,从开始到结束的完整时间。
- Wasted Time: 0.0010秒: 这是事务中不必要的消耗时间。
因此,事务的持续时间通常包含了浪费时间。也就是说,
Duration
包括了Wasted Time
。要了解事务的有效执行时间,可以通过减去浪费时间来计算:有效时间=Duration−Wasted Time
对于你这个例子:
有效时间=0.1248−0.0010=0.1238秒
所以,事务的持续时间0.1248秒包括了0.0010秒的浪费时间,剩下的时间是事务的实际执行时间。
插入集合点
**集合点(Rendezvous Point)**是一个用于控制并发用户行为的功能。通过设置集合点,可以让多个虚拟用户(VUsers)在脚本的某个特定点暂停,直到达到设定的用户数量,然后同时继续执行后续操作。
这对于模拟高负载条件下的并发用户行为和测试系统的性能和稳定性非常有用。
表示:lr_rendezvous("集合点名字");
例子:
插入检查点
插入检查点是为了验证在性能测试的时候,页面元素是否渲染正确
比如:假设,我们在性能测试的时候打开了百度的搜索界面,检查一下百度这两个字是否在页面出现了,用于初步按断这个页面是正确的
表示方法:web_reg_find
点击OK之后,会生成相应的代码:
参数化
参数化是性能测试和负载测试中的一个关键技术,它的主要目的是通过使用动态数据替换脚本中的硬编码值,从而实现更真实、更全面的测试。
比如:在做性能测试的时候,需要大量的用户数据,这个数据不可能通过copy大量重复代码来完成
参数化的具体方法:
这里以例子的形式来讲解,比如我们模拟多个用户登录,就需要多个账号密码,这时候,就可以使用参数化,让登录名和密码都是一个参数,然后设置好参数的值
同样,把密码也参数化
替换后的效果:
设置数据源:上面只是把原来的文本用参数进行了替代,但是要想从我们设置好的文件中获取参数的值,还需要设置一下
设置运行参数个数:
VUG 默认只会运行一个参数,因此我们还需要设置一下运行的参数个数
这样,就实现了两个用户登录:
打印日志
记录日志:lr_log_message("要记录的内容")
输出语句:lr_output_message("要输出的内容")
他俩的区别是:
lr_log_message
用于将消息记录到日志文件中。它适用于需要详细记录测试过程中的事件或调试信息,而这些信息不一定需要显示在运行时的控制台上。
lr_output_message
用于将消息输出到LoadRunner控制台(或VuGen的输出窗口),并且也会记录在日志文件中。它适用于需要在运行时立即查看的信息,例如关键步骤的状态或错误消息。
栗子:在输出方式上是不同的
字符串相关函数
几个常用的:
strcmp // 比较两个字符串
strcpy // 拷贝字符串
strcat // 连接两个字符串
栗子:
一定需要显示在运行时的控制台上。
lr_output_message
用于将消息输出到LoadRunner控制台(或VuGen的输出窗口),并且也会记录在日志文件中。它适用于需要在运行时立即查看的信息,例如关键步骤的状态或错误消息。
栗子:在输出方式上是不同的
[外链图片转存中…(img-ZKCSD9N7-1718110952890)]
字符串相关函数
几个常用的:
strcmp // 比较两个字符串
strcpy // 拷贝字符串
strcat // 连接两个字符串
栗子: