使用Java自動(dòng)生成接口測(cè)試用例

一、需求

接口測(cè)試用例中部分測(cè)試用例主要是對(duì)接口的入?yún)ⅰ⒊鰠⑦M(jìn)行測(cè)試,入?yún)⒊鰠⒅饕蛿?shù)據(jù)類(lèi)型有關(guān),此部分測(cè)試用例可以進(jìn)行抽象建模使用JAVA自動(dòng)化生成,提升測(cè)試用例編寫(xiě)的效率。

二、設(shè)計(jì)


三、實(shí)現(xiàn)過(guò)程

1、工具:Intellij

項(xiàng)目結(jié)構(gòu)如下:生成的測(cè)試用例存放于resource下的APITestCases

excel文件中


2、pom.xml文件導(dǎo)入依賴(lài)包

需要對(duì)excel進(jìn)行讀寫(xiě)、解析Json格式數(shù)據(jù),因此需要導(dǎo)入poi和fastjson相關(guān)包



3、實(shí)現(xiàn)設(shè)計(jì)

(1) 按照一定格式整理接口信息,存放在APITestCase文件的ApiInfo

sheet頁(yè)

(2) 代碼實(shí)現(xiàn)

函數(shù)1:readApiInfo()

作用:讀取接口信息

函數(shù)2:generateMapp(String type,String paramName)

參數(shù)說(shuō)明:type:數(shù)據(jù)類(lèi)型,paramName:參數(shù)名

作用:根據(jù)不同的數(shù)據(jù)類(lèi)型生成不同的測(cè)試項(xiàng)

if(("int").equalsIgnoreCase(type)||("long").equalsIgnoreCase(type)){

??? map.put(0, "");

??? map.put(1, "0");

??? map.put(2, ""+type+"");

??? map.put(3, "數(shù)負(fù)數(shù)");

??? map.put(4, "");

}

else{

??? map.put(0, "");

??? map.put(1, "");

??? map.put(2, "長(zhǎng)度超過(guò)限制");

??? map.put(3, "特殊字符");

if(paramName.equalsIgnoreCase("appKey") ||paramName.equalsIgnoreCase("pId") ||? paramName.equalsIgnoreCase("appId") ||paramName.equalsIgnoreCase("userId")){

??????? map.put(4, "不存在");

??????? map.put(5, "不匹配");

??? }

else if(paramName.equalsIgnoreCase("deviceSerial")){

??????? map.put(2, "不存在");

??????? map.put(3, "不匹配");

??????? map.put(4, "線(xiàn)設(shè)備");

??????? map.put(5, "線(xiàn)設(shè)備");

??? }

函數(shù)3:getExpectedResults(String expectedResult)

參數(shù):expectedResult即APIInfo sheet頁(yè)輸入的預(yù)期結(jié)果(json格式)

作用:按順序解析Json數(shù)據(jù)的key、value, 在接口測(cè)試用例中加入對(duì)key的驗(yàn)證


函數(shù)4:GenerateApiTestCase(String moduleInfo, String testCaseName, String expectedResult, String apiUrl, String commentInfo)

參數(shù)說(shuō)明:moduleInfo:即APIInfo sheet頁(yè)輸入的模塊1信息

?????????????????? ?testCaseName::即APIInfo

sheet頁(yè)輸入的用例名稱(chēng)

?????????????????? ?expectedResult:即APIInfo

sheet頁(yè)輸入的預(yù)期結(jié)果(json格式)

?????????????????? ? apiUrl:即APIInfo sheet頁(yè)輸入的涉及接口信息

?????????????????? ?commentInfo:即APIInfo

sheet頁(yè)輸入的備注信息

作用:生成測(cè)試用例


4、編譯文件

打印日志如下

總共有1***************************************1RTMP取流并發(fā)限制獲取

{"code":"200","data":{"limittype":0,"limitnum":10,"userId":"","devsn":"","chnl":"","streamtype":2}}

#######################? key:code

#######################? key:data

#######################? key:limittype

#######################? key:limitnum

#######################? key:userId

#######################? key:devsn

#######################? key:chnl

#######################? key:streamtype

用例名稱(chēng): 接口返回包括code字段

用例名稱(chēng): 接口返回包括data字段

用例名稱(chēng): 接口返回包括limittype字段

用例名稱(chēng): 接口返回包括limitnum字段

用例名稱(chēng): 接口返回包括userId字段

用例名稱(chēng): 接口返回包括devsn字段

用例名稱(chēng): 接口返回包括chnl字段

用例名稱(chēng): 接口返回包括streamtype字段

用例名稱(chēng): 參數(shù)校驗(yàn) -

uuid-String-必填

用例名稱(chēng): 參數(shù)校驗(yàn) -

cdn-String-非必填

生成的測(cè)試用例


四、實(shí)現(xiàn)價(jià)值與不足

???????? 需要對(duì)1個(gè)復(fù)雜接口進(jìn)行充分測(cè)試,往往可能會(huì)設(shè)計(jì)超過(guò)50條的測(cè)試用例,如果只是用人工手動(dòng)輸出用例的方式,1個(gè)工作日可以完成150-200個(gè)測(cè)試用例的編寫(xiě)。

使用該工具生成測(cè)試用例已有1季度,可穩(wěn)定生成用例,生成200個(gè)測(cè)試用例的時(shí)間差不多在10分鐘左右,大大提升了測(cè)試用例編寫(xiě)的效率,可以將更多時(shí)間花在思考測(cè)試用例的設(shè)計(jì)上;

不足之處在于:該工具對(duì)于入?yún)⒌男r?yàn)還是不夠充分,對(duì)于已經(jīng)設(shè)置好邊界值的入?yún)⒖紤]不足,用例場(chǎng)景性不夠,這都是后期需要優(yōu)化改進(jìn)的地方。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容