之前試過將輸入數(shù)據(jù)參數(shù)化從cvs讀入,然后想到如果改為從數(shù)據(jù)庫讀數(shù)據(jù)呢,或者是連接數(shù)據(jù)庫進(jìn)行壓力測試應(yīng)該怎么做呢。
一般做服務(wù)器壓力測試時JMeter是直接在服務(wù)器下運(yùn)行,避免網(wǎng)絡(luò)環(huán)境對響應(yīng)時間測試結(jié)果的影響??紤]到我不能在服務(wù)器下亂來。。。所以在自己電腦上弄個數(shù)據(jù)庫來試下。這里使用SQLite,輕量級,比較簡單。
一、SQLite3創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表,及測試中需要用到的數(shù)據(jù)
mac下是自帶的,windows下應(yīng)該也是,在終端輸入sqlite3可以查看。輸入sqlite3+數(shù)據(jù)庫名字可直接進(jìn)入該數(shù)據(jù)庫。接著創(chuàng)建表,及等下需要用到的四組數(shù)據(jù)。

用select from查看數(shù)據(jù)時,發(fā)現(xiàn)這樣顯示看的超級不方便。可以通過以下紅框中命令來更改下查看格式。

二、JMeter連接sqlite
首先要下載sqlite jdbc(Java Data Base Connectivity,java數(shù)據(jù)庫連接)jar包。網(wǎng)上好多jmeter連接數(shù)據(jù)庫的都是用的mysql....這個sqlite的最后終于被我找到了....鏈接如下:https://bitbucket.org/xerial/sqlite-jdbc/downloads/?
下載后放到j(luò)meter/lib目錄下就可以了。JMeter中測試計劃添加jar包路徑(應(yīng)該是,如果放到j(luò)meter/lib目錄下這里就不用添加了~)。

添加JDBC Connection Configuration,對數(shù)據(jù)庫連接進(jìn)行設(shè)置。Database URL那里相當(dāng)于告訴jmeter去連接哪個數(shù)據(jù)庫。

這里用sqlite創(chuàng)建的數(shù)據(jù)庫是沒有username和password的,所以留空。如果用mysql一般會設(shè)置一下,填入就好了。
然后添加JDBC Request。Variable Name與JDBC Connection Configuration中保持一致就好。
寫下向數(shù)據(jù)庫請求數(shù)據(jù)的語句:select * from MEASURE。這里MEASURE是之前在數(shù)據(jù)庫test.db下創(chuàng)建的表名。
在Result variable name中設(shè)置,數(shù)據(jù)庫返回結(jié)果保存在這個對象中。

三、獲取數(shù)據(jù)庫返回結(jié)果并作為下一個接口的請求參數(shù)
這里用到后置處理器BeanShell,代碼將數(shù)據(jù)保存在參數(shù)中,見圖。
measureObj為上個圖中保存數(shù)據(jù)庫數(shù)據(jù)的對象。

接口中請求參數(shù)填寫時使用${}格式。

可以看到JDBC請求的返回數(shù)據(jù)的第一行數(shù)據(jù)如下。

再看下測試接口請求中的入?yún)?。?shù)據(jù)一致!說明成功的將數(shù)據(jù)庫獲取的數(shù)據(jù)參數(shù)化,并在下一個接口的入?yún)⒅杏玫健?/p>

四、遺留疑難雜癥
這里只將數(shù)據(jù)庫的一行數(shù)據(jù)參數(shù)化了。但是數(shù)據(jù)庫里有4行.......還沒弄明白怎么在每一次循環(huán)(即每一次測試該業(yè)務(wù)接口)時,用到數(shù)據(jù)庫獲取的不同行的數(shù)據(jù)......先把這個問題在這MARK下=。=
結(jié)束~
加油~