测试工具------LoadRunner

本文详细介绍了LoadRunner,它是预测系统行为和性能的负载测试工具。阐述了其运行原理、组成部分,包括脚本生成器、测试控制器等。还说明了性能测试过程,如制定计划、开发脚本等,以及脚本开发细节和分析占用率的各项指标。

LoadRunner的介绍

1.介绍

LoadRunner是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,而且使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。

2.功能说明:

LoadRunner是一种适用于许多软件体系架构的自动负载测试工具,从用户关注的响应时间、吞吐量,并发用户和性能计数器等方面来衡量系统的性能表现,辅助用户进行系统性能的优化。

3.LoadRunner运行原理

LoadRunner启动以后,在任务栏会有一个Agent进程,通过Agent进程,监视各种协议的Client与Server端的通信。用LoadRunner的一套C语言函数来录制脚本,所以只要LoadRunner支持的协议,就不会存在录制不到的,然后LoadRunner调用这些脚本向服务器端发出请求,接受服务器的响应。至于服务器内部如何处理,它不关心。

LoadRunner通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,优化性能和加速应用系统的发布周期。

4.LoadRunner组成
Virtual User Generator(脚本生成器):

Virtual User Generator是脚本的录制,增强和调试的工具。

作用:主要用于捕捉用户业务流程,并且自动生成脚本;

VuGen (分别为VuGen(虚拟用户脚本生成器))是录制与便携脚本的地方。通过录制或编写脚本来模拟用户的行为。系统会自动调用后台功能组件LG(负载生成器)和Proxy(用户代理)来完成性能测试工作。

Controller(测试控制器):

他主要包括设计场景,场景的执行,测试用例的执行以及各项指标的监控都在这里进行。
作用:它主要包括设置不同脚本的虚拟用户数量、迭代次数、执行时间等;

它是执行负载测试管理和监控的中心。在这里指定具体的性能测试方案,执行性能测试,收集测试数据,监控测试指标。监控工具将测试过程中收集到的客户机、服务器和网络性能指标数据显示在监控页面上,便于测试人员对系统表现进行随时掌握。

Load Generator(模拟器):模拟用户向服务器发送请求;
LG是模拟多用户并发访问被测试系统的组件。模拟多用户访问系统的前提是已经具备了虚拟用户脚本,VuGen是录制和编
辑虚拟用户脚本的工具,录制好的脚本是不同语言表达的文本文件,在LG执行时被解析和执行。脚本录制和回放过程是
在Proxy支持下完成的。

Analysis(结果生成器):

他是分析测试结果,辅助测试人员进行测试分析
在测试完成后,对测试过程中收集到的各种性能数据进行计算、汇总和处理,生成各种图表和报告,为系统性能测试结果分析提供支持。

注意其中Virtual User Generator使用在创建VU脚本阶段,Controller用在定义场景阶段和运 行场景阶段,Analysis用在分析结果阶段

参数说明:

Scenario:场景。所谓场景,是指在每一个测试过程中发生的事件。
Vusers:虚拟用户。LoadRunner使用多线程或多进程来模拟用户对应用程序操作时产生的压力。一个场景可能包括多个虚拟用户,甚至成千上万个虚拟用户。
Vuser Script:脚本。用脚本来描述Vuser在场景中执行的动作。
Transactions:事务。一组相关操作的集合。事务代表了用户的某个业务过程,需要衡量这些业务过程的性能。
rendezvous :集合。相当于一个时间点,当所有的用户都到达该时间点后才进行下一步。当我们测试多个用户并发时,每个用户执行到该事务脚本的先后顺序是不确定的,所以得到的测试结果也并不是一个完全 并发的极限测试结果。在开始事务之前 ,插入一个“集合点”,那么在多用户执行时,就可以将用户请求停下来,直到用户数量达到满足的条件(默认是100%的用户都到达集合点)。那么,所有的用户都将同时发出接下来的请求。(班车发车)

Loadrunner的性能测试过程:

在这里插入图片描述

制定性能测试计划

主要实现:分析应用程序、确定测试目标、计划执行的方式

