LoadRunner使用教程

news2024/11/24 9:05:08

1. LoadRunner简介

LoadRunner是一款广泛使用的性能测试工具

可以对各种应用程序进行性能测试,包括Web应用程序、移动应用程序、企业级应用程序等。它提供了一个综合的性能测试解决方案,包括测试计划设计、脚本录制、测试执行、结果分析和报告生成等功能。

主要有以下几个核心组件:

  1. Virtual User Generator(虚拟用户产生器):用于录制和编辑性能测试脚本。通过模拟用户的行为来捕获用户与应用程序之间的交互操作。

  2. Controller:用于设置测试场景和配置虚拟用户的行为。可以模拟不同的负载模式、并发用户数量和事务执行时间等。

  3. Load Generators:用于模拟实际用户的虚拟用户,并产生负载。可以在多台物理或虚拟机器上分布负载。

  4. Analysis:用于收集和分析测试执行期间的性能数据。提供图表、统计数据和报告,以便深入了解应用程序的性能状况。

2.Virtual User Generator基础使用

1.了解webtours系统

如何启动?

双击

配置

有了ip还需要port才能访问成功,在配置文件中查看port

2.脚本录制

打开VUG 

 如何确定协议?找开发沟通

录制

 开始录制

 有时需要将无关代码删除

3.编译

 

4.运行(回放)

打印日志: 

Virtual User Script started at : 2023/7/21 8:42:35
Starting action vuser_init.
Web Turbo Replay of LoadRunner 12.0.0 for Windows 8; build 2739 (Nov 30 2014 23:13:05)  	[MsgId: MMSG-27143]
Run mode: HTML  	[MsgId: MMSG-26993]
Run-Time Settings file: "C:\Users\陈昌良\Documents\VuGen\Scripts\WebHttpHtml1\\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(4): web_url("WebTours") started  	[MsgId: MMSG-26355]
Action.c(4): Detected non-resource "http://192.168.1.7:1080/WebTours/header.html" in "http://192.168.1.7:1080/WebTours/"  	[MsgId: MMSG-26574]
Action.c(4): Detected non-resource "http://192.168.1.7:1080/cgi-bin/welcome.pl?signOff=true" in "http://192.168.1.7:1080/WebTours/"  	[MsgId: MMSG-26574]
Action.c(4): Found resource "http://192.168.1.7:1080/WebTours/images/hp_logo.png" in HTML "http://192.168.1.7:1080/WebTours/header.html"  	[MsgId: MMSG-26659]
Action.c(4): Found resource "http://192.168.1.7:1080/WebTours/images/webtours.png" in HTML "http://192.168.1.7:1080/WebTours/header.html"  	[MsgId: MMSG-26659]
Action.c(4): Detected non-resource "http://192.168.1.7:1080/cgi-bin/nav.pl?in=home" in "http://192.168.1.7:1080/cgi-bin/welcome.pl?signOff=true"  	[MsgId: MMSG-26574]
Action.c(4): Detected non-resource "http://192.168.1.7:1080/WebTours/home.html" in "http://192.168.1.7:1080/cgi-bin/welcome.pl?signOff=true"  	[MsgId: MMSG-26574]
Action.c(4): Found resource "http://192.168.1.7:1080/WebTours/images/mer_login.gif" in HTML "http://192.168.1.7:1080/cgi-bin/nav.pl?in=home"  	[MsgId: MMSG-26659]
Action.c(4): web_url("WebTours") was successful, 10080 body bytes, 2371 header bytes, 24 chunking overhead bytes  	[MsgId: MMSG-26385]
Action.c(15): web_submit_form("login.pl") started  	[MsgId: MMSG-26355]
Action.c(15): Submitting form to "http://192.168.1.7:1080/cgi-bin/login.pl", Target Frame="body"  	[MsgId: MMSG-27978]
Action.c(15): Detected non-resource "http://192.168.1.7:1080/cgi-bin/nav.pl?username=Test&password=123456" in "http://192.168.1.7:1080/cgi-bin/login.pl"  	[MsgId: MMSG-26574]
Action.c(15): Detected non-resource "http://192.168.1.7:1080/cgi-bin/error.pl?error=badPassword" in "http://192.168.1.7:1080/cgi-bin/login.pl"  	[MsgId: MMSG-26574]
Action.c(15): Resource "http://192.168.1.7:1080/WebTours/images/mer_login.gif" is in the cache already and will not be downloaded again  	[MsgId: MMSG-26655]
Action.c(15): web_submit_form("login.pl") was successful, 2984 body bytes, 698 header bytes, 36 chunking overhead bytes  	[MsgId: MMSG-26385]
Action.c(26): web_submit_form("login.pl_2") started  	[MsgId: MMSG-26355]
Action.c(26): Submitting form to "http://192.168.1.7:1080/cgi-bin/login.pl", Target Frame="body"  	[MsgId: MMSG-27978]
Action.c(26): Detected non-resource "http://192.168.1.7:1080/cgi-bin/nav.pl?page=menu&in=home" in "http://192.168.1.7:1080/cgi-bin/login.pl"  	[MsgId: MMSG-26574]
Action.c(26): Detected non-resource "http://192.168.1.7:1080/cgi-bin/login.pl?intro=true" in "http://192.168.1.7:1080/cgi-bin/login.pl"  	[MsgId: MMSG-26574]
Action.c(26): Found resource "http://192.168.1.7:1080/WebTours/images/flights.gif" in HTML "http://192.168.1.7:1080/cgi-bin/nav.pl?page=menu&in=home"  	[MsgId: MMSG-26659]
Action.c(26): Found resource "http://192.168.1.7:1080/WebTours/images/itinerary.gif" in HTML "http://192.168.1.7:1080/cgi-bin/nav.pl?page=menu&in=home"  	[MsgId: MMSG-26659]
Action.c(26): Found resource "http://192.168.1.7:1080/WebTours/images/in_home.gif" in HTML "http://192.168.1.7:1080/cgi-bin/nav.pl?page=menu&in=home"  	[MsgId: MMSG-26659]
Action.c(26): Found resource "http://192.168.1.7:1080/WebTours/images/signoff.gif" in HTML "http://192.168.1.7:1080/cgi-bin/nav.pl?page=menu&in=home"  	[MsgId: MMSG-26659]
Action.c(26): web_submit_form("login.pl_2") was successful, 5780 body bytes, 2044 header bytes, 36 chunking overhead bytes  	[MsgId: MMSG-26385]
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.

 思考时间可以设置

