1.背景
大家在平常使用JMeter測試工具時,對CSV Data Set Config 配置元件肯定不會陌生。如果我們的壓測場景涉及到數據庫更新操作(如:轉賬接接口)則需要對參數化數據進行分塊,可就犯難了。如果不進行數據分塊那麼數據庫會出現大量鎖等待,造成我們測試結果可信度大大降低。今天寶路就聊下JMeter如何優雅的做到數據分塊。
2.初衷
前面說到數據分塊,大家可能會優先想到傳統商業壓測工具LoadRunner,因爲LR是比較完美的支持數據分塊的。
看了今天的文章的主題,相信大家心中應該就有答案了。其實早在寶路剛轉這個行不久時就已經開發了這個功能,只不過當時是在官方源碼的基礎改動,每當升級JMeter版後,還要把這些新增代碼移植到新版上,甚是麻煩。。。。。。關於實現邏輯大家可以參考下我早期寫的 CSV Data Set Config 拓展開發 這篇文章。
最近寶路把這個功能做成了插件,代碼也進行了重構優化,插件下載詳見“寶路測試手記”微信公衆號,下面我們就來揭開它的神祕面紗。
3.實戰
插件截圖:
本插件是在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 |
重要的事情說三遍,插件支持中文釋義、插件支持中文釋義、插件支持中文釋義。。。
實戰驗證--腳本結構圖:
實戰驗證--測試結果(一):
從結果圖可以看出,當採用自動分配數據塊時,寶路設置線程組共啓動5個線程,此時每個線程固定分2條數據。那麼我們再把線程大小調整到10看看運行結果。
嗯!此時每個線程固定分配1條數據。
實戰驗證--測試結果(二):
從結果圖可以看出,當採用手動指定線程分配數據塊時,寶路設置線程組共啓動2個線程,設置每個線程分配5條數據,此時第一個線程只會讀取前5條數據,第二個線程僅會讀取後5條數據。
如果保持線程組仍啓動2個線程,設置每個線程分配6條數據,會是什麼樣的結果呢?
可以看到出現了<EOF>值,其實不難看出是因爲數據不夠分了。。。。寶路這邊採用EOF標記來提示。
插件下載以及後續優化方向:
由於JMeter分佈式壓測試模式的原因,目前仍需手動將參數化文件copy到指定slave機目錄,後續寶路考慮可能會加入同步salve機參數化文件的功能,或者單獨開發一個同步文件插件。
實際使用中可能還有從指定行開始讀取數據的場景,比如:某個參數化文件裏面存放的是消耗型數據,在某次場景執行完畢後消耗了100行,那麼後續再次執行場景時,應該從101行開始讀取數據,這樣就不用測試人員花大量時間去準備好多參數化文件。
關於Baolu CSV Data Set Config插件,大家如果有任何疑問或建議,歡迎給寶路留言。