开发测试脚本

LoadRunner 使用虚拟用户的活动来模拟真实用户来操作Web 应用程序,而虚拟用户的活动就包含在测试脚本中,所以说测试脚本对于测试来说是非常重要的。

开发测试脚本要使用 VuGen 组件。

测试脚本要完成的内容有:

  • 每一个虚拟用户的活动
  • 参数化
  • 定义事物
  • 定义检查点
设计运行场景

运行场景描述在测试活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator 机器列
表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。

运行、监视测试

一切配置妥当,开始运行测试。在运行过程中,需要监视各个服务器的运行情况(DataBase Server、Web Server等)。

分析测试结果

所有前面的准备都是为了这一步。我们需要分析大量的图表,生成各种不同的报告,最后会得出结论。

测试脚本的开发

以Loadrunner安装时附带的样例程序Web Tours进行。
路径在安装LoadRunner的文件加下边的\LoadRunner\WebTours,选择StartServer.bat启动服务器。

1、录制脚本

启动 Visual User Generator 后,选择新建脚本,因为要测试的是web项目,所以选择协议为WebHTTP/HTML,点击创建
在这里插入图片描述
在这里插入图片描述
WebTours的默认的用户名为jojo,密码为bean
在这里插入图片描述

如果LoadRunner的代理proxy没有关的话,会报错
在这里插入图片描述
所以要选择 No proxy,这样才不会保错
在这里插入图片描述
在这里插入图片描述
修改之后
在这里插入图片描述

2.脚本分析和日志分析

脚本分析

Action()
{
	
//打开浏览器进入登录页面
	web_url("WebTours", 
		"URL=http://127.0.0.1:1080/WebTours/", 
		"Resource=0", 
		"RecContentType=text/html", 
		"Referer=", 
		"Snapshot=t1.inf", 
		"Mode=HTML", 
		LAST);
//思考时间
	lr_think_time(8);

//事务的开始时间	
	lr_start_transaction("login");

//集合
	lr_rendezvous("login");

	
//登录操作组合
	web_submit_form("login.pl", 
		"Snapshot=t2.inf", 
		ITEMDATA, 
		"Name=username", "Value=jojo", ENDITEM, 
		"Name=password", "Value=bean", ENDITEM, 
		"Name=login.x", "Value=67", ENDITEM, 
		"Name=login.y", "Value=8", ENDITEM, 
		LAST);
	web_image("Search Flights Button", 
		"Alt=Search Flights Button", 
		"Snapshot=t3.inf", 
		LAST);

    web_set_sockets_option("SSL_VERSION", "TLS1.1");

	web_add_cookie("SRCHUID=V=2&GUID=3234E78488D340B29AEAA96E5099602D&dmnchg=1; DOMAIN=ieonline.microsoft.com");

	web_add_cookie("SRCHD=AF=NOFORM; DOMAIN=ieonline.microsoft.com");

	web_add_cookie("SRCHUSR=DOB=20190618; DOMAIN=ieonline.microsoft.com");

	web_url("suggestions.zh-CN", 
		"URL=https://ieonline.microsoft.com/iedomainsuggestions/ie11/suggestions.zh-CN", 
		"Resource=0", 
		"RecContentType=text/html", 
		"Referer=", 
		"Snapshot=t4.inf", 
		"Mode=HTML", 
		LAST);

	lr_think_time(6);   //思考时间

	web_url("welcome.pl", 
		"URL=http://127.0.0.1:1080/cgi-bin/welcome.pl?signOff=1", 
		"Resource=0", 
		"RecContentType=text/html", 
		"Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?page=menu&in=flights", 
		"Snapshot=t5.inf", 
		"Mode=HTML", 
		LAST);

	lr_end_transaction("login", LR_AUTO);   //事务的结束时间	

	return 0;
}

日志分析

