LoadRunner入门

简介

LoadRunner是由Micro Focus公司开发的一款专业性能测试工具,也是目前行业内最常用、最成熟的性能测试工具之一,主要用于模拟多用户并发访问系统,测试系统在不同压力下的性能表现,帮我们发现系统的性能瓶颈、稳定性问题。
简单来说,我们平时手动操作软件,一次只能模拟1个用户的行为;而LoadRunner可以“伪装”成上百、上千甚至上万个用户,同时对系统发起请求,模拟真实场景下的用户访问压力,比如:电商平台双十一的峰值流量、APP上线后的大规模用户访问,这些场景我们无法手动模拟,就需要借助LoadRunner来实现。

核心用途

我们使用LR,核心是解决3个关键问题,也是我们做性能测试的核心目标:

  1. 测试系统的并发能力:系统能同时承受多少个用户正常访问,不会卡顿、崩溃;
  2. 排查系统的性能瓶颈:比如响应变慢、报错、宕机,到底是服务器、数据库还是接口的问题;
  3. 验证系统的稳定性:系统在长时间、高并发压力下,能否持续正常运行(比如连续运行24小时无异常)。

LoadRunner的核心组件

LR的操作主要依赖3个核心组件:

  1. VuGen(虚拟用户生成器):核心是“录脚本”——模拟单个用户的操作流程(比如登录、查询、提交表单),生成可重复执行的测试脚本;
    在这里插入图片描述
  2. Controller(控制器):核心是“设场景”——设置虚拟用户数、并发模式(比如我们之前聊的集合点、Pacing),启动压力测试,实时监控测试过程;
    在这里插入图片描述
  3. Analysis(分析器):核心是“看结果”——测试结束后,生成详细的性能报告,帮我们分析响应时间、每秒请求数、错误率等关键指标,定位性能问题。
    在这里插入图片描述
    图标颜色分别为 黄色、绿色、蓝色,为方便记忆可与七色谱顺序对应,其顺序也与实际使用的顺序一致,即先录制脚本,再设置场景,最后查看结果

组件介绍

Generator

新建:script和solution

  1. Script(脚本):是性能测试的“操作指令集”,记录单个虚拟用户的完整操作流程(如登录→查询→退出),是压测的基础单元,每个Script对应一个具体的业务场景,可单独编辑、调试和运行,脚本由Vuser_init、Action、Vuser_end三部分组成,其中Action可进行多次迭代,而前两者仅执行一次。
  2. Solution(解决方案):是Script的“容器”,用于管理多个相关联的Script,比如一个电商压测场景,可将“登录脚本、商品查询脚本、下单脚本”放在同一个Solution中,方便统一编辑、维护和调用,新建VuGen时,默认会创建一个Solution,再在其中创建或添加Script,一个Solution可包含多个不同业务场景的Script,便于批量管理测试相关脚本资源。
    在这里插入图片描述
脚本面板

在这里插入图片描述

录制脚本

  1. 点击录制按钮。
    在这里插入图片描述
  2. 设置Recording mode中的内容,其他内容保持默认,点击Start Recording
    在这里插入图片描述

Record:录制类型
Web Browser,即告诉LR要录制网页。
Windows Application:本地 Windows 桌面客户端
Remote Application via LoadRunner Proxy:远程 / 非本地应用(部署在其他机器上的应用、移动端 APP(配合手机代理设置))
Captured Traffic File Analysis:已捕获的流量文件

Application:应用程序

URL adress:目标地址

录制面板

在这里插入图片描述

录制时,在事务开始前点击添加事务(事务名可自定义),事务结束后,点击结束事务。
比如一个查询操作,需要在查询前点击添加事务,查询后点击结束事务。

开始事务

在这里插入图片描述

结束事务

在这里插入图片描述

停止录制

在这里插入图片描述
在这里插入图片描述
点击停止录制后,gen会自动生成脚本。

注意
可能存在脚本录制不上的情况,考虑重新录制或更换浏览器。

脚本调试

经过上个步骤录制的脚本会有很多多余的内容,需要手动调试人工判断,可借助F12,查找目标接口。
先将多余接口注释掉,若可成功回放则可删除注释内容。不要一上来就删除,可能导致脚本缺少信息而无法回放成功!!!
目标接口之后的内容均可删除,注意要保留事务结束标志return 0

一个登录接口:

	//集合点
    lr_rendezvous("jihe");
    //检查点
    web_reg_find("Search=All",
		"Text=createBy",
		LAST);
	lr_start_transaction("login");
	lr_think_time(1);
	web_custom_request("login", 
		"URL=http://192.168.1.250/prod-api/login", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=http://192.168.1.250/login?redirect=%2Findex", 
		"Snapshot=t45.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body={\"username\":\"user01\",\"password\":\"password01\"}", 
		LAST);
	lr_end_transaction("login",LR_AUTO);
	return 0;

