用Java创建JMeter变量 - 终极指南

了解如何在Java中创建不同类型的JMeter变量,不同变量类型的详细信息以及如何避免错误。

Apache JMeter?中编写负载或功能测试涉及使用不同类型的变量。变量有多种用途,例如,在以下情况下:

  • 正在测试的API或Web服务返回一个或多个值,并且必须将值数据与预期结果进行比较。
  • 正在测试的API或Web服务返回一个或多个值,并且必须在数据库中检查值数据。

因此,应用变量的知识和技能是使用JMeter的基础。本博文将解释当您需要在测试中使用Java代码时如何在JMeter中创建变量。

要使用Java语言创建变量,可以使用任何支持BeanShell的标准JMeter元素。在这篇博文中,我们将使用JMeter 3.2JSR223 Sampler元素,其中选择了Java(BeanShell 2.0b5 / BeanShell Engine 1.0),如下所示:

Java中的任何变量都必须具有数据类型。数据类型是确定可能值的范围,对这些值的操作以及这些值如何存储在计算机内存中的特性。否则,编译器将生成错误。

Java变量支持两种数据类型:简单(也称为原始)和引用数据。我们将涵盖两者。在下一篇博客文章中,我们将解释您可以使用哪些方法来处理这些变量。

当不需要指定数据类型时,JMeter允许使用非严格模式编写Java代码,或者在创建变量时使用严格模式编写Java代码(因为变量需要指定数据类型)。严格模式与在Java中创建和初始化变量的规则完全兼容。要启用严格模式,必须在脚本开头使用setStrictJava(true)命令:

有8种原始数据类型用于表示整数,小数和布尔值:int,short,long,byte,float,double,char,boolean。

具有整数数据类型的变量(int,short,long和byte)

整数类型是一种数据类型,用于没有小数部分的整数值。整数类型的数据包括以下类型:int,short,longbyte。这些类型允许我们表示正值和负值。

您可能会问为什么有这么多类型可用。为什么不能只创建一种类型?原因是当使用简单数据类型创建变量时,会消耗特定数量的计算机内存。因此,各种类型用于合理使用该存储器。

换句话说,如果占用计算机内存的4个字节的数据类型int实际上适合我们,并且我们使用占用8个字节的long类型,则计算机的内存使用效率低下。对于小型软件系统,这样的使用不会引起问题,但在大型软件系统中,这可能导致内存溢出和软件关闭。实际上,经常使用int数据类型。

下表显示了所需的内存量以及每种变量类型允许的值范围:

创建具有整数数据类型的变量的示例如下图所示:

这是示例代码:

setStrictJava (true);
int a = 2147483647;
short b = 32767;
long c = 9223372036854775807L;
byte d = 127;
log.info(a + " - It is int");
log.info(b + " - It is short");
log.info(c + " - It is long");
log.info(d + " - It is byte");

注意:当创建与该类型的变量在数值结束时,你必须指定大号。此功能与类型转换有关。

具有浮点类型的数字变量(浮点和双精度)

具有浮点类型的数字变量是具有整数和小数部分的变量。这些类型包括floatdoubledouble类型变量的精度是float类型的两倍。下表显示了所需的内存量和变量类型的允许值。

使用简单数据类型创建变量的示例如下图所示:

这是示例代码:

setStrictJava (true);
float a =3.4028234f;
float b =3.4028234F;
double c = 1.7976931348623157;
log.info(a + " - It is float");
log.info(b + " - It is float");
log.info(c + " - It is double");

注意:当创建与数值的最后一个float类型的变量,你必须指定?F?F。此功能与类型转换有关。

Char数据类型的变量(char)

具有char数据类型的变量用于以Unicode格式存储字符。这意味着您可以将变量分配给符号值和相应的Unicode数值。创建具有char类型的变量的示例如下图所示。

这是示例代码:

setStrictJava (true);
char a = ‘N‘;
char b = 78;
log.info(a + " - It is char");
log.info(b + " - It is not char");

