【涨薪技术】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、参数化的值是确定,是我们自己设置好

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  1. 文档获取方式:

  2. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

类和对象-1

文章目录 面向过程和面向对象的概念类的引入访问限定符类的大小this指针 面向过程和面向对象的概念 面向过程是一种按照步骤顺序执行的编程方式&#xff0c;而面向对象则是以对象为中心&#xff0c;将数据和操作封装在一起。在面向对象编程中&#xff0c;可以通过定义类和对象来…

stm32-模拟数字转化器ADC

接线图&#xff1a; #include "stm32f10x.h" // Device header//1: 开启RCC时钟&#xff0c;包括ADC和GPIO的时钟//2&#xff1a;配置GPIO将GPIO配置为模拟输入模式//3&#xff1a;配置多路开关将左边的通道接入到规则组中//4&#xff1a;配置ADC转…

zookeeper安装配置

zookeeper是什么 ZooKeeper是一个分布式的&#xff0c; 开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是 ​​​​​​​Hadoop和Hbase的重要组件。它是一个为​​​​​​​分布式应用提供一致性服务的软件&#xff0c;提供的功能…

redis学习-Set集合类型相关命令及特殊情况分析

目录 1. sadd key value1 value2 ... 2. smembers key 3. sismember key value 4. scard key 5. srem key value1 value2 ... 6. srandmember key num 7. spop key num 8. smove key1 key2 value 9. sdiff key1 key2 key3 ... 10. sinter key1 key2 ... 11. sunion key1 key2 .…

mybatis缓存(学习笔记17)

1、什么是缓存&#xff1a;存在内存中的临时数据 将用户经常查询的数据放在缓存&#xff08;内存&#xff09;中&#xff0c;用户去查询数据就不用从磁盘&#xff08;关系数据库数据文件&#xff09;查询&#xff0c;从缓存中查询&#xff0c;从而提高查询效率&#xff0c;解决…

分析云星空数据用奥威-金蝶BI,快且直观

财务指标计算难&#xff0c;数量太大&#xff0c;报表需求太多&#xff0c;报表根本做不完&#xff1f;如果云星空用户遇到这种情况&#xff0c;建议用奥威-金蝶BI方案。预设分析模型和BI报表&#xff0c;注册、下载并执行方案&#xff0c;立得200多张BI数据可视化分析报表&…

MS16_016 漏洞利用与安全加固

文章目录 环境说明1 MS16_016 简介2 MS16_016 复现过程3 MS16_016 安全加固 环境说明 渗透机操作系统&#xff1a;kali-linux-2024.1-installer-amd64漏洞复现操作系&#xff1a;cn_windows_7_professional_with_sp1_x64_dvd_u_677031 1 MS16_016 简介 MS16_016 漏洞产生的原因…

【题目】【网络系统管理】2022年甘肃省职业院校技能大赛-网络构建-试卷

极安云科专注职业教育技能竞赛培训4年&#xff0c;包含信息安全管理与评估、网络系统管理、网络搭建等多个赛项及各大CTF模块培训学习服务。本团队基于赛项知识点&#xff0c;提供完整全面的系统性理论教学与技能培训&#xff0c;成立至今持续优化教学资源与讲师结构&#xff0…

代码随想录刷题day27|组合总和II组合总和II分割回文串

文章目录 day27学习内容一、组合总和-所选数字可重复1.1、代码-正确写法1.1.1、为什么递归取的是i而不是i1呢&#xff1f; 二、组合总和II-所选数字不可重复2.1、和39题有什么不同2.2、思路2.2.1、初始化2.2.2、主要步骤2.2.3、回溯函数 backTracking 2.3、正确写法12.3.1、为什…

NB-IoT模块

目录 一. NB-IoT模块实物图 二. BC20/NB-IoT模块产品规格 三. 指令顺序 1. AT判断BC20模组是否正常 2. ATE0返回OK&#xff0c;已经返回回显 3. ATCSQ 4. AT_CEREG? 5. ATCGATT? 6. ATCGATT? 四. OneNet 连接 1. AT 查看 NB(当前NB)&#xff0c;云平台根据这两个…

