LoadRunner 技巧之 脚本设计
LoadRunner 技巧之 脚本设计
在做性能测试时,我们可能会遇到各种不同的业务需求与用户行为,在一个系统或网站中,每个用户的操作都不完全一样。我们如何来模拟这此用户的行为?经验与能力有限,我这里也做个简单的分析。
Action 介绍
在此之前,我们先来介绍一个Action ,Action就像是一个函数包,将用户操作根据类别存放在不同的函数中,当选择完HTTP协议后,VuGen将自动生成脚本的框架。
默认脚本目录有三部分组成:
Vuser_int
Action
Vuser_end
简单有的来说,我们可以把他们看成三个程序文件,他们依次按照Vuser_int --->Action--->Vuser_end 的顺序执行,存放于Action中的脚本可以循环执行(可以设置循环次数)
在脚本录制之前,我们可以设置将脚本录制在哪一部分:

在脚本录制的过程中,我们可以选择切换脚本的存放位置:

在脚本左侧右键添加新的action部分:

在菜单栏Vuser ---> run-time setting ,选择Run logic 选项,可以设置Action部分的循环次数。

下面简单介绍如何使用参数化、action设置和业务用户比例等进行性能测试。
场景一:
一个用户访问WebTours (loadrunner 自带程序)首页,做两次登录与退出
1、vuser_init部分录制访问webrours首页:
vuser_init()
{
web_url("WebTours",
"URL=http://127.0.0.1:2080/WebTours",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t30.inf",
"Mode=HTML",
LAST);
web_url("header.html",
"URL=http://127.0.0.1:2080/WebTours/header.html",
"Resource=0",
"RecContentType=text/html",
"Referer=http://127.0.0.1:2080/WebTours/",
"Snapshot=t31.inf",
"Mode=HTML",
LAST);
web_url("welcome.pl",
"URL=http://127.0.0.1:2080/WebTours/welcome.pl?signOff=true",
"Resource=0",
"RecContentType=text/html",
"Referer=http://127.0.0.1:2080/WebTours/",
"Snapshot=t32.inf",
"Mode=HTML",
EXTRARES,
"Url=../favicon.ico",
"Referer=", ENDITEM,
LAST);
}
2、将脚本录制部分切换到Action 部分,录制用户登录与退出
Action()
{
web_submit_data("login.pl",
"Action=http://127.0.0.1:2080/WebTours/login.pl",
"Method=POST",
"Referer=http://127.0.0.1:2080/WebTours/nav.pl?in=home",
"Mode=HTML",
ITEMDATA,
"Name=userSession",
"Value=110416.933414338fzHQfHVpAVcfDtAHHptczAHf", ENDITEM,
"Name=username", "Value={username}", ENDITEM, //参数化用户名
"Name=password",
"Value={password}", ENDITEM,
//参数化密码
"Name=JSFormSubmit",
"Value=on", ENDITEM,
LAST);
web_submit_data("login.pl_2",
"Action=http://127.0.0.1:2080/WebTours/login.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http://127.0.0.1:2080/WebTours/nav.pl?in=home",
"Snapshot=t33.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession",
"Value=110416.933414338fzHQfHVpAVcfDtAHHptczAHf", ENDITEM,
"Name=username",
"Value=test", ENDITEM,
"Name=password",
"Value=123456", ENDITEM,
"Name=JSFormSubmit",
"Value=on", ENDITEM,
"Name=login.x",
"Value=56", ENDITEM,
"Name=login.y",
"Value=4", ENDITEM,
LAST);
return 0;
}
run-time setting 的Run logic 选项,设置Action 运行两次。

运行脚本结束,可以通过菜单栏view--->Test Results 来查看运行的结果是否正确

场景二:
一个用户登录一个系统,做3次查询,5次插入,退出。
这里我就不做详细介绍了,需要的注意点是,可以在run-time setting 的Run logic 选项中点击insert Block 添加快,双击Block 设置循环次数。
将我们的查询操作与插入操纵分别存放在两个迭代块(block)中

我们还可以设置迭代之间的间隔,run-time setting 的pacing

场景三 :
这个场景跟用户操作比例有关系业务有关,一个网站,在线用户中,有80% 用户发表文章,20%的用户上传相片。
那么,我可以分别录制两个脚本,第一脚本,用户操作发表文章;第二个脚本,用户操作上传相片。
将两个脚本导入Controller 控制器中。

注意勾选 use the percentage mode to distribute the vusers among the scrpts ,不然无法分配脚本用户比例。
我们可以为脚本分配不同的用户比例来运行。

