【涨薪技术】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--->......---&…...

构建系统发育树简述
1. 要点 系统发育树代表了关于一组生物之间的进化关系的假设。可以使用物种或其他群体的形态学(体型)、生化、行为或分子特征来构建系统发育树。在构建树时,我们根据共享的派生特征(不同于该组祖先的特征)将物种组织成…...

这款 Python 调试神器推荐收藏
大家好,对于每个程序开发者来说,调试几乎是必备技能。 代码写到一半卡住了,不知道这个函数执行完的返回结果是怎样的?调试一下看看 代码运行到一半报错了,什么情况?怎么跟预期的不一样?调试一…...

金三银四吃透这份微服务笔记,面试保准涨10K+
很多人对于微服务技术也都有着一些疑虑,比如: 微服务这技术虽然面试的时候总有人提,但作为一个开发,是不是和我关系不大?那不都是架构师的事吗?微服务不都是大厂在玩吗?我们这个业务体量用得着…...

构建matter over Thread的演示系统-efr32
文章目录1. 简介2. 构建测试系统2.1设置 Matter Hub(Raspberry Pi)2.2 烧录Open Thread RCP固件2.3 烧录待测试的matter设备3. 配网和测试:3.1 使用mattertool建立Thread网络3.2 使用mattertool配置设备入网3.3 使用mattertool控制matter设备3.4 查看节点的Node ID等…...

【一天一门编程语言】Matlab 语言程序设计极简教程
Matlab 语言程序设计极简教程 用 markdown 格式输出答案。 不少于3000字。细分到2级目录。 目录 Matlab 语言程序设计极简教程 简介Matlab 工作空间Matlab 基本数据类型Matlab 语句和表达式Matlab 函数和程序Matlab 图形界面程序设计Matlab 应用实例 简介 Matlab是一种编…...

看似平平无奇的00后,居然一跃上岸字节,表示真的卷不过......
又到了一年一度的求职旺季金!三!银!四!在找工作的时候都必须要经历面试这个环节。在这里我想分享一下自己上岸字节的面试经验,过程还挺曲折的,但是还好成功上岸了。大家可以参考一下! 0821测评 …...

BZOJ2142 礼物
题目描述 一年一度的圣诞节快要来到了。每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物。不同的人物在小E 心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多。小E从商店中购买了n件礼物,打算送给m个人 &…...

MySQL高级第一讲
目录 一、MySQL高级01 1.1 索引 1.1.1 索引概述 1.1.2 索引特点 1.1.3 索引结构 1.1.4 BTREE结构(B树) 1.1.5 BTREE结构(B树) 1.1.6 索引分类 1.1.7 索引语法 1.1.8 索引设计原则 1.2 视图 1.2.1 视图概述 1.2.2 创建或修改视图 1.3 存储过程和函数 1.3.1 存储过…...

前端面试常用内容——基础积累
1.清除浮动的方式有哪些? 高度塌陷:当所有的子元素浮动的时候,且父元素没有设置高度,这时候父元素就会产生高度塌陷。 清除浮动的方式: 1.1 给父元素单独定义高度 优点: 快速简单,代码少 缺…...

跟着《代码随想录》刷题(三)——哈希表
3.1 哈希表理论基础 哈希表理论基础 3.2 有效的字母异位词 242.有效的字母异位词 C bool isAnagram(char * s, char * t){int array[26] {0};int i 0;while (s[i]) {// 并不需要记住字符的ASCII码,只需要求出一个相对数值就可以了array[s[i] - a];i;}i 0;whi…...