使用Jmeter操做數據庫數據

工做中操做數據庫能夠有多種客戶端工具能夠實現,好比navicat、pl/sql。但性能測試前,一般須要循環插入大量數據,這時就得本身寫代碼塊(匿名塊、儲存過程等)了。其實也不難寫,就是這些造數的代碼塊和性能腳本每每分開放置,管理起來有些不方便。
剛好在寫jmeter腳本的時候發現有JDBC Request Sampler這個東西。瞭解它的用途後感受只用jmeter工具就能作到造數(腳本)跟測試用例綁定,並且順利的話一鍵就能完成數據庫(批量)插入數據-(性能)用例執行-數據庫清理等工做了。
如今記錄下嘗試過程,供日後覆盤,也但願對你們小有幫助。
主要是兩個步驟:
一、配置JDBC連接
二、寫JDBC請求
image.pnghtml

配置JDBC連接
最經常使用的幾個配置解釋以下,其餘的詳情見https://jmeter.apache.org/usermanual/component_reference.html#JDBC_Connection_Configuration
image.pngjava

例子是基於mysql的,只有標記處的配置才作了變更,其餘都默認
image.pngmysql

image.png

寫JDBC請求
經常使用配置以下
image.png
下面是實際嘗試的例子,其中Result Variable Name的使用是爲了給後續其餘Sampler傳遞包含結果的對象。
image.png
爲了方便排錯,能夠加入Debug Sampler。點擊運行並查看結果樹,實際返回值爲:
image.png
若是想要獲取結果中第一行的name列對應的值,能夠
使用BeanShell 取樣器,填寫調用語句並打印到日誌中。sql

columnValue = vars.getObject("resultObject1").get(0).get("name");
log.info("返回的值"+columnValue);

image.png

爲了達到插入大量數據的目的,不可能一條數據一個sql語句吧。這時就要用到參數化了。方法有2種:
一、經過CSV Data Set Config參數化
二、經過助手函數參數化
固然JDBC Request Sampler中也要修改sql語句的
image.png數據庫

可能的報錯與解決
一、ERROR o.a.j.JMeter: Uncaught exception:
java.lang.IllegalArgumentException: Variable Name must not be empty for element:JDBC Connection Configuration
解決:JDBC Connection Configuration中的Variable Name for created pool不能爲空
二、Variable Name must not be null in JDBC Request
解決:JDBC Request Sampler中的Variable Name of Pool declared in JDBC Connection Configuration不能爲空apache

相關文章
相關標籤/搜索