Virtual User Script started at : 2019/6/18 22:12:33     开始执行脚本
Starting action vuser_init.               虚拟用户初始化
Web Turbo Replay of LoadRunner 12.0.0 for Windows 8; build 2079 (Jun 17 2014 10:56:12)  	[MsgId: MMSG-27143]
Run mode: HTML  	[MsgId: MMSG-26993]              
Run-Time Settings file: "C:\Users\Z\Desktop\CTest\\default.cfg"  	[MsgId: MMSG-27141]         运行的文件
Ending action vuser_init.              用户初始化结束
Running Vuser... 
Starting iteration 1.          事务开始            
Maximum number of concurrent connections per server: 6  	[MsgId: MMSG-26989]      
Starting action Action.     
........
Action.c(5): web_url("WebTours") was successful, 10076 body bytes, 2371 header bytes, 24 chunking overhead bytes  	[MsgId: MMSG-26385]
Action.c(17): Notify: Transaction "login" started.      
Action.c(20): Rendezvous login                集合操作开始
Action.c(24): web_submit_form("login.pl") started  	[MsgId: MMSG-26355]
...........

Action.c(57): web_url("welcome.pl") was successful, 2168 body bytes, 582 header bytes, 24 chunking overhead bytes  	[MsgId: MMSG-26385]
Action.c(66): Notify: Transaction "login" ended with "Pass" status (Duration: 2.5672 Wasted Time: 1.1441).
Ending action Action.
Ending iteration 1.            事务结束
Ending Vuser...         
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.


事务的运行时间就是=持续的事务时间-浪费的事务时间
在这里插入图片描述
注意:如果在录制的时候忘了添加事务和集合,可以在Search里面的insert in Script里面添加事务和集合

设置检查点

打开view视图里面的snapshot,判断是否登录成功
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
再次播放脚本
在这里插入图片描述
在这里插入图片描述

参数的关联和替换

参数关联
同样是在view的snapshot快照里面,选中参数右击,选择添加关联
在这里插入图片描述
在这里插入图片描述
脚本里面关于关联的函数‘
在这里插入图片描述

函数的帮助文档

在这里插入图片描述

参数化

在脚本里面选中要参数化的属性,进行参数化,

在这里插入图片描述
在这里插入图片描述
因为建立的关联,所有和要替换的属性名称一样的地方都会被替换。如果没有进行关联直接进行参数化就会报错。

然后可以在参数属性里面设置值
在这里插入图片描述
在LoadRunner的安装目录里面有这个系统的用户名
在这里插入图片描述
在这里插入图片描述

选择下一行

在这里插入图片描述
“选择下一行 ”有以下几种选择
Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取
Random:在每次循环里随机的读取一个,但是在循环中一直保持不变
Unique :唯一的数。注意:使用该类型必须注意数据表有足够多的数。比如Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一个错误。

为了避免不正确的参数导致不可用,在设置后,可以选择“模拟参数”来试运行

添入随机数的取值范围为(1-50),选择一种数据格式

更新时间

在这里插入图片描述
在更新值的时间中有以下几个选项:
Each Occurrence:在运行时,每遇到一次该参数,便会取一个新的值
Each iteration:运行时,在每一次循环中都取相同的值
Once:运行时,在每次循环中,该参数只取一次值

举例:里面一个参数出现三次
参数值:A1 A2 A3 A4 A5 A6

Each Occurrence:
第一次: A1 A2 A3
第二次: A4 A5 A6
Each iteration
第一次:A1 A1 A1
第二次:A2 A2 A2
Once
第一次:A1 A1 A1
第二次:A1 A1 A1

对页面里面的文本进行检查

在Run-time-Setting里面,对内容检查打上勾,否则检查不到页面的内容

在这里插入图片描述

视频播放脚本的执行过程

在工具的tools里面选中option 里面的script 进行如下操作
在这里插入图片描述

插入函数

在脚本页面,通过右键-插入-新建步骤可以查看函数列表
1. 控制脚本流程(C语言代码可以直接使用)
if { } else { }
for{ }
while{ }

2. 字符串函数
由于在 VuGen 脚本中使用最多的还是字符串,所以字符串函数在脚本中使用非常频繁。具体的语法在0帮助说明里面
strcmp 比较两个字符串
strcat 连接两个字符串
strcpy 拷贝字符串

