用Java創建JMeter變量 - 終極指南
了解如何在Java中創建不同類型的JMeter變量,不同變量類型的詳細信息以及如何避免錯誤。
在Apache JMeter?中編寫負載或功能測試涉及使用不同類型的變量。變量有多種用途,例如,在以下情況下:
- 正在測試的API或Web服務返回一個或多個值,並且必須將值數據與預期結果進行比較。
- 正在測試的API或Web服務返回一個或多個值,並且必須在數據庫中檢查值數據。
因此,應用變量的知識和技能是使用JMeter的基礎。本博文將解釋當您需要在測試中使用Java代碼時如何在JMeter中創建變量。
要使用Java語言創建變量,可以使用任何支持BeanShell的標準JMeter元素。在這篇博文中,我們將使用
Java中的任何變量都必須具有數據類型。數據類型是確定可能值的範圍,對這些值的操作以及這些值如何存儲在計算機內存中的特性。否則,編譯器將生成錯誤。
Java變量支持兩種數據類型:簡單(也稱為原始)和引用數據。我們將涵蓋兩者。在下一篇博客文章中,我們將解釋您可以使用哪些方法來處理這些變量。
當不需要指定數據類型時,JMeter允許使用非嚴格模式編寫Java代碼,或者在創建變量時使用嚴格模式編寫Java代碼(因為變量需要指定數據類型)。
有8種原始數據類型用於表示整數,小數和布爾值:int,short,long,byte,float,double,char,boolean。
具有整數數據類型的變量(int,short,long和byte)
整數類型是一種數據類型,用於沒有小數部分的整數值。整數類型的數據包括以下類型:int,short,long和byte。這些類型允許我們表示正值和負值。
您可能會問為什麽有這麽多類型可用。為什麽不能只創建一種類型?原因是當使用簡單數據類型創建變量時,會消耗特定數量的計算機內存。
換句話說,如果占用計算機內存的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");View Code
註意:當創建與該類型的變量長在數值結束時,你必須指定升或大號。此功能與類型轉換有關。
具有浮點類型的數字變量(浮點和雙精度)
具有浮點類型的數字變量是具有整數和小數部分的變量。這些類型包括float和double。double類型變量的精度是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");View Code
註意:當創建與數值的最後一個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");View Code
使用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); } }View Code
比較圖像,您可以看到在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");View Code
註意:創建類型為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);View Code
註意:使用String類型創建變量時,該值為雙引號
BigInteger數據類型的變量
具有BigInteger數據類型的變量用於存儲任意長度的整數值。與簡單類型的變量相比,此類型對允許值沒有限制。BigInteger類型的變量的值是不可變的,並且不會導致算術運算中的溢出。
下圖顯示了使用BigInteger類型創建變量的示例。
這是示例代碼:
import java.math.BigInteger; setStrictJava (true); BigInteger a = new BigInteger("987654321678746474823764374637643764"); log.info(a + " - It is BigInteger");View Code
BigDecimal類型的變量
具有BigDecimal數據類型的變量用於存儲任意長度的浮點值。與簡單類型的變量相比,此類型對允許值沒有限制。BigDecimal類型的變量的值是不可變的,並且不會導致算術運算中的溢出。此類型用於財務計算,其中準確性非常重要。創建類型為BigDecimal的變量的示例如下圖所示。
這是示例代碼:
import java.math.BigDecimal; setStrictJava (true); BigDecimal a = new BigDecimal("1.987654321678746474823764374637643764"); log.info(a + " - It is BigDecimal");View Code
為了處理變量,無論是使用簡單數據類型還是引用變量,都可以使用原始包裝器。原語的包裝用於不同的情況。一個常見的例子是在測試中使用數據結構,包括數組,列表,集合等。包裝器是與基本類型類比的類,例如,對於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");View Code
用Java創建JMeter變量 - 終極指南