jmeter接口測(cè)試-調(diào)用java的jar包-csv參數(shù)化請(qǐng)求-BeanShellPreProcessor生成驗(yàn)簽作為請(qǐng)求驗(yàn)證參數(shù)-中文亂碼----實(shí)戰(zhàn)

背景及思路:
需求:要做 創(chuàng)建新卡 接口的測(cè)試,要求:
1. 不需要每次手動(dòng)修改請(qǐng)求參數(shù)岖常。
方案:文中先用excle將數(shù)據(jù)準(zhǔn)備好具伍,導(dǎo)出為csv格式燥狰,再用jmeter的csv請(qǐng)求進(jìn)行參數(shù)化
2. 卡號(hào)需要唯一;
方案:文中用jmeter的beanshell按時(shí)間戳加隨機(jī)數(shù)生成
3. 請(qǐng)求參數(shù)中有一個(gè)參數(shù)捕儒,會(huì)根據(jù)相應(yīng)的請(qǐng)求參數(shù)生成(文中的sign值)冰啃,接口請(qǐng)求會(huì)驗(yàn)證sign是否和相應(yīng)請(qǐng)求參數(shù)對(duì)應(yīng);
方案:
1. 文中將生成sign的源碼打包放在jmeter的lib\ext\ 下,
2. 再用jmeter的beanshell引用jar包刘莹,
3. 用同樣的規(guī)則生成sign保證其一致性阎毅。

-----下面正式開始實(shí)戰(zhàn)------:

  1. 將生成驗(yàn)簽的java源碼生成jar包,并將jar包放置在 \lib\ext目錄下
    1.1 將生成sign規(guī)則的java類 打jar包 包路徑:com.util.lt


    1.png

1.2 選擇JAR file


2.png

1.3 放置在jmeter的 lib\ext\下面 取名為 AppLoginUtils


3.png

1.4 如果對(duì)路徑不熟悉的話点弯,可以將剛剛生成的jar包放在D盤扇调, 解壓,查看目錄路徑


4.png

進(jìn) META-INF


5.png

-----至此---java生成jar包并放在jmeter相應(yīng)目錄準(zhǔn)備工作做好了.-----

  1. 參數(shù)化 excle 準(zhǔn)備數(shù)據(jù)
    2.1 excle 列出個(gè)參數(shù)及值


    6.png

2.2 另存為csv格式


7.png

2.3 用文本編輯器(如:editplus)打開文本抢肛,第一行為參數(shù)名狼钮,下面為參數(shù),剪切第一行數(shù)據(jù)為jmeter csv參數(shù)行捡絮,實(shí)際數(shù)據(jù)去掉第一行數(shù)據(jù)


8.png

-------------至此----測(cè)試參數(shù)準(zhǔn)備好了.----------------

  1. jmeter 開始進(jìn)行測(cè)試 添加線程組


    9.png

3.1 jmeter設(shè)置csv參數(shù) variableNames行數(shù)據(jù)為上面剪切的第一行數(shù)據(jù)


10.png

11.png

3.2 BeanShell PreProcessor 添加腳本生成需要的信息字段(生成cardNo為時(shí)間戳唯一數(shù) 為后續(xù)生成sign做準(zhǔn)備)


12.png

13.png

腳本如下:

import java.sql.Date;
import java.text.SimpleDateFormat;

Long timeStamp = System.currentTimeMillis();  //獲取當(dāng)前時(shí)間戳 
SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");   //定義時(shí)間格式
String timeNow = sdf.format(new Date(timeStamp));   // 時(shí)間戳轉(zhuǎn)換成定義好的時(shí)間格式

//(數(shù)據(jù)類型)(最小值+Math.random()*(最大值-最小值+1))   
//從1到9999的int型隨機(jī)數(shù)
String cardNo = timeNow + (int)(1+Math.random()*(9999-1+1));

//vars.get("name");    從jmeter中獲得變量值
//vars.put("key","value");   數(shù)據(jù)存到j(luò)meter變量中
vars.put("cardNo",cardNo);    //將生成的當(dāng)前時(shí)間加隨機(jī)數(shù)生成的唯一字符串保存到j(luò)emter變量cardNo中

log.info("------------日志開始----------------");
log.info("cardNo is:"+cardNo);
log.info("------------日志結(jié)束----------------");

3.3 BeanShell PreProcessor 調(diào)用jar包的方法 生成sign值
同上添加 BeanShell PreProcessor 步驟燃领,


12.png

111.png

腳本如下:

import java.util.*;
import com.util.lt.AppLoginUtils;