5.脚本增强

如何加强脚本

事务插入

函数:

lr_start_transcation("login")  开始事务  

lr_end_transaction("login", LR_AUTO);结束事务

注意:事务必须有开始,有结束。缺一不可,会报错,名称也必须匹配

点击运行

事务的开始和结束

插入集合点

集合是什么?

在loadrunner为了达到并发这样的机制,引入了集合

让所有用户同时发起请求,等到所有用户都发出了,才向下执行脚本

lr_rendezvous("rendzous1"); 

插入检查点

属于注册函数,需要放在URL之前才会生效,

函数:web_reg_find();

 

参数化

 还可以添加参数

运行:

 

打印相关日志

函数:lr_log_message("打印内容");

Action()
{

	web_url("WebTours", 
		"URL=http://192.168.1.7:1080/WebTours/", 
		"Resource=0", 
		"RecContentType=text/html", 
		"Referer=", 
		"Snapshot=t1.inf", 
		"Mode=HTML", 
		LAST);

	

	lr_think_time(15);

	lr_rendezvous("rendzous1");

	lr_start_transaction("login");
	//一百万用户到达这个点后才进行向下执行
	web_submit_form("login.pl", 
		"Snapshot=t2.inf", 
		ITEMDATA, 
		"Name=username", "Value=Test", ENDITEM, 
		"Name=password", "Value=123456", ENDITEM, 
		"Name=login.x", "Value=43", ENDITEM, 
		"Name=login.y", "Value=9", ENDITEM, 
		LAST);

	lr_think_time(7);

	lr_end_transaction("login", LR_AUTO);
	
	web_reg_find("Fail=NotFound",
		"Search=All",
		"SaveCount=",
		"Text=Welcome",
		LAST);
	

	web_submit_form("login.pl_2", 
		"Snapshot=t3.inf", 
		ITEMDATA, 
		"Name=username", "Value={username}", ENDITEM, 
		"Name=password", "Value={password}", ENDITEM, 
		"Name=login.x", "Value=51", ENDITEM, 
		"Name=login.y", "Value=5", ENDITEM, 
		LAST);
	
	lr_log_message("登录成功!");

	return 0;
}

