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

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)