----------------------------------------
这里只是提供一个思路,我们可以根据这些设置(或叫技巧)结合我们的业务需求来进行脚本与场景设计。
LoadRunner 技巧之 脚本设计的更多相关文章
- LoadRunner脚本设计、场景设计和结果分析
本次笔记主要记录LoadRunner脚本设计.场景设计和结果分析 1. 脚本设计 录制模式 手工模式:插入步骤.手动编写 1.1 脚本增强: ...
- JMeter转制LoadRunner HTTP协议脚本的小技巧
对于Http协议的请求,除了手工编写脚本外,JMeter还提供了录制浏览器操作的功能,甚是方便.那如果手头有一堆HTTP协议的LoadRunner脚本,能不能比较快速的转制成JMeter脚本呢?其实也 ...
- LoadRunner 技巧之 思考时间设置
LoadRunner 技巧之 思考时间设置 用户访问某个网站或软件,一般不会不停地做个各种操作,例如一次查询,用户需要时间查看查询的结果是否是自己想要的.例如一次订单提交,用户需要时间核对自己填写的信 ...
- LoadRunner 技巧之协议分析
LoadRunner 技巧之协议分析 在做性能测试的时候,协议分析是困扰初学者的难题,选择错误的协议会导致Virtual User Generator 录制不到脚本:或录制的脚本不完整,有些应用可能需 ...
- LoadRunner 技巧之 检查点
LoadRunner 技巧之 检查点 判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTTP状态为 200 OK ,那么VuGen 就认为脚本正确地运行了,并且是运行通过的.在绝 ...
- LoadRunner 技巧之 自动关联
LoadRunner 技巧之 自动关联 这一节讲loadunner 关联的问题,其实这个东西理解起来简单,但说起来比较麻烦. 关联的原理: ...
- LoadRunner 技巧之 集合点设置
LoadRunner 技巧之 集合点设置 Loadrunner 技巧已经整理4篇了,你个一定疑问,这些知识点,网上随处可见.确实,由于长时间没有使用这个工具,造成我的一些概念开始在大脑中模糊,我只是用 ...
- Loadrunner开发测试脚本
Loadrunner开发测试脚本 开发测试脚本可以通过录制,也可以手动开发,建议能录制的尽量录制,省时省力,不能录制的只能费力自己开发了,具体看项目情况来决定. 使用Loadrunner开发脚本过程中 ...
- LoadRunner下载文件脚本
LoadRunner下载文件脚本 在看普泽关于pezybase的测试报告的时候,发现里面有用到jmeter(http协议)并发测试下载文件,考虑到后面可能需要在公司pezybase的并发下载,把之前 ...
随机推荐
- POJ - 2689 Prime Distance (区间筛)
题意:求[L,R]中差值最小和最大的相邻素数(区间长度不超过1e6). 由于非素数$n$必然能被一个不超过$\sqrt n$的素数筛掉,因此首先筛出$[1,\sqrt R]$中的全部素数,然后用这些素 ...
- 【POJ2376】Cleaning Shifts
题目大意:区间最小覆盖问题. 题解:本身是一道贪心水题,但是细节还是比较多的,记录一下. 由于每个奶牛对答案的贡献是一样的,肯定要选择在满足条件的基础上能够拓展最多的那个奶牛.为了满足条件,对区间左端 ...
- JAVA笔记2-面向对象与内存解析
1.java中的变量先声明.再赋值.再使用.(局部变量必须初始化,成员变量默认初始化) 2.基本类型之外的所有类型都是引用类型.基本类型占一块内存,引用类型占两块(所有new出来的东西装在堆内存,因为 ...
- 【JZOJ5430】【NOIP2017提高A组集训10.27】图
题目 有一个n个点的无向图,给出m条边,每条边的信息形如\(<x,y,c,r>\) 给出q组询问形如\(<u,v,l,r>\) 接下来解释询问以及边的意义 询问表示,一开始你在 ...
- 【C#-读取XML文件】XMLReader读取XML文档
使用 XmlReader.Create("文件路径") 加载xml文件 XmlReader使用流的方式来读取. //使用XMLReader读取XML数据 XmlReader ...
- Python CGI编程Ⅷ
通过CGI程序传递checkbox数据 checkbox用于提交一个或者多个选项数据,HTML代码如下: 以下为 checkbox.py 文件的代码: 修改 checkbox.py 权限: 通过CGI ...
- [深度学习] 各种下载深度学习数据集方法(In python)
一.使用urllib下载cifar-10数据集,并读取再存为图片(TensorFlow v1.14.0) # -*- coding:utf-8 -*- __author__ = 'Leo.Z' imp ...
- 盒子模型的overflow属性,border属性,padding与margin属性
今天要写的是CSS布局—盒子模型 首先说一下CSS的整体布局: 它包括容器(container),页眉(header),导航条(navbar),页面主要内容(main),菜单(menu),主要内容(c ...
- layer 1.8.5 引用样式失效
在layer.min.js里,默认引用的官网的样式,目前,网址失效.所以使用本地的样式即可. 将e后面的网址去除,即使用本地的样式.
- Max Sum Plus Plus(最大m字段和,优化)
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description Now I t ...