Baolu CSV Data Set Config

1.背景

大家在平常使用JMeter測試工具時,對CSV Data Set Config 配置元件肯定不會陌生。如果我們的壓測場景涉及到數據庫更新操作(如:轉賬接接口)則需要對參數化數據進行分塊,可就犯難了。如果不進行數據分塊那麼數據庫會出現大量鎖等待,造成我們測試結果可信度大大降低。今天寶路就聊下JMeter如何優雅的做到數據分塊。

2.初衷

前面說到數據分塊,大家可能會優先想到傳統商業壓測工具LoadRunner,因爲LR是比較完美的支持數據分塊的。

看了今天的文章的主題,相信大家心中應該就有答案了。其實早在寶路剛轉這個行不久時就已經開發了這個功能,只不過當時是在官方源碼的基礎改動,每當升級JMeter版後,還要把這些新增代碼移植到新版上,甚是麻煩。。。。。。關於實現邏輯大家可以參考下我早期寫的 CSV Data Set Config 拓展開發 這篇文章。

最近寶路把這個功能做成了插件,代碼也進行了重構優化,插件下載詳見“寶路測試手記”微信公衆號,下面我們就來揭開它的神祕面紗。

3.實戰

插件截圖:

 

0

本插件是在JMeter源生的 CSV Data Set Config 進了拓展開發,新增參數說明:

 

 

參數

說明

Allocate data for each thread When it is true (default false), the parameterized file is partitioned by threads, and each thread is allocated with different block data
Automatically allocate block size Only Allocate data for each thread set true
Set block size for each threads Only Allocate data for each thread set true and automatically allocate block size set false

 

重要的事情說三遍,插件支持中文釋義、插件支持中文釋義、插件支持中文釋義。。。

 

1

 

實戰驗證--腳本結構圖:

 

2

 

實戰驗證--測試結果(一):

 

3

 

4

 

從結果圖可以看出,當採用自動分配數據塊時,寶路設置線程組共啓動5個線程,此時每個線程固定分2條數據。那麼我們再把線程大小調整到10看看運行結果。

 

5

 

嗯!此時每個線程固定分配1條數據。

   實戰驗證--測試結果(二):

 

6

 

7

 

從結果圖可以看出,當採用手動指定線程分配數據塊時,寶路設置線程組共啓動2個線程,設置每個線程分配5條數據,此時第一個線程只會讀取前5條數據,第二個線程僅會讀取後5條數據。

如果保持線程組仍啓動2個線程,設置每個線程分配6條數據,會是什麼樣的結果呢?

 

8

 

可以看到出現了<EOF>值,其實不難看出是因爲數據不夠分了。。。。寶路這邊採用EOF標記來提示。

插件下載以及後續優化方向:

由於JMeter分佈式壓測試模式的原因,目前仍需手動將參數化文件copy到指定slave機目錄,後續寶路考慮可能會加入同步salve機參數化文件的功能,或者單獨開發一個同步文件插件。

實際使用中可能還有從指定行開始讀取數據的場景,比如:某個參數化文件裏面存放的是消耗型數據,在某次場景執行完畢後消耗了100行,那麼後續再次執行場景時,應該從101行開始讀取數據,這樣就不用測試人員花大量時間去準備好多參數化文件。

關於Baolu CSV Data Set Config插件,大家如果有任何疑問或建議,歡迎給寶路留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章