在VuGen 中,以char声明的字符串是只读的,如果试图给char类型的字符串赋值的话,编译会通过,但在运行时会产生“Access Violation”的错误。解决这类问题,就是把字符串声明为字符数组,比如char[100]

3.输出内容
在Search里面的insert in Script里面找到 log massage,选择就好了
在这里插入图片描述

4. LoadRunner 提供的标准函数
lr_eval_string 该函数功能是得到参数(参数化输入中)当前的值
exg: lr_output_message(“temp = %s”, lr_eval_string("{WCSParam2}"));
lr_save_string 该函数功能是把一个字符串保存到参数中

举例:
lr_save_string(“439”,“WCSParam3”);
web_reg_save_param(“BODY”,
“LB=“MESSAGE”:{”",
“RB=”:",
LAST);

执行和设置场景:

1.选择创建场景的模式
在这里插入图片描述
面向目标的场景:会设定一个目标,TPS为多少,CPU的占用率为多少,吞吐量为多少等去执行脚本
手动场景:最常用的,他没有设定目标,他目的是此昂要测试系统的最大极限为多少。
*

场景计划的设置

在这里插入图片描述
计划方式:

  • 场景:初始化,启动 Vuers,持续时间,停止Vuser在这里插入图片描述


启动组,初始化,启动 Vuers,持续时间,停止Vuser
在这里插入图片描述

运行模式

实际计划
实际计划就是按照自己设定的那样执行脚本

基本计划
按照模式的方式执行脚本
初始化
*
设置了用户初始化的规则
在这里插入图片描述
启动虚拟用户
设置了虚拟用户执行时启动的规则
在这里插入图片描述
持续时间
在持续时间里面可以设置极脚本的运行时间
在这里插入图片描述
在这里插入图片描述
当上边都有的动作都设置好了之后,计划图就出来了
在这里插入图片描述

设置脚本执行的进度显示

可以数字模式也可以有百分比模式,他们是在场景里面进行设置的
在这里插入图片描述
IP欺骗
IP欺骗也是在场景里面设置的。
1.要有真是用户关联数据库,读取数据库里面的用户
2.需要真实模拟用户的不同IP,

脚本执行结束

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Analysis

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

虚拟用户分析
在这里插入图片描述

每秒点击数
在这里插入图片描述
吞吐量
在这里插入图片描述
HTTP的响应
在这里插入图片描述

关联图,查看是否有性能缺陷

可以自动关联也可以手动关联
在这里插入图片描述
在这里插入图片描述
从关联图中可以看到,吞吐量,并发用户数,每秒的点击数,以及HTTP的向来看,曲线的规律性都是一直在的说明你没有性能问题,而且么一次的点击都对着着一次响应。

事务的执行
在这里插入图片描述
事务全部通过,其中用户事务通过5个,自己设置的事物通过10个

事务的平均响应时间
在这里插入图片描述

分析占用率

1. 平均事务响应时间

Average Transaction Response Time
优秀:<2s
良好:2-5s
及格:6-10s
不及格:>10s

2. 每秒点击率

Hits per Second
当增大系统的压力(或增加并发用户数)时,吞吐率和TPS的变化曲线呈大体一致,则系统基本稳定。若压力增大时,吞吐率的曲线增加到一定程度后出现变化缓慢,甚至平坦,很可能是网络出现带宽瓶颈,同理若点击率/TPS曲线出现变化缓慢或者平坦,很可能是服务器响应时间增加,观察服务器资源使用情况,确定是否是服务器问题。

3. 请求响应时间

Time to Last Byte

4. 每秒系统处理事务数

Transaction per second

5. 吞吐量

Throughout

6. CPU利用率

Processor / %Processor Time
好:70%
坏:85%
很差:90%+

7. 数据库操作消耗的CPU时间

Processor / %User Time
如果该值较大,可以考虑是否能通过友好算法等方法降低这个值。
如果该服务器是数据库服务器, Processor%User Time 值大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化。

8. 核心态CPU平均利用率

Processor /%Privileged Time 如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统

9. 处理队列中的线程数

Processor / Processor Queue Length
如果该值保持不变(>=2)个并且%Processor Time 超过90%,那么可能存在处理器瓶颈。
如果发现超过2,而处理器的利用率却一直很低,那么或许更应该去解决处理器阻塞问题,这里处理器一般不是瓶颈。

10. 文件系统缓存

Memory / Cache Bytes 50%的可用物理内存

11. 剩余的可用内存

Memory / Avaiable Mbytes 至少要有10% 的物理内存值

12. 每秒下载页数

Memory / pages/sec 好:无页交换
坏:CPU每秒10个页交换
很差:更多的页交换

13. 页面读取操作速率

Memory / page read/sec
如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。
但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。

14. 物理磁盘利用率

Physical Disk / %Disk Time
好:<30%
坏:<40%
很差:<50%+

15. 物理磁盘平均磁盘I/O队列长度

Physical Disk / Avg.Disk Queue Length 该值应不超过磁盘数的1.5~2 倍。要提高性能,可增加磁盘

16. 网络吞吐量

Network Interface / Bytes Total/sec 判断网络连接速度是否是瓶颈,可以用该计数器的值和当前网络的带宽,结果应该小于50%

17. 数据高速缓存区命中率

命中率应大于0.90最好

18. 共享区库缓存区命中率

命中率应大于0.99

19. 监控 SGA 中字典缓冲区的命中率

命中率应大于0.85

20. 检测回滚段的争用

小于1%

21. 监控 SGA 中重做日志缓存区的命中率

应该小于1%

22. 监控内存和硬盘的排序比率

最好使它小于 10%

### 关于 LoadRunner 的简介 LoadRunner 是一种功能强大且广泛应用的性能测试工具,主要用于评估和预测系统行为以及性能表现。它能够模拟大量虚拟用户并生成负载来测试系统的响应时间、吞吐量和其他关键指标[^1]。 --- ### 如何获取 LoadRunner 安装包? 可以从官方渠道或其他可信资源网站下载 LoadRunner 的安装文件。对于 LoadRunner 11 版本,可以参考以下步骤: #### 下载地址 通常情况下,LoadRunner 的正式版本可以通过惠普(HP)或 Micro Focus 的官方网站获得授权许可版或者试用版。如果需要特定版本如 LoadRunner 11,则可能需要访问第三方存储库或联系供应商以获取支持。 #### 验证来源可靠性 务必确认所使用的下载链接来自合法途径,防止恶意软件感染计算机环境[^1]。 --- ### LoadRunner 基础使用流程 以下是基于 LoadRunner 11 的基础操作说明: #### 启动应用程序 成功部署之后,在操作系统中找到对应的快捷入口打开主界面。 #### 新建工程实例 点击新建按钮定义目标应用的服务接口描述文档作为输入依据构建场景模型。 #### 编辑事务逻辑 利用 VuGen 组件编写具体的交互过程代码片段;也可以采用向导模式自动捕捉浏览器活动轨迹形成初始草稿再做进一步调整优化处理。 #### 执行压力试验计划 设置并发数等级参数配置完毕后提交执行命令等待最终统计报表呈现出来以便后续深入探讨潜在缺陷所在位置及其影响程度大小关系等问题解决方案制定方向指引等工作环节紧密相连缺一不可。 ```python # 示例 Python 脚本展示如何调用外部 API 接口实现自动化任务调度管理机制设计思路分享交流学习目的仅限于此不涉及任何商业用途侵权责任自负声明如下所示: import requests def call_api(url, payload=None): try: response = requests.post(url=url,data=payload) return response.json() except Exception as e: print(f"Error occurred while calling {url}: ", str(e)) if __name__ == "__main__": url = "http://example.com/api" data={"key":"value"} result=call_api(url,data) if isinstance(result,dict) and 'status' in result.keys(): status_code=result['status'] message=result.get('message','No Message Returned') print(f'Status Code:{status_code},Message:{message}') ``` 此段伪代码仅为示意并非真实可用案例请酌情修改适配具体业务需求场景下实际运用情况可能会有所差异敬请谅解谢谢合作! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值