【實戰(zhàn)】Jmeter連接mongoDB數(shù)據(jù)庫

作為一名測試人員,做接口測試難免要進行基礎(chǔ)數(shù)據(jù)校驗。Jmeter本身對mysql支持的非常好,但是對mongoDB、cassandra等數(shù)據(jù)庫要怎么連接并校驗數(shù)據(jù)呢?本文以mongodb為例進行說明。
一、如果你有Java基礎(chǔ),可以編寫java代碼訪問mongo
首先,下載mongo-java-driver-2.13.2.jar,或者更高版本。將驅(qū)動包放在 lib目錄下或者lib\ext目錄下即可。
其次,右鍵測試計劃,定義一些用戶參數(shù)。

這里主要是定義mongodb的基本信息,大家可以根據(jù)實際情況填寫。
然后,就是我們的重點部分:添加JSR223Sampler,編寫Java腳本。

代碼如下:
importcom.mongodb.*
importcom.gmongo.GMongoClient
importcom.mongodb.MongoCredential
importcom.mongodb.ServerAddress
importjava.text.DateFormat
importjava.text.SimpleDateFormat
?
MongoCredentialcredentials = MongoCredential.createCredential('${mongoname}','${mongoauth}' ,'${mongopwd}'as char[])
GMongoClientclient = new GMongoClient(newServerAddress('${mongoip}',${mongoport}),[credentials])
//連接數(shù)據(jù)庫
defdb=client.getDB("${dbname}")
?
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd00:00:00")
?
def coll=db.getCollection('表名').aggregate([[$match:[type:"1",areaType:"1",areaCode:"****",statisticsDate:"20190825",faultType:"0",faultCode:"0",machineModel:"2"]],
[ $group :["_id" :'$areaName', "onlineNO" : [$sum : '$onlineNo'],"faultNo":[$sum : '$faultNo']]]])
def RpData=""
coll.results().each
{
? ? RpData =RpData+it.toString()+"\r\n"
}
?
SampleResult.setResponseData(RpData)
運行結(jié)果如下:

二、如果測試人員java基礎(chǔ)不好,或者只會用python編寫腳本怎么辦呢?
我們可以使用jmeter的OS Process Sampler完成這個任務(wù)。
首先,添加OS ProcessSampler,并配置好參數(shù)。

其次,編寫python腳本(腳本名稱和路徑要和上圖配置的一致),在腳本中實現(xiàn)連接數(shù)據(jù)庫的功能。
腳本如下:
#coding=utf-8
from pymongoimport MongoClient
from sys importargv
from datetimeimport datetime
#建立MongoDB數(shù)據(jù)庫連接
client =MongoClient("mongodb://用戶名:密碼@ip:port")
time=argv[1]
#time='20190313'
year=int(time[:4])
if time[4]==0:
? ? mon=int(time[5])
else:? ?
? ? mon=int(time[4:6])
day=int(time[6:])
#連接所用集合,也就是我們通常所說的表,test為表名
?
result = db.test.find_one({"WorkTime":{"$gt":0},'ReportTime':datetime(year,mon, day, 16, 0)},{ "LoginID":1,"WorkTimeLine": 1})
print (result)
response中就會打印出loginid和worktimeline的值。

再利用正則提取器取出想要的數(shù)據(jù),進行數(shù)據(jù)校驗即可。

P.S.
第一種方法網(wǎng)上的教程不少,也是比較方便的方法,如果測試人員有一定的Java基礎(chǔ),還是推薦用這種方法。
第二種方法是針對Java編程有困難的測試人員,利用python腳本也可以實現(xiàn)數(shù)據(jù)校驗的任務(wù),但是在實際的測試中可能會出現(xiàn)編碼等問題(比如打印字符串格式的數(shù)據(jù)時,結(jié)果中有字母“u”),導致正則表達式取不出想要的數(shù)據(jù),這就需要根據(jù)實際情況調(diào)整正則表達式的寫法,這個需要大家注意一下。
最后:這些資料,對于【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!

包括,測試人技術(shù)進階路徑圖,50多天的視頻教程、16個項目實例,30多個測試工具,37份測試文檔,70個軟件測試相關(guān)問題,40篇測試經(jīng)驗級文章分享,還有軟件測試面試小程序,求職簡歷的優(yōu)化模板。
加油吧,如果你需要提升技術(shù)儲備,那就行動,在路上總比在起點觀望的要好。一切的迷茫都是因為想得太多而做的太少!
你可以在公眾號:傷心的辣條?! 自行領(lǐng)取一份216頁軟件測試工程師面試寶典文檔資料【免費的】。以及相對應(yīng)的視頻學習教程免費分享!,其中包括了有基礎(chǔ)知識、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續(xù)集成、測試架構(gòu)開發(fā)測試框架、性能測試、安全測試等。
現(xiàn)在我邀請你進入我們的軟件測試學習交流群:【746506216】,備注“入群”, 大家可以一起探討交流軟件測試,共同學習軟件測試技術(shù)、面試等軟件測試方方面面,還會有免費直播課,收獲更多測試技巧,我們一起進階Python自動化測試/測試開發(fā),走向高薪之路。