jmeter簡介與安裝
Apache JMeter是Apache組織開發(fā)的基于Java的測試工具诀浪,安裝jmeter之前店印,需要先安裝設(shè)置java環(huán)境鸠按,jdk下載地址
JMeter 下載地址
解壓后草姻,以管理員身份運(yùn)行bin/jmeter.bat
注意 一定要以管理員身份運(yùn)行 否則部分功能將會(huì)出現(xiàn)問題
jmeter基礎(chǔ)使用
單一接口測試
我們現(xiàn)在所定義的接口一般為http/https請求方式溪椎,如何創(chuàng)建一個(gè)http請求測試呢宴凉?
打開jmeter誊锭,創(chuàng)建一個(gè)測試計(jì)劃,并保存測試計(jì)劃
右擊測試計(jì)劃 添加線程組 設(shè)置好線程組名稱弥锄,比如說我們要測登陸功能炉旷,將線程組名稱設(shè)置為登陸
創(chuàng)建測試請求
對接口測試
以登陸接口為例签孔,登陸接口的定義如下
接上一步的步驟,我們在http請求中填寫的參數(shù)應(yīng)該如下
創(chuàng)建接口響應(yīng)結(jié)果
運(yùn)行測試
如圖窘行,這樣我們就可以看到結(jié)果的響應(yīng)信息了
斷言測試接口響應(yīng)結(jié)果是否達(dá)到了預(yù)期
我們的接口都是采取json格式饥追,我們需要編寫代碼解析json格式,此外需要引入額外的json解析包
json.jar大家百度自行下載
將該文件復(fù)制到j(luò)emter的lib目錄下罐盔,重新啟動(dòng)jmeter
beanshell解析json
添加一個(gè)beanshell斷言但绕,關(guān)于beanshell的語法及使用,參考下面的文章
基礎(chǔ)的json解析代碼
代碼說明
import org.json.*;
//獲取接口響應(yīng)數(shù)據(jù)惶看,此兩行代碼無需變更
String responseData = prev.getResponseDataAsString();
JSONObject dataObj = new JSONObject(responseData);
//根據(jù)響應(yīng)的json串捏顺,獲取result code字段,例如纬黎,接口的響應(yīng)信息為 {"reuslt::{"code":"10000"}},那么我們通過下面的代碼可以取得10000這個(gè)值
String resultCode = dataObj.get("result").get("code").toString();
log.info("resultCode:"+resultCode);
// 字符串的等于比較請使用equals
if (resultCode.equals("10000"))
{
//到預(yù)期結(jié)果幅骄,將Failure設(shè)置true,表示無需斷言,測試通過,FailureMessage 為斷言信息本今,
Failure = false;
FailureMessage = "ok";
}
else
{
//未達(dá)到預(yù)期效果拆座,測試失敗
Failure = true;
FailureMessage = "fail";
}
如果測試未通過,測試結(jié)果中將顯示紅色
流程測試
上面的測試我們只是測試了單一接口冠息,但測試過程中我們需要進(jìn)行完善的流程測試挪凑,比如說支付,需要用戶先登陸逛艰,然后在填寫支付金額等信息進(jìn)行支付躏碳,這是一個(gè)系列的流程,需要對一系列的流程測試散怖,測試步驟接上面的內(nèi)容進(jìn)行
對于支付接口菇绵,我們需要從登陸接口獲取usid以及access_token
還是上面那段代碼,獲取usid及access_token并賦值到j(luò)meter變量中
import org.json.*;
//獲取接口響應(yīng)數(shù)據(jù)镇眷,此兩行代碼無需變更
String responseData = prev.getResponseDataAsString();
JSONObject dataObj = new JSONObject(responseData);
//根據(jù)響應(yīng)的json串咬最,獲取result code字段,例如偏灿,接口的響應(yīng)信息為 {"reuslt::{"code":"10000"}},那么我們通過下面的代碼可以取得10000這個(gè)值
String resultCode = dataObj.get("result").get("code").toString();
log.info("resultCode:"+resultCode);
// 字符串的等于比較請使用equals
if (resultCode.equals("10000"))
{
//獲取usid及access_token
String usid = dataObj.get("data").get("profile").get("id").toString();
String access_token = dataObj.get("data").get("access_token").toString();
//賦值到j(luò)meter變量
vars.put("usid",usid);
vars.put("access_token",access_token);
//到預(yù)期結(jié)果丹诀,將Failure設(shè)置true,表示無需斷言钝的,測試通過,FailureMessage 為斷言信息
Failure = false;
FailureMessage = "ok";
}
else
{
//未達(dá)到預(yù)期效果翁垂,測試失敗
Failure = true;
FailureMessage = "fail";
}
新建一個(gè)http請求
此時(shí)我們已將這兩部流程串聯(lián)起來了,請求信息中查看上述兩個(gè)字段已經(jīng)從登陸結(jié)果中獲取并傳入
一個(gè)基礎(chǔ)的流程測試這樣完成了