当前位置: 首页 > news >正文

LoadRunner使用教程

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基础使用

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

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

分为两部分

汇总报告

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

图表

 

 

 

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

添加虚拟用户汇总表

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

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

相关文章:

LoadRunner使用教程

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

Zia和ChatGPT如何协同工作?

有没有集成ChatGPT的CRM系统推荐?Zoho CRM已经正式与ChatGPT集成。下面我们将从使用场景、使用价值和使用范围等方面切入讲述CRMAI的应用和作用。 Zia和ChatGPT如何协同工作? Zia和ChatGPT是不同的人工智能模型,在CRM中呈现出共生的关系。 …...

【位操作】——获取整数变量最低位为 1 的位置

获取整数变量最低位为 1 的位置 #define BIT_LOW_BIT(y) (((y)&BIT(0)) ? 0 : (((y)&BIT(1)) ? 1 : (((y)&BIT(2)) ? 2 : (((y)&BIT(3)) ? 3 : \(((y)&BIT(4)) ? 4 : (((y)&BIT(5)) ? 5 : (((y)&BIT(6)) ? 6 : (((y)&…...

gtest测试用例注册及自动化调度机制源代码流程分析

gtest的入门参见: 玩转Google开源C单元测试框架Google Test系列(gtest) gtest源码分析流程参见: gtest流程解析 测试用例注册流程分析要点:TEST_F宏替换、C静态成员的动态初始化。 自动化调度流程分析要点:UnitTest、UnitTestIm…...

IOS自动化测试环境搭建教程

目录 一、前言 二、环境依赖 1、环境依赖项 2、环境需求与支持 三、环境配置 1、xcode安装 2、Git安装 3、Homebrew安装(用brew来安装依赖) 4、npm和nodejs安装 5、libimobiledevice安装 6、idevicesinstaller安装 7、ios-deploy安装 8、Ca…...

常用API学习08(Java)

格式化 格式化指的是将数据按照指定的规则转化为指定的形式 。 那么为什么需要格式化?格式化有什么用? 以数字类为例,假设有一个比分牌,在无人得分的时候我们希望以:“00:00”的形式存在,那么…...

面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?

面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们? 在TypeScript中,装饰器(Decorators)是一种用于增强代码功能的特殊类型声明。装饰器提供了一种在类、方法、…...

Jenkins 还可以支持钉钉消息通知?一个插件带你搞定!

Jenkins 作为最流行的开源持续集成平台,其强大的拓展功能一直备受测试人员及开发人员的青睐。大家都知道我们可以在 Jenkins 中安装 Email 插件支持构建之后通过邮件将结果及时通知到相关人员。 但其实 Jenkins 还可以支持钉钉消息通知,其主要通过 Ding…...

7.ES使用

ES多条件查询 and , or这种的 ES模糊查询 like这种的 {"wildcard": {"title.keyword": {"value": "*宣讲*"}}}说明: title是要匹配的关键字段名称keyword是属性,表示匹配的是关键字信息,如果不用.ke…...

Web安全基础

1、HTML基础 什么是 HTML HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (Markup language) 标记语言是一套标记标签 (Markup tag) HTML 使用标记标签来描述网页 总的来说&…...

jQueryAPI

文章目录 1.jQuery 选择器1.1 jQuery 基础选择器1.2 jQuery 层级选择器1.3 隐式迭代1.4 jQuery 筛选选择器1.5 jQuery 筛选方法1.6 jQuery 里面的排他思想1.7 链式编程 2.jQuery 样式操作2.1 操作 css 方法2.2 设置类样式方法2.3 类操作与className区别 3.jQuery 效果3.1 显示隐…...

如何将路径字符串数组(string[])转成树结构(treeNode[])?

原文链接:如何将路径字符串数组(string[])转成树结构(treeNode[])? 需求 这里的UI使用的是Element-Plus。 将一个路径字符串数组(当然也可能是其他目标字符串数组),渲染成树。 /*source:/a/b/c/d/e/a/b/e/f/g/a/b/h/a…...

中国工程院院士陈晓红一行莅临麒麟信安调研

7月20日下午,中国工程院院士、湘江实验室主任、湖南工商大学党委书记陈晓红,湘江实验室副主任、湖南工商大学副校长刘国权,湘江实验室副主任、湖南工商大学党委组织部统战部常务副部长胡春华等领导一行莅临麒麟信安调研。麒麟信安董事长杨涛&…...

解决Linux环境下启动idea服务,由于权限问题无法正常启动问题

问题: 在Linux环境下启动idea服务,一直提示: invalid registry store file /app/appuser/.dmf/dubbo,cause:failed to create directory /app/appuser! 原因:文件夹中没有操作权限。 解决: (1&#xff0…...

Linux6.16 Docker consul的容器服务更新与发现

文章目录 计算机系统5G云计算第四章 LINUX Docker consul的容器服务更新与发现一、consul 概述1.什么是服务注册与发现2.什么是consul 二、consul 部署1.consul服务器2.registrator服务器3.consul-template4.consul 多节点 计算机系统 5G云计算 第四章 LINUX Docker consul的…...

Redis学习2--使用java操作Redis

1、java操作Redis库的比较 Redis有各种语言的客户端可以来操作redis数据库,其中java语言主要有Jedis与lettuce ,Spring Data Redis封装了上边两个客户端,优缺点如下: 2、使用Jedis操作Redis Jedis使用的基本步骤: 引…...

[游戏数值] 常用刷新次数钻石消耗的设计

需满足要求 以一定规律增加能够在较少次数内增加到较大数值平滑增长 设计思路 增加值INT((当前序号-1)/X)*YZ X2,表示希望几个一组,通过INT()取整可获得0、0、1、1、2、2…这样的序列Y10,表示基础值,将上述序列变为0、0、10、1…...

rancher 2.5.7 证书过期处理方案

背景:现场搭建的单节点 rancher 问题:rancher的 ui 界面无法访问 排查:排查rancher容器日志报错 time“2021-12-29T08:27:32.616638402Z” levelinfo msg“Waiting for master node startup: resource name may not be empty” 2021-12-29 08…...

Tomcat中的缓存配置

Tomcat中的缓存配置通常是通过Web应用程序的context.xml文件或Tomcat的server.xml文件进行设置。下面提供一个简单的案例来说明如何在Tomcat中配置缓存。 假设您的Web应用程序名为"myapp",我们将在context.xml中添加缓存配置。 打开Tomcat安装目录&…...

C++ 函数模板

为了代码重用,代码就必须是通用的;通用的代码就必须不受数据类型的限制。那么我们可以把数据类型改为一个设计参数。这种类型的程序设计称为参数化程序设计。软件模块由模板(template)构造。包括函数模板(function tem…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...

小智AI+MCP

什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...

欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!

多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...

Linux实现线程同步的方式有哪些?

什么是线程同步? 想象一下超市收银台:如果所有顾客(线程)同时挤向同一个收银台(共享资源),场面会一片混乱。线程同步就是给顾客们发"排队号码牌",确保: 有序访…...

在 Vue 的template中使用 Pug 的完整教程

在 Vue 的template中使用 Pug 的完整教程 引言 什么是 Pug? Pug(原名 Jade)是一种高效的网页模板引擎,通过缩进式语法和简洁的写法减少 HTML 的冗长代码。Pug 省略了尖括号和闭合标签,使用缩进定义结构,…...