日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

聊一聊Jmeter的参数化

發布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聊一聊Jmeter的参数化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

前面一篇聊了一下 JMeter 的簡單使用,這篇聊一下 JMeter 的參數化。

在開始之前先來一個單元測試的例子,感受一下參數化。

上面是一個用 xUnit 寫的單元測試,這個單元測試就是一個參數化的例子:

模擬了不同的輸入,調用同一個方法,得到了不同的輸出。

對某一個場景,要驗證不同的輸入得到不同的輸出是非常有用的。

在 JMeter 里面就可以通過參數化來實現這個效果。

JMeter 的參數化有很多種方法,本文主要是介紹基于 CSV Data Set Config 的參數化。

在這篇文章里面,會通過一個簡單的場景來了解 JMeter 參數化的使用,以及自定義 jar 包的使用。

場景

這里用一個大家最熟悉的登錄場景做為例子。

登錄最重要的就是用戶名和密碼這兩個內容,這里會有兩種結果,登錄成功和登錄失敗。

在這個場景下,假設我們的接口定義是這樣的

POST http://localhost:8532/run?sign=sssss&appkey=aaaaa Content-Type: application/json{"userName":"catcherwong","password":"xxxxx" }
  • sign 的值是簽名,用來驗證參數是否被修改,這里是不校驗的,所以隨便生成一個隨機數就可以了。

  • appKey 是定義的另一個參數,這里也不做校驗的,也是隨機定義即可。

這個接口,會有兩種返回

登錄失敗的, code 會是 1, msg就是錯誤信息。

{"code":1,"msg":"用戶名或密碼錯誤"}

登錄成功的, code 會是 0。

{"code":0,"msg":"ok","data":{"token":"626b97f78d794f4da927bc09ae6be245"}}

針對這個場景,簡單起見,只考慮 code 的值來判斷登錄是否成功。

準備數據

場景有了,接口也有了,再下一步就是準備要用的數據了。

這里是用 CSV 文件來做為數據源,所以我們把接口要用到的參數放進去。

準備了20條數據,第一列是用戶名,第二列是密碼,第三列是appkey,第四列是結果,表明用前面三列數據去調用登錄接口,應該成功還是失敗。

然后在線程組里面添加一個 CSV 的配置原件。

在里面最主要的配置是 文件路徑變量名

文件路徑沒什么好說的,就是 csv 文件所在的具體路徑。

可以看到上面的 csv 文件,我們是沒有定義頭部的,放的直接是數據,所以每一列數據代表什么需要有一個標識。

這里的變量名可以認為就是給準備的每一列數據起個別名,便于后面的使用,示例這里是有4個的,每一個都是用英文逗號隔開。

配置HTTP請求

其中 name, pwd 和 appKey 這三個變量是前面已經定義好了的,所以這里可以直接用 ${xx} 的方式去使用。

sign 這個參數是沒有定義的,所以要加一個 BeanShell PreProcessor 來處理一下。

到這里,請求已經配置好了,下面就是要判斷登錄是不是成功的了。

斷言

斷言這里是要判斷返回的 JSON 結構里面的 code 值是不是和 csv 文件里面定義的一樣。

所以這里選擇的還是 JSON Assertion

要把期望值調整成變量名,這樣它才會根據不同的入參判斷不同的結果,上圖的例子是 ?${login_res}

添加結果樹,調整線程組的循環次數為20,再運行這個線程組,就可以看到對應的結果了。

可以看到的是,20條數據都跑了一次,所有的用例都是可以過的。

但是這里有一個問題,密碼是明文傳輸的!!!

這個是大忌,絕對不允許的,正常都會加密或哈希之后再傳輸。所以這里要做一個優化。

也就引入了,自定義 jar 包的使用。

自定義jar包調整

首先我們需要寫一些 JAVA 代碼來編譯成一個 jar 包。

這里老黃是直接寫好了,直接用就可以了。

調整一下 BeanShell PreProcessor ,如下圖所示:

首先是先引入自定義 jar 包,其次是從 vars 里面拿到明文密碼,然后是調用 jar 包里面的 getPwd 的方法對密碼進行處理,最后再把處理好之后的密碼放到一個新變量 ePwd 里面。

由于之前的 sign 參數是寫死的123,這里也改成調用 jar 包里面的 getSign 方法來生成。

由于密碼參數換了一個變量,所以要調整一下 HTTP 請求。

最后再次運行,可以看到 密碼不再是明文了,sign值也不再是固定的了。

自定義的 jar 包,記得要在測試計劃里面添加一下!

寫在最后

參數化是一個很有用的功能,可以讓我們的參數動起來。

總結

以上是生活随笔為你收集整理的聊一聊Jmeter的参数化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。