基于jmeter進(jìn)行接口測試實(shí)踐

摘要:
本次jmeter接口測試實(shí)踐,其中涉及到數(shù)據(jù)參數(shù)化氮双、動態(tài)獲取參數(shù)值昭伸、使用第三方j(luò)ar導(dǎo)入編寫代碼進(jìn)行MD5加密、并發(fā)測試同步定時(shí)器离陶、測試計(jì)劃承上啟下的接口組裝等知識點(diǎn)的使用稼虎。

一、接口定義:

  1. 繳費(fèi)訂單生成接口
    http://*******/portal/wallet/online/consume
    請求方式: POST方法
    Content-Type : application/json
    image.png

    image.png
  2. 免密支付接口
    image.png

    請求例子:
    image.png

    image.png

    以上接口使用到的privateKey值由第三方的設(shè)備生成招刨,測試環(huán)境使用privateKey=##########

三霎俩、生成訂單接口與免密支付接口使用場景測試點(diǎn)分析(本次只實(shí)踐功能測試):
由于兩個接口中的入?yún)ⅲ际莵碇罰HP后端接口輸出沉眶,入?yún)⒋嬖诳鐢?shù)據(jù)庫服務(wù)器使用打却,
并且java接口內(nèi)部邏輯中還存在回調(diào)PHP端接口進(jìn)行參數(shù)一致性的校驗(yàn);
因此谎倔,不能隨便給個參數(shù)值進(jìn)行測試柳击,需要從接口業(yè)務(wù)使用場景上進(jìn)行分析與測試
1. 用戶與車牌未綁定
2. 正常繳費(fèi)訂單免密支付
3. 支付金額與訂單消費(fèi)金額不一致
4. 最高金額小于200
5. 余額不足校驗(yàn)
6. 訂單超時(shí)后,再進(jìn)行免密支付
7. 同用戶綁定多個車牌片习,并發(fā)繳費(fèi)

四腻暮、構(gòu)造測試數(shù)據(jù):
本次測試使用數(shù)據(jù)驅(qū)動的方法測試,測試數(shù)據(jù)保存在txt文件中毯侦,jmeter測試計(jì)劃參數(shù)化引用txt文件哭靖,讀取參數(shù)數(shù)據(jù)達(dá)到測試不同目的

  1. 數(shù)據(jù)構(gòu)造方法
  • PHP后端數(shù)據(jù)庫中,db.nonsecret_payment表增加測試數(shù)據(jù)侈离,創(chuàng)建某用戶進(jìn)行開通免密支付數(shù)據(jù)
    image.png
  • 在db.nonsecret_payment_permission表中增加測試數(shù)據(jù)试幽,創(chuàng)建某用戶綁定車牌號,一個用戶可以綁定多個
    image.png
  • 在db.payment_records表中增加某用戶某車牌號停車消費(fèi)金額
    image.png
  • 在錢包java 服務(wù)端數(shù)據(jù)庫中設(shè)置該用戶錢包余額db.user_wallet表中設(shè)置用戶余額
    image.png

五起宽、jmeter構(gòu)建接口測試框架

  1. 參數(shù)化定義
    訂單接口入?yún)?shù)據(jù)參數(shù)化定義保存于consume.txt文件:
    goodsDetail //對應(yīng)訂單接口中的goodsDetail參數(shù)
    memberId //對應(yīng)訂單接口中的memeberId參數(shù)
    merOrderId //對應(yīng)訂單接口中的merOrderId參數(shù)
    orderAmount //對應(yīng)訂單接口中的orderAmount參數(shù)
    tranType //對應(yīng)訂單接口中的tranType參數(shù)
    privateKey //對應(yīng)訂單接口中的privateKey參數(shù)
    assert //斷言期望結(jié)果參數(shù)

    超時(shí)訂單免密支付入?yún)?shù)據(jù)參數(shù)化定義保存于orderId.txt文件:
    orderId //對應(yīng)超時(shí)繳費(fèi)訂單ID
    privateKey //加密用的第三方privateKey
    assert //斷言期望結(jié)果參數(shù)

    模擬多個出口繳費(fèi)并發(fā)參數(shù)保存于concurrency.txt文件中:
    參數(shù)定義同consume.txt

  2. 用例數(shù)據(jù)
    image.png
  3. jmetr組裝接口業(yè)務(wù)用例流程步驟
    數(shù)據(jù)參數(shù)化實(shí)現(xiàn)

    image.png
    添加錢包用戶登錄請求
    用戶需要在微信端進(jìn)行登錄錢包后坯沪,才可以進(jìn)入生成繳費(fèi)訂單接口擒滑、免密支付接口執(zhí)行, 實(shí)現(xiàn)方法:使用jmeter直接調(diào)用錢包的登錄接口,post請求傳入個人微信號的openId與unionId
    登錄接口: http://*******/portal/user/login
    image.png
    登錄成功返回結(jié)果:
    image.png
    登錄錢包后獲取登錄狀態(tài)token保存在header中藻糖,提供給其他接口判斷是否已登錄成功
    jmeter獲取token方法:
    請求接口后库车,增加一個正則表達(dá)式提取器后置處理器
    設(shè)置一個引用名稱token,提取token值柠衍,該token名稱會在別地方當(dāng)做變量天引用
    在全局的header信息頭管理器中,引用token變量
    image.png
    image.png
    添加生成訂單接口請求
    根據(jù)接口定義芦岂,其中有一個sign參數(shù),需要進(jìn)行md5加密禽最,加密的參數(shù)需要用例入?yún)⑺袇?shù),而這些參數(shù)值都不是固定袱饭,由PHP后端調(diào)用傳入.因此, jmeter需要動態(tài)獲取入?yún)⑦M(jìn)行MD5加密川无,獲取動態(tài)sign值:

    • 找開發(fā)要MD5加密算法的類,創(chuàng)建一個java工程虑乖,編寫一個MakeMd5類懦趋,定義實(shí)現(xiàn)兩個加密方法
      image.png
      image.png
  • 導(dǎo)出以上類方法為jar包,把該jar放入apache-jmeter-3.0\lib\ext路徑中疹味,注意此時(shí)需要重啟jmeter仅叫,否則import該包是不成功的。
  • 在訂單接口請求上一步驟添加一個BeanShell Sampler取樣器糙捺,導(dǎo)入MD5加密包诫咱,并根據(jù)方法中定義的參數(shù)順序,傳入?yún)?shù)值進(jìn)行MD5加密
    image.png
    image.png

    添加消費(fèi)接口請求
    image.png
    接口請求成功后洪灯,會返回一組json串
    image.png
    其中orderId是提供給免密支付接口使用坎缭,因此,在此步驟我們需要獲取出orderId值賦于一個變量
    我們使用正則表達(dá)式提取器獲取:
    image.png

    最后進(jìn)行斷言掏呼,因?yàn)樵谙M(fèi)接口邏輯里不進(jìn)行校驗(yàn)坏快,只要傳入符合參數(shù)類型的值,都會生成訂單成功憎夷,返回200
    image.png
    添加免密支付接口請求
    image.png
    添加接口響應(yīng)斷言莽鸿,引用用例數(shù)據(jù)中期望結(jié)果進(jìn)行結(jié)果校驗(yàn)
    image.png
  • 超時(shí)訂單支付例的編寫同以上的用例框架

    同用戶多車輛在不同出口進(jìn)行并發(fā)免密支付用例組裝基本同以上框架,但是有一點(diǎn)必須得注意拾给,即是在哪個點(diǎn)上進(jìn)行并發(fā)祥得,本用例是在支付接口那里進(jìn)行并發(fā),因此在請求支付接口前鸣戴,需要加一個同步定時(shí)器配置等待多少個線程到達(dá)此處時(shí)啃沪,就可以同時(shí)進(jìn)行并發(fā)請求
    image.png
    至此粘拾,用例組裝與數(shù)據(jù)準(zhǔn)備完畢窄锅,下一步即是進(jìn)行用例執(zhí)行

