当前位置: 首页 > news >正文

jmeter的脚本增强之参数化

           jmeter作为一款开源的测试工具,功能广泛,深受测试同胞们的喜爱,这次来讲讲关于如何参数化及其方式。那为什么要进行一个参数化呢,如做压测时,要有大量的数据来模拟用户的真实场景,像登录页面操作,系统是不允许相同的用户同时登录,那这就需要对用户名进行一个参数化;或者是订票系统,每个用户在订票时时间都是不一样的,那为了达到真实的场景,就需要对时间进行一个参数化。参数化对于大量的重复的批量的数据保存一个变量,从而每次执行时,只需读取这个变量即可

           jmeter有三大种参数化方式①读取文本,②程序生成,③从数据库里读取

 一读取文本:

         读取文本呢又有三种方法,这简直了。在桌面上新建一个文本文档,里面输入要参数化的数据 (前提是都有在数据库里),这些是用户名跟密码,那为了工作方便,密码我都是设一样的

 

第一种方法:打开jmeter,点击选项—函数助手对话框,这列表开头是按abc顺序排列的,选择—CSVRead

然后将你新建的文本目录地址复制到名称对应的值里

   

把拷贝下来的字符串放在你要变量的位置上,那我这边是对用户名进行的参数化

我在线程组里添加四个线程,运行一下看下察看结果树

 参数化成功 

 

第二种方法:在测试计划右键添加—配置文件—csv数据文件设置

 

 

 在CSV数据文件页面设置一下:

 

 

 

第三种方法:在测试计划右键添加—配置文件—bzm-Random CSV Data Set Config

  我用的jmeter是4.0版本,可能有一些同学没有这个,或者是这个插件,打开jmeter目录,在这目录下F:\testing\tour\apache-jmeter-4.0\lib\ext加一个jar包文件                        jmeter-plugins-manager-0.20.jar  ,这个插件如果有同学需要可以网上下载也可以找我拿,然后重启jmeter,这个图标就出现了,然后点击这个图标搜索安装Random Csv Data Set ,安装好后再重启一下jmeter

这个参数化方式是官方新推出的功能,好使,能够随机提取

 

二程序生成:

      程序生成也是有很多种,这边来列几个常用的。点击选项—函数助手对话框

        1、__machineIP:读取你当前的电脑IP地址

        2、__machineName:读取你的机器名字

        3、__Random:随机生成一个数字,如设最小值1,最大值100,会随机生成1~100间的数字,可用于年龄,手机号,不适用于注册

        4、__RandomDate:随机生成日期,日期:yyyy-MM-dd,key可用于订票,下订单,出生年月日等等 

        5、__RandomString:随机生成字符串,如英文名,性别等

        6、__time:生成实时时间,yyyy-MM-dd HH:mm:ss(固定格式)

 

 这边来搞一搞如何来批量注册用户名,我们可以录制注册操作的脚本或是使用fiddle抓包工具来获取,那在注册那边参数改一下

 

 关于关联下篇会继续更新

在线程组右键添加-配置文件—计时器

 

在计时器页面设置一下

由这个方法可以很容易的快速制造大量数据

 

三数据库读取:

    首先连接数据库,关于连接数据库上篇就有详细唠嗑过,先在测试计划页面里添加一个驱动

      

 

在测试计划右键添加如下:

 

 

然后在JDBC Connection 页面设置

 

然后继续在线程组右键添加—sampler—JDBC Requst,在这页面上呢写一个SQL语句,查询表里的所有用户名

 查询出来表里的所有用户名,把这些放入到name里

 

 

 线程组右键添加—逻辑控制—ForEach控制器,把每个用户迭代出来

 

 

应用场景,如果说你要看每个用户的个人信息,它的URL后都是username=tname(name表里的每一个用户)

那么直接在URL后加入参数化

 

线程组就只有一个线程,你点击运行后会一直运行,运行多少回呢,直到把name里的所有用户都运行完就会结束

 

 这三大种参数化方式就又唠嗑完了。。。。。

下篇唠唠关联等等

 

转载于:https://www.cnblogs.com/hearbeat/p/9409562.html

相关文章:

  • 关于有时候导入maven项目时候报错(有红色叹号,类中导入的包提示the import java.util cannot be resolve,)...
  • 性能优化中CPU、内存、磁盘IO、网络性能的依赖
  • leetcode485 python3 88ms 最大连续1的个数
  • logstash常用插件解析
  • Websocket(1)pom引入、嵌入spring
  • Docker 操作记录
  • CentOS7安装GO
  • dll和lib的关系(转)
  • Quest 公司的Shareplex 与 GoldenGate比较
  • WPF程序 双击exe自动申请“以管理员方式运行”权限
  • 块设备
  • CCPC-Wannafly Camp #4(部分解题报告)
  • HDU 6370(并查集)
  • 面试题16:数值的整数次方
  • 开启写博客之旅
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Apache Pulsar 2.1 重磅发布
  • ECS应用管理最佳实践
  • Material Design
  • mysql 5.6 原生Online DDL解析
  • mysql外键的使用
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring声明式事务管理之一:五大属性分析
  • vue脚手架vue-cli
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 读懂package.json -- 依赖管理
  • 工作手记之html2canvas使用概述
  • 蓝海存储开关机注意事项总结
  • gunicorn工作原理
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (笔试题)合法字符串
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (蓝桥杯每日一题)love
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (三分钟)速览传统边缘检测算子
  • (五)Python 垃圾回收机制
  • (转)德国人的记事本
  • .jks文件(JAVA KeyStore)
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net core Swagger 过滤部分Api
  • .Net Redis的秒杀Dome和异步执行
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .net项目IIS、VS 附加进程调试
  • :=
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @ConfigurationProperties注解对数据的自动封装
  • [383] 赎金信 js
  • [Android]使用Retrofit进行网络请求
  • [C# 基础知识系列]专题十六:Linq介绍
  • [C/C++]数据结构 堆的详解
  • [CSS3备忘] transform animation 等