回放

在这里插入图片描述
查看回放内容与录制内容:snapshot。将光标放在对应接口代码块上,点击snapshot。
在这里插入图片描述

函数

下面介绍一些可能用到的函数。
事务内部需要尽量少的代码,这些函数尽量放在事务外。

集合点(类比JM的同步定时器)

如果涉及并发,需要添加集合点。不涉及并发可以不加。
右击-insert-Rendezvous

  lr_rendezvous("jihe");

在这里插入图片描述

检查点(类比JM的断言)

回放之后成功只能代表接口是通的,不能代表返回的信息一定正确,可能异常被try catch返回,也可能被分支处理了。
直接在snapshot中选中需要断言的字符串,右击-Add Text Check Step

    web_reg_find("Search=All",
		"Text=createBy",
		LAST);

在这里插入图片描述

思考时间(类比JM的固定定时器)

lr_think_time(1);
缓解服务器压力,模拟用户真实操作。

其他函数

web_reg_save_param()
web_set_max_html_param_len()
lr_convert_string_encoding()
lr_output_message()
web_add_auto_header()

拓展
关联

适用于:token短期变化刷新

	/* 登录 */	
	web_reg_save_param("token0",
		"LB=token\":\"",
		"RB=\"",
		LAST);

	web_set_max_html_param_len("99999");
	
	web_custom_request("login", 
		"URL=http://192.168.1.250/prod-api/login", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=http://192.168.1.250/login?redirect=%2Findex", 
		"Snapshot=t45.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body={\"username\":\"user01\",\"password\":\"password01\"}", 
		LAST);


	lr_convert_string_encoding(lr_eval_string("{token0}"),"utf-8",NULL,"auth");
    lr_output_message("login转换编码----%s",lr_eval_string("{auth}"));
    	("Authorization",lr_eval_string("Bearer {auth}"));
	
    
    //集合点
    lr_rendezvous("jihe");

    //检查点
    web_reg_find("Search=All",
		"Text=createBy",
		LAST);
	lr_start_transaction("search");

	lr_think_time(1);

	web_url("list_2", 
		"URL=http://192.168.1.250/prod-api/system/industryType/list?pageNum=1&pageSize=10&industryTypeCode=financial", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=http://192.168.1.250/industryType", 
		"Snapshot=t51.inf", 
		"Mode=HTML", 
		LAST);

	lr_end_transaction("search",LR_AUTO);

	return 0;
参数化

添加参数文件:Design-Parameters-Parameters List
在这里插入图片描述
在这里插入图片描述

将实参替换为形参:选中实参,右击-Replace with Parameter-选择参数
在这里插入图片描述

	//集合点
    lr_rendezvous("jihe");
    //检查点
    web_reg_find("Search=All",
		"Text=createBy",
		LAST);
	lr_start_transaction("login");
	lr_think_time(1);
	web_custom_request("login", 
		"URL=http://192.168.1.250/prod-api/login", 
		"Method=POST", 
		"Resource=0", 
		"RecContentType=application/json", 
		"Referer=http://192.168.1.250/login?redirect=%2Findex", 
		"Snapshot=t45.inf", 
		"Mode=HTML", 
		"EncType=application/json;charset=UTF-8", 
		"Body={\"username\":\"{account}\",\"password\":\"{pwd}\"}", 
		LAST);
	lr_end_transaction("login",LR_AUTO);
	return 0;

取值顺序内容见LoadRunner参数化属性设置_单个参数

Controller

跳转&新建

跳转

在generator中点击:
在这里插入图片描述

新建

打开软件后选择脚本导入
file - new-Add Scripts
在这里插入图片描述

场景设置

在design面板设置
在这里插入图片描述
start Vusers:设置虚拟用户数,可立即启动、梯度启动。
在这里插入图片描述
Duration:运行时间,运行完停止、持续运行
在这里插入图片描述
Stop Vusers:释放虚拟用户,可立即释放、梯度释放。
在这里插入图片描述

运行场景

在run面板:
在这里插入图片描述左侧可添加其他图表,如系统资源等。
图标添加完毕后,点击Start Scenario开始运行。

Analysis

跳转&新建

跳转

在controller中,
在这里插入图片描述

新建

打开Analysis后,
在这里插入图片描述

结果导出

解析完成的结果文件,点击Reports-HTML Report即可导出HTML文件。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值