【涨薪技术】0到1学会性能测试 —— 参数化关联
前言
上一次推文我们分享了性能测试工作原理、事务、检查点!今天给大家带来性能测试参数化,检查点知识!后续文章都会系统分享干货,带大家从0到1学会性能测试,另外还有教程等同步资料,文末免费获取~
01、性能测试参数化
什么情况下需要参数化
通常以下情况必须参数化:
1.唯一数约束
如果在数据库对某个字段有唯一的约束,那么这种情况下必须参数化;
2.日期约束
如果涉及一些日期方面的约束,过期之后,业务会失败,那么这种情况一定得参数化;
3.缓存约束
在做检索时,如果每次检索出来的内容是一至的,那么数据库不会到硬盘去取数据,只会在缓存取数据,这个时select查询时间不是真实的查询时间,这种情况下一定得参数化;
4.数据约束
如果发送的请求,有一部分要求必须不同,这种情况必须参数化;
02、参数化步骤
1.参数化类型
参数化类型有很多种,但一般我们只用文件参数化的方式;
2.文件
表示参数所存储的文件位置,如果参数比较多时,我们会对参数进行合并;
3.列的选择
选择列有两种方式:一是按列名来选择;二是按列号来选择;
4.update value on更新值
更新值有三个选项:每次迭代更新、每次使用时更新、一直使用某个数;
每次迭代时更新数据:在同一迭代中,不管某参数使用到多少次,都只使用一个参数
每次使用时更新数据:是指某个参数只使用到就更新数据,不管是不是在同一次迭代中,即使在同一迭代某个 参数如何使用到多次,我们也要更新新的数据;
5.select next row选择下一行数据
如何选择下一数据有几种方式:顺序选择、随机选择、唯一数、与某参数相同;
顺序选择:是指按顺序的从文件中读取数据来使用;
随机选择:是指在文件中随机选择一个数据来使用;
唯一数:是指每个虚拟用户只能使用某部分的数据,例如设置块大为10;
那么表示每个虚拟用户只能使用到10个数据;
第一个虚拟用户只能使用到1-10条数据;
第二个虚拟用户只能使用到11-20条数据;
以此类推
以某行相同:是指该参考选择的策略与另外一个参数选择的策略一至,如A与B行选择相同,那么是指B选择哪行的数据,A就必须也选择该行数据进行执行。
03、数据库参数化
数据库参数化的步骤如下:
1、在控制面板->数据管理中创建数据源
2、在参数列表中单击“data wizard”按钮
3、在弹出的数据查询向导对话框中,选择数据查询方式:
一是:使用Microsoft query模块来查询;
二是:使用sql语句来查询;
4、选择数据源
5、输入查询的SQL语句
性能测试关联技术
为什么需要关联
1、发送请求需要带一个类似ID号的内容,这个ID号是由服务器返回给客户端的
2、这个ID是一个动态,每次发送情况这个值都会发现改变。
如果出现以上特征时,一般这个业务都是需要关联的。
关联的原理
由于服务器返回给客户端的值是一个变化的值,所以我们不可能直接得到这串值,这样不可能直接取到我们需要的那串变化的值。
但我们可以能从服务器返回给客户端的所有的值来去匹配我们要的值,正常情况下服务器返回给客户的内容都在response body中,简单说这些返回的内容就是一串字符串,但是返回的字符串不可能所有的内容都是变化,只有很少数部分内容是变化。
虽然我们不可能直接取到变化的值的内容,但是可以通过找到变化值所对应的左右边界值来得到变化的值,即固定左边的字符串容和右边的字符串内容,然后将符合左右边界规则的字符串的值取出来。取出来之后将这个值存放在一个变量中。
再将这个变量放到请求中来即可,原来录制代码时这是固定才导致请求不成功,现在换一个变量,就可以解决 这个问题。也就说关联的核心原理就是找到变化值的左右边界内容。
关联的左右边界值
通常查找左右边界值的步骤如下:
1、录制两个操作完全一至的脚本
2、使用wdiff工具比较这个两个脚本
3、找到需要关联的值
4、到所有请求的response body中找到需要关联的值所在的BODY内容
5、通过这个返回的response body中的值来确定需要关联值的左右边界值
6、在录制设置对话框中创建规则,LoadRunner关联规则有两种:
一是:内置关联规则;二是:自定义关联规则(常用);
7、重新录制脚本,录制完成后,LoadRunner会对脚本自动的进行关联
关联函数
关联函数的语法:
int web_reg_save_param( const char *ParamName, <List of Attributes>, LAST );
参数说明:
ParamName:参数名
LB:表示左边界值,需要匹配内容的左边界值,如果LB的值不设置,那么说明匹配的从左边第一个字符开始,
直到符合右边界值为止。
如果需要对左边界进行更精准的匹配,那么左边界还有以下一些参数可以设置:
--->/IC:不区分大小写
--->/BIN:表示在指定的二进制数进行匹配
--->/DIG:表示使用"#"做通配符,匹配0-9的任意一个数
--->/ALNUM<case>:表示匹配一个字符,可以是数字、大写字母、小写字母
RB:表示右边界值,设置的方法与LB一至,如果RB的值不设置,那么说明匹配的内容从左边界值开始,直到
右边最后一个字符。
ORD:表示选择第几次符合左右边界值规则的值因为有可能会出现多个符合左右边界值的,默认值为1,表示第
一个符合这个左右边界值的数据。如果设置为All,那么会将所有符合左右边界值的数据保存,保存一个数组
中。
SaveLen:表示在匹配的数据中,取一个子符串,字符串长度SaveLen,如果不设置长度就是取所有的内容,
从第几个字符开始取是由saveoffset来决定。
SaveOffset:表示偏移量,是指从第多少个字符开始取值。默认值为零,表示从第一个字符开始取。
关联函数的使用
第一种写法:
int irand;
char flightnum[10],flightele[10];
....
srand(time(NULL));
irand = rand() % atoi(lr_eval_string("{outboundFlight_count}")) + 1;
sprintf(flightnum,"{outboundFlight_%d}",irand);
lr_save_string(lr_eval_string(flightnum),"flightele");
第二种写法:
int irand;
char *flightnum,*flightele;
....
srand(time(NULL));
irand = rand() % atoi(lr_eval_string("{outboundFlight_count}")) + 1;
flightnum = lr_paramarr_idx("outboundFlight", irand);
lr_save_string(lr_eval_string(flightnum),"flightele");
关联与参数化的区别
关联与参数化的区别如下:
1、关联的内容是由服务器发送给客户端的
2、参数化是客户端提交给服务器的
3、关联的值是动态的值,是不确定
4、参数化的值是确定,是我们自己设置好
绵薄之力【资源分享】
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】
这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源免费分享~
相关文章:

【涨薪技术】0到1学会性能测试 —— 参数化关联
前言 上一次推文我们分享了性能测试工作原理、事务、检查点!今天给大家带来性能测试参数化,检查点知识!后续文章都会系统分享干货,带大家从0到1学会性能测试,另外还有教程等同步资料,文末免费获取~ 01、性…...

go进阶(2) -深入理解Channel实现原理
Go的并发模型已经在https://guisu.blog.csdn.net/article/details/129107148 详细说明。 1、channel使用详解 1、channel概述 Go的CSP并发模型,是通过goroutine和channel来实现的。 channel是Go语言中各个并发结构体(goroutine)之前的通信机制。 通俗的讲…...

数组(二)-- LeetCode[303][304] 区域和检索 - 数组不可变
1 区域和检索 - 数组不可变 1.1 题目描述 题目链接:https://leetcode.cn/problems/range-sum-query-immutable/ 1.2 思路分析 最朴素的想法是存储数组 nums 的值,每次调用 sumRange 时,通过循环的方法计算数组 nums 从下标 iii 到下标 jjj …...

22-基于分时电价条件下家庭能量管理策略研究MATLAB程序
参考文献:《基于分时电价和蓄电池实时控制策略的家庭能量系统优化》参考部分模型《计及舒适度的家庭能量管理系统优化控制策略》参考部分模型主要内容:主要做的是家庭能量管理模型,首先构建了电动汽车、空调、热水器以及烘干机等若干家庭用户…...

“XXX.app 已损坏,打不开。您应该将它移到废纸篓”,Mac应用程序无法打开或文件损坏的处理方法(2)
1. 检查状态 在sip系统完整性关闭前,我们先检查是否启用了SIP系统完整性保护。打开终端输入以下命令【csrutil status】并回车: 你会看到以下信息中的一个,用来指示SIP状态。已关闭 disabled: System Integrity Protection status: disabl…...

flask入门-3.Flask操作数据库
3. Flask操作数据库 1. 连接数据库 首先下载 MySQL数据库 其次下载对应的包: pip install pymysql pip install flask-sqlalchemy在 app.py 中进行连接测试 from flask import Flask, request, render_template from flask_sqlalchemy import SQLAlchemyhostname "1…...