使用IntelliJ IDEA中的Java语言创建具有Char类型的变量:

IntelliJ IDEA中的示例代码:

示例代码

public class Prim {
   public static void main(String[] args) {
       char a = ‘N‘;
       char b = 78;
       System.out.println(a);
       System.out.println(b);
   }
}

比较图像,您可以看到在JMeter中,您无法通过Unicode中的值创建char类型变量。Unicode是一种字符编码标准。无论程序如何,无论语言如何,本标准都可为任何角色提供唯一的代码,无论平台如何。

注意:创建char类型变量时,请将值放在单引号中。

布尔数据类型的变量(布尔值)

具有布尔数据类型的变量是布尔变量,其值为‘false‘和‘true‘。这用于计算逻辑表达式。下图显示了使用boolean类型创建变量的示例。

这是示例代码:

setStrictJava (true);
boolean a = true;
boolean b = false;
log.info(a + " - It is boolean");
log.info(b + " - It is boolean");

注意:创建类型为boolean的变量时,该值不会用引号括起来

具有引用数据类型的变量是引用对象的变量。在Java中,所有类型与简单类型不同的变量都是具有引用数据类型的变量。它们是:String,BigInteger和BigDecimal。

字符串数据类型的变量(字符串)

具有String数据类型的变量是String类的实例的变量。这些变量是不可变的。在下图中指定了使用String类型创建变量的示例。

这是示例代码:

setStrictJava (true);
String a = "It is string";
String b = new String("It is string");
log.info(a);
log.info(b);

注意:使用String类型创建变量时,该值为引号

BigInteger数据类型的变量

具有BigInteger数据类型的变量用于存储任意长度的整数值。与简单类型的变量相比,此类型对允许值没有限制。BigInteger类型的变量的值是不可变的,并且不会导致算术运算中的溢出。

下图显示了使用BigInteger类型创建变量的示例。

这是示例代码:

import java.math.BigInteger;
setStrictJava (true);
BigInteger a = new BigInteger("987654321678746474823764374637643764");
log.info(a + " - It is BigInteger");

BigDecimal类型的变量

具有BigDecimal数据类型的变量用于存储任意长度的浮点值。与简单类型的变量相比,此类型对允许值没有限制。BigDecimal类型的变量的值是不可变的,并且不会导致算术运算中的溢出。此类型用于财务计算,其中准确性非常重要。创建类型为BigDecimal的变量的示例如下图所示。

这是示例代码:

import java.math.BigDecimal;
setStrictJava (true);
BigDecimal a = new BigDecimal("1.987654321678746474823764374637643764");
log.info(a + " - It is BigDecimal");

为了处理变量,无论是使用简单数据类型还是引用变量,都可以使用原始包装器。原语的包装用于不同的情况。一个常见的例子是在测试中使用数据结构,包括数组,列表,集合等。包装器是与基本类型类比的类,例如,对于int,有一个Integer类。下面是一个简单类型与类似类的对应关系表。

这是示例代码:

import java.lang.*;
setStrictJava (true);
Integer a = new Integer(23);
Long b = new Long(23456);
Float c = new Float(1.234);
Double d = new Double(1.238);
Short e = new Short("12345");
Boolean f = new Boolean(true);
Character g = new Character(‘A‘);
Byte h = new Byte("17");
log.info(a + " - It is Integer");
log.info(b + " - It is Long");
log.info(c + " - It is Float");
log.info(d + " - It is Double");
log.info(e + " - It is Short");
log.info(f + " - It is Boolean");
log.info(g + " - It is Character");
log.info(h + " - It is Byte");

原文地址:https://www.cnblogs.com/a00ium/p/10340182.html

时间: 2024-11-08 21:15:22

用Java创建JMeter变量 - 终极指南的相关文章

Java 8新特性终极指南

