共计 5498 个字符,预计需要花费 14 分钟才能阅读完成。
本系列文章 md 笔记(已分享)次要探讨性能测试相干常识。入门阶段:意识性能测试分类 -(负载测试、压力测试、并发测试、稳定性测试),罕用性能测试指标 -(吞吐量、并发数、响应工夫、点击数 …),性能测试工具抉择。性能脚本:1. LoadRunner 介绍,2. 脚本录制、运行、参数化,3. 关联、检查点、事务、集合点。性能场景:1. 场景分类、场景设计、场景运行策略,2. 资源监控、SLA、IP Wizard 利用。性能剖析:1. 摘要报告、事务图表、图表合并,2. 穿插后果、拐点剖析、Web 我的项目资源剖析。
全套笔记和代码自取移步 gitee 仓库:gitee 仓库获取残缺文档和代码
感兴趣的小伙伴能够自取哦,欢送大家点赞转发~
共 5 章,25 子模块
<center> 性能测试工具 -LoadRunner</center>
学习指标
1. 了解基于 VuGen 的脚本录制
2. 把握参数化的应用办法
3. 把握关联的应用办法
4. 把握检查点的应用办法
5. 把握事务的应用办法
6. 把握集合点的利用
<center>VuGen- 参数化 </center>
指标
- 了解参数化的应用场景
- 把握参数化的应用形式
一、什么是参数化
依据需要动静的获取数据的过程
二、为什么要参数化?
- 缩小反复代码
- 数据代码进行拆散,不便保护
需要 1
阐明:因为虚拟机运行速度起因,咱们应用 lr_output_message() 函数,来学习如何应用参数化
要求:输入 我要去北京;我要去上海;我要去广州;我要去深圳;
三、参数化操作
3.1 关上参数化菜单
选中要参数化的文本 -> 鼠标右键 -> Replace with a Parameter
或者
菜单 Insert -> New Parameter...
3.2 Replace with a Parameter 关上的窗口
1. Parameter name: 参数化援用名称(参数化时应用)2. Parameter type:File【举荐】3. Properties: 属性 - 点击此按钮,可间接设置参数化援用名称对应的值;【点击】提醒:1). 点击 OK;参数化援用名称具体的值,须要再次设置;
3.3 Properties 设置面板
1. Parameter type: 参数类型 File【重点】2. File: 参数保留的文件类型及地位,个别为 txt;【举荐】3. Add Row: 增加行,在以后表格编辑数据;【可选】4. Edit with Notepad: 在记事本内编辑数据;【举荐】5. Select next row: 运行或迭代时对行的抉择形式
6. Update value on: 运行或迭代时对值的选取形式
提醒:1). 其中 5.Select next row 与 6.Update value on 为组合关系,不同组合成果不同,咱们独自来学习
需要 1 解决方案
- 创立指定门路及 txt 文本格式 如:C:\lr11\scripts\city.txt
- 应用 Edit with Notepad 编辑数据:北京、上海、广州、深圳
- 编写脚本
- 迭代次数 4
问题
lr_output_message(“str”): 函数为把 str 字符串输入到日志,但它本身并不能解析读取参数;
函数(设置参数、读取参数)
- lr_save_string()
- lr_eval_string()
1. lr_save_string()
把字符串保留到指定的参数中
格局:lr_save_string(“ 字符串 ”,” 参数名 ”)
示例:lr_save_string(“ 北京 ”,”city”);
2. lr_eval_string()
读取变量的值,并以 Char 类型返回;
格局:lr_eval_string(“{参数名}”);
示例:lr_eval_string(“{city}”);
提醒:1). 参数名称应用花括号 {} 包含
2). 参数应用双引号包含
需要 1 代码示例
Action()
{lr_output_message("我要去 %s",lr_eval_string("{NewParam}"));
return 0;
}
3.4 Select next row 与 Update value on
Select next row
读取参数文件行的形式
形式:
1. Sequential:程序,依照行的程序读取数据,如果迭代次数大于行数,再次从第一行开始读取
2. Random:随机,随机读取行
3. Unique:惟一,每次读取惟一行,不反复;4. Same line as xxx 取参数同行(须要两个以上参数,能力显示和应用)
留神:
应用 Unique 选项时会激活 When out of values:
1) Abort Vuser:停止虚构用户
2) Continue in a cyclic manner:以循环的形式持续
3) Continue with last value:持续应用最初一个值
Update value on
参数值更新的形式
形式:
1. Each iteration:每次迭代当前更新
2. Each occurrence:每次呈现参数时更新
3. Once:每呈现一个虚构用户 (线程) 更新一次
组合
- 行程序 + 每次迭代更新值 Sequential + Each iteration
- 行程序 + 每次参数呈现更新值 Sequential + Each occurrence
- 行程序 + 更新一次(单用户) Sequential + Once
阐明:
1. 组合咱们在这里就不穷举了,以行的程序配合值的 3 种更新形式做演示
2. 因为组合内含 occurrence,所以必须要两个 Action,咱们新增两个(Action1、Action2)两个代码雷同
代码
Action1()
{lr_output_message("我要去 %s",lr_eval_string("{NewParam}"));
return 0;
}
Action2()
{lr_output_message("我要去 %s",lr_eval_string("{NewParam}"));
return 0;
}
Sequential + Each iteration
行为程序,值为迭代更新一次;
预期:
1. 第一次迭代:Action1: 北京;Action2: 北京
2. 第二次迭代:Action1: 上海;Action2: 上海
3. 第三次迭代:Action1: 广州;Action2: 广州
4. 第四次迭代:Action1: 深圳;Action2: 深圳
Sequential + Each occurrence
行为程序,值为呈现一次更新一次
预期:
1. 第一次迭代:Action1: 北京;Action2: 上海
2. 第二次迭代:Action1: 广州;Action2: 深圳
3. 第三次迭代:Action1: 北京;Action2: 上海
4. 第四次迭代:Action1: 广州;Action2: 深圳
Sequential + Once
行为程序,值为单用户只更新一次
预期:
1. 第一次迭代:Action1: 北京;Action2: 北京
2. 第二次迭代:Action1: 北京;Action2: 北京
3. 第三次迭代:Action1: 北京;Action2: 北京
4. 第四次迭代:Action1: 北京;Action2: 北京
批量获取参数时,如果保障参数不反复?(扩大)
思路:增加工夫戳
阐明:web_save_timestamp_param("time_stamp",LAST) 为工夫戳函数,返回:1970 到当初的毫秒数;(time_stamp:参数为获取值后保留的参数名称,被援用时应用)
示例:
Action()
{web_save_timestamp_param("time_stamp",LAST);
lr_output_message("我要去 %s",lr_eval_string("{NewParam}_{time_stamp}"));
return 0;
}
其余罕用参数类型(理解)
parameter type:
1. Date/Time
2. Random Number
<center>VuGen- 关联 </center>
指标
- 了解关联的概念
- 把握关联函数的应用
- 理解 LR 主动关联的应用
一、为什么要学习关联?
1. 获取动静加载的数据,例如:Session ID(会话 ID)2. 测试的时候须要获取页面上指定的数据,留神是获取,而不是查找
阐明:Session ID:客户端与服务器交互时,服务器生成的一个惟一标识码;
(通过标识码服务器能够辨别屡次交互对象是否同一客户端,浏览器只有不敞开标识码就不变)
二、什么是关联(correlation)?
动静获取指定的数据,并把获取的数据通过参数化的形式在另一处援用
三、LoadRunner 罕用的关联形式
- 手动关联【举荐】
- 主动关联【理解】
3.1 手动关联【重点】
手动关联就是间接调用关联函数;
关联函数 web_reg_save_param()
1). 执行程序:LR 中函数内含 reg 为注册函数,注册函数是在下一个 Action Function 实现时执行。2). 函数地位:注册函数【必须】放到下一个 Action Function(要进行关联数据所在的函数)函数之前;3). 如果关联的参数值超过 256 个字符,须要先调用 web_set_max_html_param_len("1024") 扭转参数长度;
案例 1
应用 web_reg_save_param() 函数把红框选中内容关联给 Welcome 参数
案例 1 脚本
Action()
{
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
return 0;
}
案例 1 操作剖析
1. 在 web_url 函数之前插入关联函数 web_reg_save_param()
2. 调用 lr_eval_string() 来读取关联函数的参数援用名称,并通过 lr_output_message() 函数输入到日志
案例 1 操作施行
1) 插入 web_reg_save_param()办法
1. 在 web_url 函数之前空白行,点击鼠标右键
2. 抉择 Insert 菜单 -> New Step
2) 输出要查找的函数:
1). 图 1:输出要查找函数的关键词或全称
2). 图 2:找到匹配出的函数,双击或点击图 3
3). 图 3:选中图 2,点击图 3 进行选中函数参数设置
3) 设置函数参数
参数:
1). Parameter Name: 参数名称(被援用时应用)2). Left Boundary(LB): 左边界
3). Right Boundary(RB): 右边界
4). Not Found: 关联失败时,解决形式
5). Search in: 匹配搜寻响应代码范畴
留神:
单引号(')、双引号(")、反斜杠(\)、回车换行等须要转义字符,加上转义字符[\]
4) 如何查看页面元素响应代码?
- 通过 LR 查看响应代码
- 通过页面查看源代码
1). 通过 LR 查看【留神:必须是录制脚本 - 手动编写脚本没有快照】
提醒:
1. 构造为 Tree
2. url:为 WebTours
3. 页面为 /WebTours/home.html
2). 通过页面源代码查看 关联
地址:http://127.0.0.1:1080/WebTours/home.html 参数化并输入到日志
代码:
Action()
{
web_reg_save_param("Webcome",
"LB=</H1>\n",
"RB=\n"
"<br>",
"NotFound=ERROR",
"Search=All",
LAST);
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
lr_output_message("Webcome 值为:%s",lr_eval_string("{Webcome}"));
return 0;
}
3.2 主动关联【理解】
1. 主动关联 LoadRunner 提供两种形式:1). 录制时关联 - 在录制脚本的时候如果有合乎关联规定的就主动进行关联;留神:此种形式依赖于 LR 自带的规定或新建的自定义规定
2). 录制后关联 - 脚本录制实现并且运行完一次后,关上扫描工具,进扫描须要关联的数据进行关联;留神:① 利用扫描工具必须要先运行一遍脚本
② 扫描关联:很多时候 LR 扫描不到须要关联的信息(比方手写的脚本),所以个别不举荐应用;2. 主动关联调用的是关联函数 web_reg_save_param_ex();(web_reg_save_param_ex 与 web_reg_save_param 性能大致相同,它也能够应用正则表达式和过滤器)
1) 主动关联 - 启用主动关联设置
启动主动关联地位:工具菜单(Tool) -> Recording Option
2) 主动关联 - 扫描工具
- 启动:关上扫描工具 -Ctrl+F8 或者菜单栏(Vuser) -> Scan Script for Correlations
- 扫描:扫描之前先运行一遍脚本
- 关联:图中个第二步 Correlation Results 内进行关联;
主动关联总结
1. 主动关联 - 录制时关联:采纳自带或设定的规定在录制脚本的时候主动关联
2. 主动关联 - 录制后关联:前后运行两次,搜寻两次不同之处为须要关联的数据,进行确认关联
3. 主动关联无论哪种形式,都是采纳调用关联函数的办法,所以工具智能人更智能,因而举荐优先应用手动关联
未完待续,同学们请期待下一期
全套笔记和代码自取移步 gitee 仓库:gitee 仓库获取残缺文档和代码
感兴趣的小伙伴能够自取哦,欢送大家点赞转发~
正文完