六、執(zhí)行結(jié)果

在用例數(shù)據(jù)txt中缰雇,有幾條數(shù)據(jù)就是有幾個可執(zhí)行用例,在jmeter中如果是用單線程進(jìn)行執(zhí)行械哟,需要配置循環(huán)執(zhí)行5次暇咆,才能跑完所有用例,否則只會跑第一條數(shù)據(jù)用例其骄。
image.png

整個測試計(jì)劃與執(zhí)行結(jié)果如下:

由結(jié)果看拯爽,用例根據(jù)數(shù)據(jù)毯炮,逐條執(zhí)行
image.png

各接口請求情況:
image.png
image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市备禀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赋续,老刑警劉巖另患,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昆箕,死亡現(xiàn)場離奇詭異鹏倘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)骆姐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門玻褪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來带射,“玉大人循狰,你說我怎么就攤上這事〔永铮” “怎么了钠四?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵缀去,是天一觀的道長甸祭。 經(jīng)常有香客問我,道長咏雌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任统倒,我火速辦了婚禮房匆,結(jié)果婚禮上报亩,老公的妹妹穿的比我還像新娘弦追。我一直安慰自己,他們只是感情好掸哑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布举户。 她就那樣靜靜地躺著遍烦,像睡著了一般躺枕。 火紅的嫁衣襯著肌膚如雪拐云。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天膳帕,我揣著相機(jī)與錄音危彩,去河邊找鬼泳桦。 笑死灸撰,一個胖子當(dāng)著我的面吹牛拼坎,可吹牛的內(nèi)容都是我干的泰鸡。 我是一名探鬼主播壳鹤,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼器虾,長吁一口氣:“原來是場噩夢啊……” “哼兆沙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起千扔,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤曲楚,失蹤者是張志新(化名)和其女友劉穎褥符,沒想到半個月后喷楣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逊朽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年叽讳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岛蚤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婿屹。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡昂利,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出犁苏,到底是詐尸還是另有隱情,我是刑警寧澤朴乖,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布买羞,位于F島的核電站雹食,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吃挑。R本人自食惡果不足惜街立,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一赎离、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧圾浅,春花似錦憾朴、人聲如沸喷鸽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽编兄。三九已至声登,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間件舵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工坑质, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涡扼,地道東北人盟庞。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓茫经,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抹镊。 傳聞我的和親對象是個殘疾皇子荤傲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 在使用Jmeter進(jìn)行接口的性能測試時(shí)终佛,由于Jmeter 是JAVA應(yīng)用雾家,對于CPU和內(nèi)存的消耗比較大,所以牙捉,當(dāng)需...
    燕京博士閱讀 4,159評論 0 16
  • 接口測試講義 1. 接口測試的類型 主要包含三種測試: Web接口測試邪铲, 應(yīng)用程序接口(API, applicat...
    厲鉚兄閱讀 28,585評論 1 44
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,500評論 25 707
  • 伊萬卡組-QT-第一周R2 A1(聯(lián)系過往經(jīng)歷) “多睡一會兒”是件充滿多巴胺的事情带到!從小到大揽惹,父親一直強(qiáng)調(diào)我,早...
    QT校長閱讀 142評論 2 2
  • 為何不作聲響 就到我牢房幽暗的門上 看吧 我的牢門緊鎖 我住得挺窄巴 我經(jīng)常吃醉酒 也反復(fù)夢見悲憤的騾子 馱著面粉...
    左小事界閱讀 382評論 0 1