1、已實(shí)現(xiàn)功能描述
1.1 框架包含:Jenkins轴猎、Ant嵌莉、Jmeter
1.2 測試用例來源:.csv文件
如圖:
1.3 報(bào)警郵件
1.3.1 失敗用例內(nèi)容:詳細(xì)說明失敗用例的所有信息
1.3.2 失敗用例組統(tǒng)計(jì)及附件:
附件內(nèi)容包括
1.4 自動化測試執(zhí)行需要修改內(nèi)容
1.4.1 編寫測試用例
1.4.2 修改用例文件地址
1.4.3 修改報(bào)告附件地址
2、接口自動化引擎邏輯詳解
2.1 引擎框架
2.2 引擎邏輯描述
2.2.1 全局變量設(shè)計(jì)
2.2.2 測試用例文件導(dǎo)入
2.2.3 http頭信息管理
2.2.4 http cookie信息管理
2.2.5 判斷用例文件中用例是否需要測試
2.2.6 判斷http請求是post還是get
2.2.7 post請求配置邏輯
2.2.8 BeanShell斷言內(nèi)容
斷言內(nèi)容解析:
int errcount = Integer.parseInt(vars.get("errcount").trim());
int allcount = Integer.parseInt(vars.get("respcount").trim());
int equalscount=0;
int equalsokcount=0;
if("${HttpStatus}"!=""){
// log.info("==========================${HttpStatus}");
if(SampleResult.getResponseCode().equals("${HttpStatus}".trim())) {
equalscount++;
equalsokcount++;
// log.info("================equalscount: " + equalscount);
// log.info("================equalsokcount: " + equalsokcount);
}else {
String code = SampleResult.getResponseCode();
vars.put("respcode",code);
vars.put("AssertionNoOk","斷言失敗內(nèi)容為:HttpStatus捻脖,實(shí)際請求返回的HttpStatus為: "+code+",斷言內(nèi)容的HttpStatus為: "+"${HttpStatus}");
equalscount++;
// log.info("================ERRORequalscount: " + equalscount);
// log.info("================ERRORequalsokcount: " + equalsokcount);
// log.info("====================ErrorHttpStatus is: " + code);
}
}
if("${ResponseMessage}"!=""){
if(SampleResult.getResponseMessage().equalsIgnoreCase("${ResponseMessage}".trim())) {
equalscount++;
equalsokcount++;
}else {
equalscount++;
String msg = SampleResult.getResponseMessage();
vars.put("respmsg",msg);
vars.put("AssertionNoOk","斷言失敗內(nèi)容為:ResponseMessage烦秩,實(shí)際請求返回的ResponseMessage為: "+msg+",斷言內(nèi)容的ResponseMessage為: "+"${ResponseMessage}");
}
}
if("${ResponseData1}"!=""){
if(SampleResult.getResponseDataAsString().contains("${ResponseData1}".trim())) {
equalscount++;
equalsokcount++;
}else {
equalscount++;
String data = SampleResult.getResponseDataAsString();
vars.put("respdata",data);
vars.put("AssertionNoOk","斷言失敗內(nèi)容為:ResponseData1,實(shí)際請求返回的ResponseData1為: "+data+",斷言內(nèi)容的ResponseData1為: "+"${ResponseData1}");
}
}
//log.info("===================================ResponseData2=" + "${ResponseData2}".trim());
if("${ResponseData2}"!=""){
if(SampleResult.getResponseDataAsString().contains("${ResponseData2}".trim())) {
equalscount++;
equalsokcount++;
}else {
equalscount++;
String data = SampleResult.getResponseDataAsString();
vars.put("respdata",data);
vars.put("AssertionNoOk","斷言失敗內(nèi)容為:ResponseData2郎仆,實(shí)際請求返回的ResponseData2為: "+data+",斷言內(nèi)容的ResponseData2為: "+"${ResponseData2}");
}
}
if("${ResponseData3}"!=""){
if(SampleResult.getResponseDataAsString().contains("${ResponseData3}".trim())) {
equalscount++;
equalsokcount++;
}else {
equalscount++;
String data = SampleResult.getResponseDataAsString();
vars.put("respdata",data);
vars.put("AssertionNoOk","斷言失敗內(nèi)容為:ResponseData3,實(shí)際請求返回的ResponseData3為: "+data+",\n斷言內(nèi)容的ResponseData3為: "+"${ResponseData3}");
}
}
if(equalscount==equalsokcount) {
SampleResult.setSuccessful(true);
vars.put("sendemail","no");
allcount++;
vars.put("respcount",allcount.toString());
}else {
errcount++;
allcount++;
SampleResult.setSuccessful(false);
vars.put("errcount",errcount.toString());
vars.put("respcount",allcount.toString());
vars.put("sendemail","yes");
}
2.2.9 判斷是否發(fā)送郵件
利用SMTP Sampler發(fā)送郵件
2.2.10 get請求配置邏輯
2.2.11 所有用例執(zhí)行完畢兜蠕,發(fā)送報(bào)警郵件
郵件內(nèi)容如下:
至此扰肌,Jmeter HTTP接口自動化引擎搭建完畢
還可以利用jenkins定時執(zhí)行Jmeter引擎,從而實(shí)現(xiàn)對線上接口的監(jiān)控
資料參考:
(1)Jmeter build.xml文件:http://pan.baidu.com/s/1i46tMlR
(2)Jmeter生成報(bào)告格式(參考heman賀滿博客http://www.cnblogs.com/puresoul/http://pan.baidu.com/s/1kVssMzl):
(3)jmeter.properties(修改jmeter生成.jtl文件內(nèi)容配置):http://pan.baidu.com/s/1cyaNlc
(4)測試用例模版:http://pan.baidu.com/s/1kVegq6j
(5)Jmeter接口自動化引擎內(nèi)容:http://pan.baidu.com/s/1kVop9n5