最近項(xiàng)目中在做http協(xié)議的接口測(cè)試,其中接口請(qǐng)求報(bào)文數(shù)據(jù)有個(gè)字段值需要用到加密后的簽名,即出于網(wǎng)絡(luò)傳輸過(guò)程中,對(duì)數(shù)據(jù)安全的考慮,要對(duì)請(qǐng)求的數(shù)據(jù)進(jìn)行特定的處理(加密),再進(jìn)行請(qǐng)求。
創(chuàng)新互聯(lián)主營(yíng)衛(wèi)濱網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,衛(wèi)濱h5微信小程序定制開(kāi)發(fā)搭建,衛(wèi)濱網(wǎng)站營(yíng)銷推廣歡迎衛(wèi)濱等地區(qū)企業(yè)咨詢
剛開(kāi)始由于項(xiàng)目趕進(jìn)度的需要,選擇的做法是:讓開(kāi)發(fā)寫(xiě)個(gè)加密處理生成請(qǐng)求報(bào)文的代碼,然后每次測(cè)試發(fā)送一次請(qǐng)求都用eclipse跑一遍該代碼,測(cè)試數(shù)據(jù)的修改也是在代碼中變更。這樣跑一輪測(cè)試下來(lái),測(cè)試同事都反映太累了。
jmeter中的BeanShell,可以用來(lái)調(diào)用我們的工具類對(duì)數(shù)據(jù)進(jìn)行處理,然后再進(jìn)行相關(guān)的請(qǐng)求。自己剛好以前工作中使用過(guò),于是就利用jmeter的beanshell來(lái)解決這個(gè)問(wèn)題。
解決過(guò)程:
這個(gè)需要看測(cè)試人員是否具有代碼查看的權(quán)限,如果沒(méi)有權(quán)限,直接要求開(kāi)發(fā)人員把該工具類的代碼發(fā)過(guò)來(lái)即可。
在eclipse中建個(gè)Java工程,把得到的工具類代碼導(dǎo)進(jìn)去。然后再導(dǎo)出成jar包。
將導(dǎo)出的jar包放到j(luò)meter的lib\ext目錄里。也可以不放進(jìn)該目錄,然后在jmeter的測(cè)試計(jì)劃直接引用即可。
在jmeter中創(chuàng)建一個(gè)項(xiàng)目,添加一個(gè)httprequest,在這個(gè)請(qǐng)求里添加一個(gè)BeanShell PreProcessor。
在http請(qǐng)求中根據(jù)實(shí)際情況填寫(xiě)對(duì)應(yīng)的數(shù)據(jù):
在BeanShellPreProcessor中導(dǎo)入我們的jar包,BeanShell PreProcessor中的兩個(gè)方法是我們最常用到的:vars.get(String paramStr)、vars.put(Stringkey,String value),前一個(gè)是從jmeter中獲得變量值,后一個(gè)是將數(shù)據(jù)存到j(luò)meter變量中。
說(shuō)明:mac是需要簽名加密的字段,在BeanShell PreProcessor中主要是利用加密的工具類對(duì)報(bào)文進(jìn)行加密,得到加密后的mac值,然后在接口報(bào)文中調(diào)用mac即可。
通過(guò)上述步驟腳本即可解決接口報(bào)文需要進(jìn)行加密后才發(fā)送請(qǐng)求的測(cè)試處理。
未加密的請(qǐng)求結(jié)果:
利用beanshell加密后的請(qǐng)求結(jié)果:
至此,接口請(qǐng)求的加密處理已完成,不僅解決需通過(guò)代碼生成請(qǐng)求報(bào)文的繁瑣方法,還可以在此腳本的基礎(chǔ)上,實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)的接口自動(dòng)化測(cè)試,測(cè)試小伙伴們就可以愉快的進(jìn)行測(cè)試了。