3.Controller的基础使用

Controller功能:用来设计测试场景

通过Controller设计简单的测试场景,简单的分析性能测试报告

Controlletonr打开方式:通过VUG打开或者双击直接打开

这种就是VUG打开,直接打开方式: 

将左侧需要的导入点Ok即可

设置场景

 虚拟用户交流表

开启这些服务 ,才能检测windows资源

添加监视 

 

  

运行场景

这里需要注意这个软件的BUG,需要点击view,show available graphs,然后点击右上方的  调整窗口大小  的按钮  才能显示出下列图表

一些放大图表 

4.Analysis基础使用

先勾选运行完场景后自动生成测试报告 

将运行时间改短一些,然后运行等待,自动生成测试报告

分为两部分

汇总报告

这是汇总报告,下面是图表

图表

 

 

 

 要查看其他指标的图,可以添加

添加虚拟用户汇总表

 合并其他表(点击率和吞吐量) 

 趋势大致相同,就没什么问题(点击在吞吐量之前,先请求才会有吞吐量。并且趋势大致相同 )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/796200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三、函数-5.流程函数

一、常见函数 【对比】 二、示例 1、if 和 ifnull -- if(value, t, f) 如果value为true,则返回t,否则返回f ok select if(true, ok, error);-- ifnull(value1, value2) 如果value1不为空,返回value1,否则返回value2&#…

MFC表格控件CListCtrl的改造及用法

1、目的 简单描述MFC的表格控件使用方法。Qt适用习惯了以后MFC用的比较别扭,因此记录一下以备后续复制代码使用。由于MFC原生的CListCtrl比较局限,比如无法改变表格的背景色、文字颜色等设定,因此先对CListCtrl类进行重写,以便满足…

哪些报表工具更适合中国企业?看完本文就知道了

企业级报表工具是指能够处理大量数据、支持多种数据源连接、具有强大的数据分析和可视化功能的工具。进入大数据时代,企业数据量剧增、分析需求精细化且要求高效率、高灵活自主性,一般都采用BI报表工具来做智能化、可视化数据分析,推动企业的…

Neo4j数据库中导入CSV示例数据

本文简要介绍Neo4j数据库以及如何从CSV文件中导入示例数据,方便我们快速学习测试图数据库。首先介绍简单数据模型以及基本图查询概念,然后通过LOAD CSV命令导入数据,生成节点和关系。 环境准备 读者可以快速安装Neo4j Desktop,启…

Mysql中(@i:=@i+1)的介绍

i:i1 表达式 生成伪列实现自增序列 语法: select (i:i1) as ,t.* from table_name t,(select i:0) as j (i:i1)代表定义一个变量,每次叠加 1; (select i:0) as j 代表建立一个临时表,j是随便取的表名,但别名一定…

python和c++哪个更值得学,python和c++学哪个简单

大家好,本文将围绕python和c哪个更值得学展开说明,python和c学哪个简单是一个很多人都想弄明白的事情,想搞清楚c和python哪个好学需要先了解以下几个事情。 1、想学编程,选择Python 还是Java或者C? 首先,我…

MySQL索引失效原因及解决方案

MySQL索引失效原因及解决方案 在使用MySQL数据库时,索引是一种重要的性能优化工具。然而,有时候我们可能会遇到索引失效的情况。本文将介绍几种常见的MySQL索引失效原因以及相应的解决方案,并提供SQL语句的错误示例和正确示例。 1. 字符串字…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 二)

