Loadrunner:性能测试浅析关联函数web_reg_save_param()

2024-06-09 01:18

本文主要是介绍Loadrunner:性能测试浅析关联函数web_reg_save_param(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景:关联是性能测试中必不可少的技术点,即为了模拟真实场景而设计的,同样关联的接口测试亦是如此;首先介绍loadrunner工具的几个相关函数:大抵函数的参数部分,除了Ordinal不写就是默认Ordinal=1(取出第一个匹配的参数),写了Ordinal=All即为保存响应满足左右边界的所有参数,那此时{param_1}就不是一个正确的参数引用,而就是{param_1}字符串,下面来以web_reg_save_param_ex函数为例介绍:

web_reg_save_param("param_1",                                    "LB=class=\"",                                    "RB=\"",                                    "Ordinal=All",                                    LAST);// 正则表达式匹配动态参数
web_reg_save_param_regexp("ParamName=param_1","RegExp=class=\"(.*?)\"",               "Ordinal=All",                                      LAST);web_reg_save_param_ex("ParamName=param_1",               "LB/IC=class=\"",                                          "RB/IC=\"",                                          "Ordinal=All",                                          LAST);//代码中使用的变量必先申明
int i = 0;
char param_index[64];
web_reg_save_param_ex( "ParamName=goods_id_list",
"LB=goods_id\":\"",
"RB=\",\"miniapp_name",
"NotFound=warning",         
"Ordinal=All",
SEARCH_FILTERS,
LAST);         web_custom_request(){ //对关联参数相关的操作,需要放到包含该关联数据的请求函数之后         }for(i=1;i<=atoi(lr_eval_string("{goods_id_count}"));i++){
sprintf(param_index, "goods_id_%d}", i);
lr_message("goods_id %d:%s",i,lr_eval_string(param_index));}/* * atoi(lr_eval_string("{goods_id_count}")) 作用是获取匹配了多少个参数 sprintf(param_index, "{goods_id_%d}", i);是格式输出,并把格式中的值保存在变量param_index中,实际param_index 保存的值分别为:goods_id_1、goods_id_2 等等 */
//同上面for循环的效果         
int goods_count;
goods_count=atoi(lr_eval_string("{goods_id_count}"));         
i=1;         
char str[64];
while(i<=goods_count){ 
sprintf(str,"goods_id_%d}",i);
lr_save_string(lr_eval_string(str),"Value");
lr_message("goods_id_%d:%s",i,lr_eval_string(str));
i++;     
} 
//上面函数处理多个关联参数,尽数打印出来,但是要怎么随机取值呢,把上面字符串函数lr_eval_sting改成随机函数lr_paramarr_random("");示例(实际使用下面一个函数就可以了): lr_save_string(lr_paramarr_random("goods_id_list"), "goods_id_random");
lr_log_message("随机取值 %s",lr_eval_string("{goods_id_random}")); 
// lr_message("随机取值:%s",lr_eval_string("{goods_id_random}")); 
//对关联参数相关的操作,需要放到包含该关联数据的请求函数之后

2、上面的意图是通过关联函数,获取动态参数,再使用随机函数取值与下一个接口交互,用自带的机票订票系统来看效果:

Action(){web_set_max_html_param_len("12040");web_reg_save_param("userSession","LB=value=","RB=>","NotFound=ERROR","Search=Body","Ord=ALL",LAST);web_url("WebTours","URL=http://127.0.0.1:1080/WebTours/","Resource=0","RecContentType=text/html","Referer=","Snapshot=t1.inf","Mode=HTML",LAST);web_reg_find("Fail=NotFound","Search=Body","SaveCount=Success","Text=Welcome",LAST);web_custom_request( "Login.pl","URL=http://127.0.0.1:1080/WebTours/login.pl","Method=POST","Body=userSession={userSession}&username=jojo&password=bean&login.x=59&login.y=8&JSFormSubmit=off","Mode=HTML",LAST);lr_output_message("-----------------------token为:%s",lr_eval_string("{userSession}"));return 0;
}

3、web_reg_save_param()函数的Ord设置ALL,按F4设置log输出为Paramter subitution:

4、关联函数找到的参数userSession,就不再是可引用的变量,而是一个{userSession} 字符串,所以会报错检点失效;那么上面正确的值应该是{userSession_1},为了展示随机函数的使用效果;我们把脚本修改一下,设置循环5次就可以看效果:

// 加入一下代码:
lr_save_string(lr_paramarr_random("userSession"),"userSession_random");
lr_log_message("每次随机取值 %s",lr_eval_string("{userSession_random}")); 

5、F4设置run logic循环五次,这样看结果不直观,使用while循环看效果;

6、同上,关联函数都可以使用Ordinal参数,获取更多的参数,如果业务需要取自不同的数据关联,这很有效。 

这篇关于Loadrunner:性能测试浅析关联函数web_reg_save_param()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析