STM32 使用microros与ROS2通信
本文主要介绍如何在STM32中使用microros与ROS2进行通信,在ROS1中标准的库是rosserial,在ROS2中则是microros,目前网上的资料也有一部分了,但是都没有提供完整可验证的demo,本文将根据提供的demo一步步给大家进行演示。1、首先如果你用的不是S…...
51单片机入门 - 测试:SDCC / Keil C51 会让没有调用的函数参与编译吗?
Small Device C Compiler(SDCC)是一款免费 C 编译器,适用于 8 位微控制器。 不想看测试过程的话可以直接划到最下面看结论:) 关于软硬件环境的信息: Windows 10STC89C52RCSDCC (构建HEX文件&…...

【计算机网络】计算机网络
目录一、概述计算机网络体系结构二、应用层DNS应用文件传输应用DHCP 应用电子邮件应用Web应用当访问一个网页的时候,都会发生什么三、传输层UDP 和 TCP 的特点UDP 首部格式TCP 首部格式TCP 的三次握手TCP 的四次挥手TCP 流量控制TCP 拥塞控制三、网络层IP 数据报格式…...

【java web篇】项目管理构建工具Maven简介以及安装配置
📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言Ὅ…...

springboot笔记
微服务架构 微服务是一种架构风格,开发构建应用的时候把应用的业务构建成一个个的小服务(这就类似于把我们的应用程序构建成了一个个小小的盒子,它们在一个大的容器中运行,这种一个个的小盒子我们把它叫做服务)&#…...

【多线程与高并发】- 浅谈volatile
浅谈volatile简介JMM概述volatile的特性1、可见性举个例子总结2、无法保证原子性举个例子分析使用volatile对原子性测试使用锁的机制总结3、禁止指令重排什么是指令重排序重排序怎么提高执行速度重排序的问题所在volatile禁止指令重排序内存屏障(Memory Barrier)作用volatile内…...

avro格式详解
【Avro介绍】Apache Avro是hadoop中的一个子项目,也是一个数据序列化系统,其数据最终以二进制格式,采用行式存储的方式进行存储。Avro提供了:丰富的数据结构可压缩、快速的二进制数据格式一个用来存储持久化数据的容器文件远程过程…...

【涨薪技术】0到1学会性能测试 —— LR录制回放事务检查点
前言 上一次推文我们分享了性能测试分类和应用领域,今天带大家学习性能测试工作原理、事务、检查点!后续文章都会系统分享干货,带大家从0到1学会性能测试,另外还有教程等同步资料,文末免费获取~ 01、LR工作原理 通常…...
卡尔曼滤波原理及代码实战
目录简介1.原理介绍场景假设(1).下一时刻的状态(2).增加系统的内部控制(3).考虑运动系统外部的影响(4).后验估计:预测结果与观测结果的融合卡尔曼增益K2.卡尔曼滤波计算过程(1).预测阶段(先验估计阶段)(2).更新阶段(后验估计阶段&…...

Jmeter使用教程
目录一,简介二,Jmeter安装1,下载2,安装三,创建测试1,创建线程组2,创建HTTP请求默认值3,创建HTTP请求4,添加HTTP请求头5,添加断言6,添加查看结果树…...

论文笔记|固定效应的解释和使用
DeHaan E. Using and interpreting fixed effects models[J]. Available at SSRN 3699777, 2021. 虽然固定效应在金融经济学研究中无处不在,但许多研究人员对作用的了解有限。这篇论文解释了固定效应如何消除遗漏变量偏差并影响标准误差,并讨论了使用固…...

数据集市与数据仓库的区别
数据仓库是企业级的,能为整个企业各个部门的运作提供决策支持;而数据集市则是部门级的,一般只能为某个局部范围内的管理人员服务,因此也称之为部门级数据仓库。 1、两种数据集市结构 数据集市按数据的来源分为以下两种 &#x…...

Golang学习Day3
😋 大家好,我是YAy_17,是一枚爱好网安的小白。 本人水平有限,欢迎各位师傅指点,欢迎关注 😁,一起学习 💗 ,一起进步 ⭐ 。 ⭐ 此后如竟没有炬火,我便是唯一的…...

Python并发编程-事件驱动模型
一、事件驱动模型介绍 1、传统的编程模式 例如:线性模式大致流程 开始--->代码块A--->代码块B--->代码块C--->代码块D--->......---&…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...

Linux入门课的思维导图
耗时两周,终于把慕课网上的Linux的基础入门课实操、总结完了! 第一次以Blog的形式做学习记录,过程很有意思,但也很耗时。 课程时长5h,涉及到很多专有名词,要去逐个查找,以前接触过的概念因为时…...