【全网最详细】ComfyUI下,Insightface安装指南-聚梦小课堂

&#x1f96e;背景 ComfyUI下使用IP-adapter下的faceID模型的时候&#xff0c;大家可能会遇到如下错误&#xff1a; Error occurred when executing InsightFaceLoader: No module named insightface File "F:\ComfyUI-aki\execution.py", line 151, in recursive_…

寻找可能认识的人

给一个命名为&#xff1a;friend.txt的文件 其中每一行中给出两个名字&#xff0c;中间用空格分开。&#xff08;下图为文件内容&#xff09; 题目&#xff1a;《查找出可能认识的人 》 代码如下&#xff1a; RelationMapper&#xff1a; package com.fesco.friend;import or…

【mysql】聚簇索引和非聚簇索引(B树和B+树)

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: mysql 目录 一、索引分类 二、索引的数据结构 2.1 B树&#xff1a;改造二叉树 2.2 B树&#xff1a;改造B树 三、Mysql索引实现—InnoDB引擎 3.1 主键索引&#xff08;聚簇索引&#xff09; 3.2 …

在Python中执行分位数回归

线性回归被定义为根据给定的变量集构建因变量和自变量之间关系的统计方法。在执行线性回归时&#xff0c;我们对计算响应变量的平均值感到好奇。相反&#xff0c;我们可以使用称为分位数回归的机制来计算或估计响应值的分位数&#xff08;百分位数&#xff09;值。例如&#xf…

每日OJ题_牛客HJ12 字符串反转(IO型OJ)

目录 牛客HJ12 字符串反转 解析代码 牛客HJ12 字符串反转 字符串反转_牛客题霸_牛客网 解析代码 #include <iostream> using namespace std; int main() {string str "";cin >> str;int left 0, right str.size() - 1;while (left < right){ch…

Python——字典

一、字典特性介绍 字典在 Python 中极为重要&#xff0c;是属于映射类型的数据结构。 字典有⼀对⼉⼤括号组成 {} , 字典内的元素都是成对⼉出现的 {"a":1} , 他们⽤英⽂的冒号( : )隔开, 左边叫做键(key),右边的叫值(value), 通常叫做键值对⼉。 每个元素⽤英⽂的逗…

Java项目:62 基于ssm的校园驿站管理系统+jsp

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 管理员管理快递仓库信息&#xff0c;管理待发货信息&#xff0c;管理已收快递&#xff0c;管理物流以及留言信息&#xff0c;管理员工和用户资…

PSCA复位控制集成之复位管理

电源模式转换 进入任何使域中的组件变为非功能性的电源模式的关键要求是确保静止状态。与其他电源域的所有未完成交互&#xff0c;如总线事务&#xff0c;必须已经完成&#xff0c;并且组件必须保持静止状态&#xff0c;而不管其边界的活动如何。 在支持的情况下&#xff0c;…

新克隆的项目对IDEA配置进行哪些配置(超详细)

大家有没有遇到和我一样的这种情况&#xff0c;每次克隆一个新新项目&#xff0c;代码都是飘红&#xff0c;依赖找不到&#xff0c;项目没法运行。然后就是对idea一通设置&#xff0c;我基本都是胡乱搞一通&#xff0c;也不知道哪些设置起作用了&#xff0c;反正是最后搞半天项…

挖到宝了!这些内容管理平台是企业的最佳选择

内容管理系统&#xff0c;不再只是专业人士的语言&#xff0c;而是已经突破到普通人的视野中。简单易懂的解释就是&#xff0c;内容管理平台就像是一个大货仓&#xff0c;你可以在这里存储、整理和搜索你的所有资料。那么今天&#xff0c;我要向你推荐的是三款强大的内容管理平…