目录结构 介绍 Java语言的新特性 2.1 Lambdas表达式与Functional接口 2.2 接口的默认与静态方法 2.3 方法引用 2.4 重复注解 2.5 更好的类型推测机制 2.6 扩展注解的支持 Java编译器的新特性 3.1 参数名字 Java 类库的新特性 4.1 Optional 4.2 Streams 4.3 Date/Time API (JSR 310) 4.4 JavaScript引擎Nashorn 4.5 Base64 4.6 并行(parallel)数组 4.7

Java 8 特性 – 终极指南

第一次尝试翻译文章,有错误请见谅:) Java 8 特性 – 终极指南 (原文:http://www.javacodegeeks.com/2014/05/java-8-features-tutorial.html ) 编者注:Java 8出现在公众视野中已经有一段时间了,在这期间,种种迹象都表明Java 8是一个非常重要的版本. 我们已经在Java Code Geeks提供了很多丰富的教程,比方说Playing with Java 8 – Lambdas and Concurrency,Java

Java 注解指导手册 – 终极向导

原文链接 原文作者:Dani Buiza 译者:Toien Liu  校对:深海 编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 我们已经在Java Code Geeks提供了丰富的教程, 如Creating Your Own Java Annotations, Java Annotations Tutorial with Custom Annotation 和 Java Annotations: Explored & Explained. 我们也有些文章是关于

每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQL程序设计终极指南>志在打造PL/SQL领域最为系统.全面.实战.权威的著作,通过一系列非常突出的优势在大量的同类书中脱颖而出,成为该领域的标准读物. PL/SQL本身涉及的知识点浩瀚.庞杂,初学者根本无法依靠自身能力理清头绪,学习成本极高.本书对知识点进行了体系化的梳理,化繁杂为有序,突出重点,直指核

Java中的变量与变量的作用域

关于Java中的变量及变量的作用域 关于Java中的变量及变量的作用域 0. 变量的概念 在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据.系统分配的内存单元要使用一个标记符来标识,这种内存单元中的数据是可以更改的.所有叫变量.定义变量的标记符就是变量名,内存单元中所装载的数据就是变量值.用一个变量定义一块内存以后,程序就可以用变量名代表这块内存中的数据.根据所存储数据类型的不同,有各种不同类型的变量. 1. Java的变量类型 2. 注意变量的有效取值范围 系统为不同的变

(转)java判断string变量是否是数字的六种方法小结

java判断string变量是否是数字的六种方法小结 (2012-10-17 17:00:17) 转载▼ 标签: it 分类: 转发 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return fal

JAVA的静态变量、静态方法、静态类

JAVA的静态变量.静态方法.静态类 静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象                                                        非静态对象      拥有属性:                是类共同拥有的                                             是类各对象独立拥有的 内存分配:      

java Condition条件变量的基本使用及注意点

最近在看pthread方面的书,看到条件变量一节的时候,回忆了下java中条件变量的使用方式. java中条件变量都实现了java.util.concurrent.locks.Condition接口,条件变量的实例化是通过一个Lock对象上调用newCondition()方法来获取的,这样,条件就和一个锁对象绑定起来了.因此,Java中的条件变量只能和锁配合使用,来控制并发程序访问竞争资源的安全. 条件变量的出现是为了更精细控制线程等待与唤醒,在Java5之前,线程的等待与唤醒依靠的是Objec

java的静态变量

定义,java的静态变量也叫做类变量,它开始于类的创建,结束于类的消亡.非静态变量叫做实例变量,它开始于类的实例的创建,结 束语类的实例的消亡.静态变量被所有实例所共享. 在内存之中又是如何的呢?当一个类被创建并初始化后,内存中会有两个区域,栈区和堆区.栈中主要存放的是引用变量,堆中主要存 放的是真实的被实例化后的类.栈中的引用变量会指向堆中的真实对象地址.比如Aa=newA();a这个变量就会在栈中,实际被new出来的类A的对象 会放在堆中,a指向实际被new出来的A对象. 如果一个类中有静态