Prop装饰器:父子单向同步 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的,但是变化不会同步回其父组件。 概述 Prop装饰的变量和父组件建立单向的同步关系: Prop变量允许在本地修改,但修改后的变化不会…

tinkerCAD案例:11.制作齿轮

tinkerCAD案例:11.制作齿轮 制作齿轮 Add a cylinder to be the main part of the gear. 添加一个圆柱体作为齿轮的主要部分。 说明 Click and drag a cylinder onto the Workplane. 单击圆柱体并将其拖动到工作平面上。 Change the cylinder dimensions to 35mm …

四、约束-1.概述

一、概念 约束是作用于表中字段上的规则,用于限制存储在表中的数据。 二、目的 保证数据库中数据的正确、有效性和完整性。 三、分类

视觉套件专项活动!与飞桨技术专家一起提升技术实力,更多荣誉奖励等你领取

作为中国最早开源的深度学习框架,飞桨深度践行开源理念,开放拥抱社区,重视生态构建,与开发者和生态伙伴共成长,已成为国内综合竞争力第一的产业级深度学习平台。截至目前,飞桨已凝聚750万名开发者。 在飞桨…

i.MX6ULL(十九) linux gpio子系统

一 简介 pinctrl 子系统重点是设置 PIN( 有的 SOC 叫做 PAD) 的复用 和电气属性, 如果 pinctrl 子系统将一个 PIN 复用为 GPIO 的话,那么接下来就要用到 gpio 子系 统了。gpio 子系统顾名思义,就是用于初始化 GPIO 并且提供相…

idea,选中同一个变量高亮显示

阅读复杂代码时,我们经常因为找不清变量位置,而浪费精力重新去看变量名。 效果展示: 在设置里直接搜索按照步骤,勾选然后修改选中变量时的变量背景颜色和字体颜色 这里是设置选中变量时,其他变量的背景颜色和字体颜色…

终于搞懂!数字化、信息化、智能化,到底有什么不同?

引言 随着科技的飞速发展,数字化、信息化和智能化这三个术语在各行各业中频繁出现。然而,许多人对它们之间的区别并不十分清楚。本文旨在阐明数字化、信息化和智能化的含义,探讨它们在实践中的应用,并梳理其异同之处。 一、数字化…

你不知道的AI绘画变现方式

🏆 文章目标:学习AI绘画变现方式 🍀 入门篇:你不知道的AI绘画变现方式 ✅ 创作者:熊猫Jay ✨ 个人公众号: 熊猫Jay字节之旅 (文末有链接) 🍁 展望:若本篇讲解内容帮助到您,请帮忙点个…

【科研必备】生态系统碳循环模型CENTURY建模方法

CENTURY模型,主要基于过程的陆地生态系统生物地球化学循环模型。主要用于模拟不同土壤-植被系统间C、N、P和S的长期动态。根据土壤有机质的分解速率,CENTURY模型将土壤总有机碳(TOC)分成了三个碳库,即活性、慢性和惰性…

Rest API 开发分享

概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式。获得这些表徵致使这些应用程序转变了其状态。随着不断获取资源的表示方式,客户端应用不断地在转变着其状态,所谓表…

js获取本js文件名称

使用 script 标签的 src 属性: 如果您的 JavaScript 文件是通过 script 标签引入的,您可以使用以下方法来获取当前脚本的文件名: var scripts document.getElementsByTagName(script); var currentScript scripts[scripts.length - 1]; va…

CMU 15-445 -- Multi-Version Concurrency Control - 16

CMU 15-445 -- Multi-Version Concurrency Control - 16 引言MVCCExample #1Example #2小结 Design DecisionsConcurrency Control ProtocolVersion StorageAppend-Only StorageTime-Travel StorageDelta Storage Garbage CollectionTuple-Level GCTransaction-Level GC Index …

Android编译报错-keystore2

vendor/mediatek/proprietary/trustzone/trustkernel/source/build/k39tv1_64_bsp_k419/array.c vendor/mediatek/proprietary/trustzone/trustkernel/source/build/k39tv1_64_bsp_k419/cert.dat 这个两个文件和厂家名称等配置信息有关。