public static getSign(String cardNo){
    Map paras = new HashMap();
        //取出剛剛csv參數(shù)化的數(shù)據(jù),放到map中
        paras.put("sex",vars.get("sex"));
    paras.put("xxx", vars.get("xxx"));
        paras.put("xxxx", vars.get("xxxx"));
        paras.put("xxxxx", vars.get("xxxxx"));
    paras.put("type",vars.get("type"));
        paras.put("operator", vars.get("operator"));
        paras.put("cardNo",cardNo);    //傳參
        paras.put("codeName", vars.get("codeName"));
        paras.put("operatorName", vars.get("operatorName"));
    paras.put("xxxxxx", vars.get("xxxxxx"));

        //調(diào)用 上面java打包的 生成驗(yàn)簽碼的方法
    String sign = AppLoginUtils.getParametersToString(paras,"xxxxxxxxxxxxxxxxxxxxxxx");
    vars.put("sign",sign);      //將生成的sign存到j(luò)meter變量sign中锦援,供后續(xù)請(qǐng)求用
    return sign;
}       

//vars.get("name");    從jmeter中獲得變量值
//vars.put("key","value");   數(shù)據(jù)存到j(luò)meter變量中

log.info("------------日志開始----------------");
//下面供調(diào)試使用  使用上面 beanshell生成的 cardNo作為請(qǐng)求參數(shù)  以此保證使用的是一套數(shù)據(jù)
log.info("sign is:"+ getSign("${cardNo}"));
log.info("------------日志結(jié)束----------------");

3.4 http請(qǐng)求 輸入相應(yīng)的地址 端口號(hào) 路徑 編碼格式


14.png

3.4.1 parameters請(qǐng)求信息形式:


15.png

3.4.2 或者用 bodydata請(qǐng)求信息形式(與上面的請(qǐng)求形式二選一 其中一個(gè)可以右鍵--禁用):


16.png

3.5 添加 debug sample 進(jìn)行測(cè)試調(diào)試用 (可不用添加)


17.png

3.6 添加監(jiān)控器 查看結(jié)果樹 聚合報(bào)告:


18.png

3.6.1監(jiān)測(cè)的請(qǐng)求:


19.png

20.png

3.6.2 監(jiān)測(cè)的返回:


21.png

3.6.3 監(jiān)測(cè)的 debug Sample:


22.png

23.png

-------至此----一個(gè)完整的調(diào)用和監(jiān)控結(jié)束了.-------

接下來是 在做的過程中的一些注意點(diǎn):
一. 怎么調(diào)試:
1.可以用beanShellSample 進(jìn)行請(qǐng)求猛蔽,debugSample 在查看結(jié)果樹中 進(jìn)行調(diào)試 。
2.也可以打印日志 log.info() 進(jìn)行調(diào)試灵寺,需要先打開查看日志的選項(xiàng):


24.png

二. 編碼問題:
jmeter亂碼 修改jmeter\bin\jmeter.properties文件:

  1. 把“jsyntaxtextarea.font.family=Hack”這行的“#”注釋去掉 或者添加一行 用中文字體都行


    25.png
  2. sampleresult.default.encoding="utf-8"


    26.png
  3. 參數(shù)化的話 文件另存為utf-8 的話 曼库,編碼需要 utf-8,系統(tǒng)默認(rèn)的話就不用


    27.png

    28.png
  4. http請(qǐng)求的 content encoding:utf-8


    29.png
  5. 生成加密的java源碼的方法中指定請(qǐng)求編碼類型: s.getBytes("utf-8")


    30.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末略板,一起剝皮案震驚了整個(gè)濱河市毁枯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叮称,老刑警劉巖种玛,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件藐鹤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赂韵,警方通過查閱死者的電腦和手機(jī)娱节,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祭示,“玉大人肄满,你說我怎么就攤上這事≈侍危” “怎么了稠歉?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)汇陆。 經(jīng)常有香客問我怒炸,道長(zhǎng),這世上最難降的妖魔是什么毡代? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任横媚,我火速辦了婚禮,結(jié)果婚禮上月趟,老公的妹妹穿的比我還像新娘灯蝴。我一直安慰自己,他們只是感情好孝宗,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布穷躁。 她就那樣靜靜地躺著,像睡著了一般因妇。 火紅的嫁衣襯著肌膚如雪问潭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天婚被,我揣著相機(jī)與錄音狡忙,去河邊找鬼。 笑死址芯,一個(gè)胖子當(dāng)著我的面吹牛灾茁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谷炸,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼北专,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了旬陡?” 一聲冷哼從身側(cè)響起拓颓,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎描孟,沒想到半個(gè)月后驶睦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砰左,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年场航,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缠导。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旗闽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜜另,到底是詐尸還是另有隱情适室,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布举瑰,位于F島的核電站捣辆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏此迅。R本人自食惡果不足惜汽畴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耸序。 院中可真熱鬧忍些,春花似錦、人聲如沸坎怪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搅窿。三九已至嘁酿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間男应,已是汗流浹背闹司。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沐飘,地道東北人游桩。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像耐朴,于是被迫代替她去往敵國(guó)和親众弓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

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