本發(fā)明涉及api測試技術(shù)領(lǐng)域,具體涉及一種api測試方法和一種api測試裝置。
背景技術(shù):
api(applicationprogramminginterface,應(yīng)用編程接口)作為系統(tǒng)的重要組成部分,也是系統(tǒng)測試過程中必不可少的一個(gè)環(huán)節(jié)。
目前,api測試是一種作為集成測試的一部分,通過直接控制被測應(yīng)用的接口(api)來確定是否在功能、可靠性、性能和安全方面達(dá)到預(yù)期的軟件測試活動(dòng)。由于api都沒有g(shù)ui(graphicaluserinterface,圖形用戶接口)界面,api測試都是在通訊層進(jìn)行的。在現(xiàn)有的api測試過程當(dāng)中,一般都需要人為的去確認(rèn)api的返回?cái)?shù)據(jù)是否正確,這無疑增加了測試人員的工作強(qiáng)度,并且效率和精準(zhǔn)度較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問題之一。
為此,本發(fā)明的第一個(gè)目的在于提出一種api測試方法,該方法能夠自動(dòng)驗(yàn)證測試數(shù)據(jù)并返回測試結(jié)果,無需人為干擾,在給用戶帶來便利的同時(shí),還提高了效率和精準(zhǔn)度,從而提升了用戶體驗(yàn)。
本發(fā)明的第二個(gè)目的在于提出一種api測試裝置。
為實(shí)現(xiàn)上述目的,本發(fā)明第一方面實(shí)施例提出了一種api測試方法,包括以下步驟:獲取測試數(shù)據(jù),其中,所述測試數(shù)據(jù)是解析api的返回?cái)?shù)據(jù)后得到的;提取所述測試數(shù)據(jù)中的多個(gè)節(jié)點(diǎn)路徑,并將所述多個(gè)節(jié)點(diǎn)路徑添加至節(jié)點(diǎn)路徑集合;遍歷所述節(jié)點(diǎn)路徑集合,對(duì)所述節(jié)點(diǎn)路徑集合中的多個(gè)節(jié)點(diǎn)路徑以及所述多個(gè)節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值進(jìn)行驗(yàn)證;以及根據(jù)驗(yàn)證結(jié)果生成所述測試數(shù)據(jù)的測試結(jié)果。
根據(jù)本發(fā)明實(shí)施例的api測試方法,通過獲取測試數(shù)據(jù),提取測試數(shù)據(jù)中的多個(gè)節(jié)點(diǎn)路徑,并將多個(gè)節(jié)點(diǎn)路徑添加至節(jié)點(diǎn)路徑集合,而后遍歷節(jié)點(diǎn)路徑集合,對(duì)節(jié)點(diǎn)路徑集合中的多個(gè)節(jié)點(diǎn)路徑以及多個(gè)節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值進(jìn)行驗(yàn)證,以及根據(jù)驗(yàn)證結(jié)果生成測試數(shù)據(jù)的測試結(jié)果,由此,該方法能夠自動(dòng)驗(yàn)證測試數(shù)據(jù)并返回測試結(jié)果,無需人為干擾,在給用戶帶來便利的同時(shí),還提高了效率和精準(zhǔn)度,從而提升了用戶體驗(yàn)。
另外,根據(jù)本發(fā)明上述api測試方法還可以具有如下附加的技術(shù)特征:
在本發(fā)明的一個(gè)實(shí)施例中,所述對(duì)所述節(jié)點(diǎn)路徑集合中的多個(gè)節(jié)點(diǎn)路徑以及所述多個(gè)節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值進(jìn)行驗(yàn)證,包括:判斷所述節(jié)點(diǎn)路徑集合中的當(dāng)前節(jié)點(diǎn)路徑是否存在;若所述當(dāng)前節(jié)點(diǎn)路徑存在,則根據(jù)所述當(dāng)前節(jié)點(diǎn)路徑獲取所述當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值;將所述當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值與預(yù)期節(jié)點(diǎn)值進(jìn)行比較,以判斷所述當(dāng)前節(jié)點(diǎn)路徑以及所述當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值是否符合預(yù)設(shè)要求。
在本發(fā)明的一個(gè)實(shí)施例中,在所述判斷所述節(jié)點(diǎn)路徑集合中的當(dāng)前節(jié)點(diǎn)路徑是否存在之后,還包括:若所述當(dāng)前節(jié)點(diǎn)路徑不存在,則判斷所述當(dāng)前節(jié)點(diǎn)路徑驗(yàn)證失敗,并進(jìn)一步判斷所述當(dāng)前節(jié)點(diǎn)路徑的下一個(gè)節(jié)點(diǎn)路徑是否存在。
在本發(fā)明的一個(gè)實(shí)施例中,上述api測試方法還包括:若所述節(jié)點(diǎn)路徑集合的所述多個(gè)節(jié)點(diǎn)路徑中驗(yàn)證失敗的節(jié)點(diǎn)路徑的數(shù)量超過預(yù)設(shè)閾值時(shí),生成所述測試數(shù)據(jù)測試失敗的測試結(jié)果。
在本發(fā)明的一個(gè)實(shí)施例中,在所述獲取測試數(shù)據(jù)之前,還包括:編寫多個(gè)固定格式的測試方法,其中,所述多個(gè)固定格式的測試方法具有不同的名稱和注釋;根據(jù)所述固定格式的測試方法的名稱和注釋配置請求報(bào)文,并編寫所述請求報(bào)文對(duì)應(yīng)的請求數(shù)據(jù)文件;根據(jù)所述請求報(bào)文和所述請求數(shù)據(jù)文件執(zhí)行所述固定格式的測試方法,并判斷所述固定格式的測試方法是否執(zhí)行成功;如果所述固定格式的測試方法執(zhí)行成功,則根據(jù)所述固定格式的測試方法對(duì)應(yīng)的預(yù)期數(shù)據(jù)對(duì)所述測試數(shù)據(jù)進(jìn)行測試。
在本發(fā)明的一個(gè)實(shí)施例中,所述請求報(bào)文為excel文件,所述請求數(shù)據(jù)文件為json文件,所述預(yù)期數(shù)據(jù)和所述測試數(shù)據(jù)均為json數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,通過配置文件來確定所述請求數(shù)據(jù)的加密方案。
在本發(fā)明的一個(gè)實(shí)施例中,上述api測試方法還包括:如果所述固定格式的測試方法執(zhí)行失敗,則終止執(zhí)行后續(xù)的所述固定格式的測試方法,并對(duì)所述固定格式的測試方法、所述請求報(bào)文和請求數(shù)據(jù)文件中的至少一個(gè)進(jìn)行檢測和修改。
在本發(fā)明的一個(gè)實(shí)施例中,所述請求報(bào)文包含方法名稱、接口描述、接口請求地址和請求方式。
為實(shí)現(xiàn)上述目的,本發(fā)明第二方面實(shí)施例提出了一種api測試裝置,包括:獲取模塊,用于獲取測試數(shù)據(jù),其中,所述測試數(shù)據(jù)是解析api的返回?cái)?shù)據(jù)后得到的;提取模塊,用于提取所述測試數(shù)據(jù)中的多個(gè)節(jié)點(diǎn)路徑,并將所述多個(gè)節(jié)點(diǎn)路徑添加至節(jié)點(diǎn)路徑集合;驗(yàn)證模塊,用于遍歷所述節(jié)點(diǎn)路徑集合,對(duì)所述節(jié)點(diǎn)路徑集合中的多個(gè)節(jié)點(diǎn)路徑以及所述多個(gè)節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值進(jìn)行驗(yàn)證;以及生成模塊,用于根據(jù)驗(yàn)證結(jié)果生成所述測試數(shù)據(jù)的測試結(jié)果。
根據(jù)本發(fā)明實(shí)施例的api測試裝置,通過獲取模塊獲取測試數(shù)據(jù),并通過提取模塊提取測試數(shù)據(jù)中的多個(gè)節(jié)點(diǎn)路徑,并將多個(gè)節(jié)點(diǎn)路徑添加至節(jié)點(diǎn)路徑集合,而后通過遍歷模塊歷節(jié)點(diǎn)路徑集合,對(duì)節(jié)點(diǎn)路徑集合中的多個(gè)節(jié)點(diǎn)路徑以及多個(gè)節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值進(jìn)行驗(yàn)證,以及生成模塊根據(jù)驗(yàn)證結(jié)果生成測試數(shù)據(jù)的測試結(jié)果。由此,該裝置能夠自動(dòng)驗(yàn)證測試數(shù)據(jù)并返回測試結(jié)果,無需人為干擾,在給用戶帶來便利的同時(shí),還提高了效率和精準(zhǔn)度,從而提升了用戶體驗(yàn)。
另外,根據(jù)本發(fā)明上述api測試裝置還可以具有如下附加的技術(shù)特征:
在本發(fā)明的一個(gè)實(shí)施例中,所述驗(yàn)證模塊,包括:第一判斷單元,用于判斷所述節(jié)點(diǎn)路徑集合中的當(dāng)前節(jié)點(diǎn)路徑是否存在;獲取單元,用于若所述當(dāng)前節(jié)點(diǎn)路徑存在,則根據(jù)所述當(dāng)前節(jié)點(diǎn)路徑獲取所述當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值;第二判斷單元,用于將所述當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值與預(yù)期節(jié)點(diǎn)值進(jìn)行比較,以判斷所述當(dāng)前節(jié)點(diǎn)路徑以及所述當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值是否符合預(yù)設(shè)要求。
在本發(fā)明的一個(gè)實(shí)施例中,所述驗(yàn)證模塊,還包括:第三判斷單元,用于若所述當(dāng)前節(jié)點(diǎn)路徑不存在,則判斷所述當(dāng)前節(jié)點(diǎn)路徑驗(yàn)證失敗,并進(jìn)一步判斷所述當(dāng)前節(jié)點(diǎn)路徑的下一個(gè)節(jié)點(diǎn)路徑是否存在。
在本發(fā)明的一個(gè)實(shí)施例中,所述驗(yàn)證模塊,還包括:生成單元,用于在所述節(jié)點(diǎn)路徑集合的所述多個(gè)節(jié)點(diǎn)路徑中驗(yàn)證失敗的節(jié)點(diǎn)路徑的數(shù)量超過預(yù)設(shè)閾值時(shí),生成所述測試數(shù)據(jù)測試失敗的測試結(jié)果。
在本發(fā)明的一個(gè)實(shí)施例中,上述api測試裝置還包括:編寫模塊,用于編寫多個(gè)固定格式的測試方法,其中,所述多個(gè)固定格式的測試方法具有不同的名稱和注釋;配置模塊,用于根據(jù)所述固定格式的測試方法的名稱和注釋配置請求報(bào)文,并編寫所述請求報(bào)文對(duì)應(yīng)的請求數(shù)據(jù)文件;判斷模塊,用于根據(jù)所述請求報(bào)文和所述請求數(shù)據(jù)文件執(zhí)行所述固定格式的測試方法,并判斷所述固定格式的測試方法是否執(zhí)行成功;測試模塊,用于在所述固定格式的測試方法執(zhí)行成功時(shí),根據(jù)所述固定格式的測試方法對(duì)應(yīng)的預(yù)期數(shù)據(jù)對(duì)所述測試數(shù)據(jù)進(jìn)行測試。
在本發(fā)明的一個(gè)實(shí)施例中,所述請求報(bào)文為excel文件,所述請求數(shù)據(jù)文件為json文件,所述預(yù)期數(shù)據(jù)和所述測試數(shù)據(jù)均為json數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,通過配置文件來確定所述請求數(shù)據(jù)的加密方案。
在本發(fā)明的一個(gè)實(shí)施例中,上述api測試裝置還包括:修改模塊,用于在所述固定格式的測試方法執(zhí)行失敗時(shí),終止執(zhí)行后續(xù)的所述固定格式的測試方法,并對(duì)所述固定格式的測試方法、所述請求報(bào)文和請求數(shù)據(jù)文件中的至少一個(gè)進(jìn)行檢測和修改。
在本發(fā)明的一個(gè)實(shí)施例中,所述請求報(bào)文包含方法名稱、接口描述、接口請求地址和 請求方式。
本發(fā)明附加的方面的優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
附圖說明
圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的api測試方法的流程圖。
圖2是根據(jù)本發(fā)明另一個(gè)實(shí)施例的api測試方法的流程圖。
圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的固定格式的測試方法的代碼示意圖。
圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的請求文件的示意圖。
圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的固定格式的測試方法執(zhí)行輸出結(jié)果示意圖。
圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的api測試裝置的方框示意圖。
圖7是根據(jù)本發(fā)明另一個(gè)實(shí)施例的api測試裝置的方框示意圖。
圖8是根據(jù)本發(fā)明又一個(gè)實(shí)施例的api測試裝置的方框示意圖。
圖9是根據(jù)本發(fā)明再一個(gè)實(shí)施例的api測試裝置的方框示意圖。
具體實(shí)施方式
下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。
下面參照附圖來描述根據(jù)本發(fā)明實(shí)施例提出的api測試方法和裝置。
圖1為根據(jù)本發(fā)明一個(gè)實(shí)施例的api測試方法的流程圖。
如圖1所示,本發(fā)明實(shí)施例的api測試方法,包括以下步驟:
s1,獲取測試數(shù)據(jù)。
其中,測試數(shù)據(jù)是解析api的返回?cái)?shù)據(jù)后得到的,測試數(shù)據(jù)可為json數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,如圖2所示,在獲取測試數(shù)據(jù)之前,還可以包括以下步驟:
s101,編寫多個(gè)固定格式的測試方法,其中,多個(gè)固定格式的測試方法具有不同的名稱和注釋。
具體地,上述api測試方法可提供一段固定格式的測試代碼,用戶可以通過將該段固定格式的測試代碼進(jìn)行粘貼復(fù)制,并修改其名稱和注釋,來編寫多個(gè)固定格式的測試方法,其中,多個(gè)固定格式的測試方法具有不同的名稱和注釋。例如,如圖3所示,是用戶登錄api的測試方法。由此,用戶即使不會(huì)編程,也可以輕松編寫自動(dòng)化測試代碼,以便完成接口(api)自動(dòng)化的測試。
s102,根據(jù)固定格式的測試方法的名稱和注釋配置請求報(bào)文,并編寫請求報(bào)文對(duì)應(yīng)的請求數(shù)據(jù)文件。其中,請求報(bào)文可包含方法名稱、接口描述、接口請求地址和請求方式等,并且請求報(bào)文可為excel文件,請求數(shù)據(jù)文件可為json文件,并且請求數(shù)據(jù)文件中含有測試參數(shù)。
需要理解的是,如圖4所示,請求報(bào)文中的方法名稱與固定格式的測試方法的名稱相同,并且一一對(duì)應(yīng),接口描述可與固定格式的測試方法的注釋相同,以便固定格式的測試方法在測試的時(shí)候順利的連接待測的api。
在本發(fā)明的實(shí)施例中,可通過配置文件來確定請求數(shù)據(jù)的加密方案,其中,配置文件可為parameters.xml文件。
s103,根據(jù)請求報(bào)文和請求數(shù)據(jù)文件執(zhí)行固定格式的測試方法,并判斷固定格式的測試方法是否執(zhí)行成功。
具體地,根據(jù)請求報(bào)文找到相應(yīng)的待測api,然后將請求數(shù)據(jù)文件中的參數(shù)代入待測的api中并執(zhí)行相應(yīng)的固定格式的測試方法,以及根據(jù)輸出結(jié)果判斷該固定格式的測試方法是否執(zhí)行成功。例如,如圖5所示,如果輸出結(jié)果中包含請求返回參數(shù),則表明該固定格式的測試方法執(zhí)行成功,否則執(zhí)行失敗。
進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,如果固定格式的測試方法執(zhí)行失敗,則終止執(zhí)行后續(xù)的固定格式的測試方法,并對(duì)固定格式的測試方法、請求報(bào)文和請求數(shù)據(jù)文件中的至少一個(gè)進(jìn)行檢測和修改。
s104,如果固定格式的測試方法執(zhí)行成功,則根據(jù)固定格式的測試方法對(duì)應(yīng)的預(yù)期數(shù)據(jù)對(duì)測試數(shù)據(jù)進(jìn)行測試。其中,預(yù)期數(shù)據(jù)是用戶根據(jù)實(shí)際情況進(jìn)行編寫的,預(yù)期數(shù)據(jù)可為json數(shù)據(jù)。
s2,提取測試數(shù)據(jù)中的多個(gè)節(jié)點(diǎn)路徑,并將多個(gè)節(jié)點(diǎn)路徑添加至節(jié)點(diǎn)路徑集合。
s3,遍歷節(jié)點(diǎn)路徑集合,對(duì)節(jié)點(diǎn)路徑集合中的多個(gè)節(jié)點(diǎn)路徑以及多個(gè)節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值進(jìn)行驗(yàn)證。
在本發(fā)明的一個(gè)實(shí)施例中,對(duì)節(jié)點(diǎn)路徑集合中的多個(gè)節(jié)點(diǎn)路徑以及多個(gè)節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值進(jìn)行驗(yàn)證,具體可包括,判斷節(jié)點(diǎn)路徑集合中的當(dāng)前節(jié)點(diǎn)路徑是否存在,若當(dāng)前節(jié)點(diǎn)路徑存在,則根據(jù)當(dāng)前節(jié)點(diǎn)路徑獲取當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值,并將當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值與預(yù)期節(jié)點(diǎn)值進(jìn)行比較,以判斷當(dāng)前節(jié)點(diǎn)路徑以及當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值是否符合預(yù)設(shè)要求,其中,預(yù)設(shè)要求可根據(jù)實(shí)際情況進(jìn)行標(biāo)定;若當(dāng)前節(jié)點(diǎn)路徑不存在,則判斷當(dāng)前節(jié)點(diǎn)路徑驗(yàn)證失敗,并進(jìn)一步判斷當(dāng)前節(jié)點(diǎn)路徑的下一個(gè)節(jié)點(diǎn)路徑是否存在。其中,需要理解的是,上述預(yù)期節(jié)點(diǎn)值是從預(yù)期數(shù)據(jù)中解析而來的。
在本發(fā)明的另一個(gè)實(shí)施例中,上述api測試方法還可包括:若節(jié)點(diǎn)路徑集合的多個(gè)節(jié) 點(diǎn)路徑中驗(yàn)證失敗的節(jié)點(diǎn)路徑的數(shù)量超過預(yù)設(shè)閾值時(shí),生成測試數(shù)據(jù)測試失敗的測試結(jié)果。其中,預(yù)設(shè)閥值可根據(jù)實(shí)際情況進(jìn)行標(biāo)定,例如,預(yù)設(shè)閥值可為2。
舉例而言,判斷節(jié)點(diǎn)路徑集合中的當(dāng)前節(jié)點(diǎn)路徑是否存在,若當(dāng)前節(jié)點(diǎn)路徑不存在,則可將本次驗(yàn)證標(biāo)記為“fail”,并且拋出異常,同時(shí)進(jìn)入下一個(gè)循環(huán),繼續(xù)判斷下一個(gè)節(jié)點(diǎn)路徑;若當(dāng)前節(jié)點(diǎn)路徑存在,則可根據(jù)當(dāng)前節(jié)點(diǎn)路徑獲取當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值,并將當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值與預(yù)期節(jié)點(diǎn)值進(jìn)行比較,如果該節(jié)點(diǎn)值與預(yù)期節(jié)點(diǎn)值相等,則可將本次驗(yàn)證標(biāo)記為“pass”,如果該節(jié)點(diǎn)值與預(yù)期節(jié)點(diǎn)值不相等,則可將本次驗(yàn)證標(biāo)記為“fail”,同時(shí)進(jìn)入下一個(gè)循環(huán),繼續(xù)判斷下一個(gè)節(jié)點(diǎn)路徑,直至出現(xiàn)標(biāo)記為“fail”的次數(shù)大于或等于預(yù)設(shè)閥值(例如2),或者節(jié)點(diǎn)路徑集合遍歷完畢,則該api的測試結(jié)束,并生成相應(yīng)的測試結(jié)果。由此,能夠自動(dòng)驗(yàn)證測試數(shù)據(jù)并返回測試結(jié)果,無需人為干擾,在給用戶帶來便利的同時(shí),還提高了效率和精準(zhǔn)度,從而提升了用戶體驗(yàn)。
s4,根據(jù)驗(yàn)證結(jié)果生成測試數(shù)據(jù)的測試結(jié)果。
根據(jù)本發(fā)明實(shí)施例的api測試方法,通過獲取測試數(shù)據(jù),提取測試數(shù)據(jù)中的多個(gè)節(jié)點(diǎn)路徑,并將多個(gè)節(jié)點(diǎn)路徑添加至節(jié)點(diǎn)路徑集合,而后遍歷節(jié)點(diǎn)路徑集合,對(duì)節(jié)點(diǎn)路徑集合中的多個(gè)節(jié)點(diǎn)路徑以及多個(gè)節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值進(jìn)行驗(yàn)證,以及根據(jù)驗(yàn)證結(jié)果生成測試數(shù)據(jù)的測試結(jié)果,由此,能夠自動(dòng)驗(yàn)證測試數(shù)據(jù)并返回測試結(jié)果,無需人為干擾,在給用戶帶來便利的同時(shí),還提高了效率和精準(zhǔn)度,從而提升了用戶體驗(yàn)。
為了實(shí)現(xiàn)上述實(shí)施例,本發(fā)明還提出一種api測試裝置。
圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的api測試裝置的方框示意圖。
如圖6所示,該api測試裝置包括獲取模塊100、提取模塊200、驗(yàn)證模塊300和生成模塊400。
具體地,獲取模塊100用于獲取測試數(shù)據(jù)。
其中,測試數(shù)據(jù)是解析api的返回?cái)?shù)據(jù)后得到的,測試數(shù)據(jù)可為json數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,如圖7所示,上述api測試裝置還可包括編寫模塊500、配置模塊600、判斷模塊700和測試模塊800。
具體地,編寫模塊500用于編寫多個(gè)固定格式的測試方法,其中,多個(gè)固定格式的測試方法具有不同的名稱和注釋。
具體地,編寫模塊500可提供一段固定格式的測試代碼,用戶可以通過將該段固定格式的測試代碼進(jìn)行粘貼復(fù)制,并修改其名稱和注釋,來編寫多個(gè)固定格式的測試方法,其中,多個(gè)固定格式的測試方法具有不同的名稱和注釋。例如,如圖3所示,是用戶登錄api的測試方法。由此,用戶即使不會(huì)編程,也可以輕松編寫自動(dòng)化測試代碼,以便完成接口(api)自動(dòng)化的測試。
配置模塊600用于根據(jù)固定格式的測試方法的名稱和注釋配置請求報(bào)文,并編寫請求報(bào)文對(duì)應(yīng)的請求數(shù)據(jù)文件。其中,請求報(bào)文可包含方法名稱、接口描述、接口請求地址和請求方式等,并且請求報(bào)文可為excel文件,請求數(shù)據(jù)文件可為json文件,并且請求數(shù)據(jù)文件中含有測試參數(shù)。
需要理解的是,如圖4所示,請求報(bào)文中的方法名稱與固定格式的測試方法的名稱相同,并且一一對(duì)應(yīng),接口描述可與固定格式的測試方法的注釋相同,以便固定格式的測試方法在測試的時(shí)候順利的連接待測的api。
在本發(fā)明的實(shí)施例中,可通過配置文件來確定請求數(shù)據(jù)的加密方案,其中,配置文件可為parameters.xml文件。
判斷模塊700用于根據(jù)請求報(bào)文和請求數(shù)據(jù)文件執(zhí)行固定格式的測試方法,并判斷固定格式的測試方法是否執(zhí)行成功。
具體地,判斷模塊700根據(jù)請求報(bào)文找到相應(yīng)的待測api,然后將請求數(shù)據(jù)文件中的參數(shù)代入待測的api中并執(zhí)行相應(yīng)的固定格式的測試方法,以及根據(jù)輸出結(jié)果判斷該固定格式的測試方法是否執(zhí)行成功。例如,如圖5所示,如果輸出結(jié)果中包含請求返回參數(shù),則表明該固定格式的測試方法執(zhí)行成功,否則執(zhí)行失敗。
進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,如圖8所示,上述api測試裝置還可包括修改模塊900用于在固定格式的測試方法執(zhí)行失敗時(shí),終止執(zhí)行后續(xù)的固定格式的測試方法,并對(duì)固定格式的測試方法、請求報(bào)文和請求數(shù)據(jù)文件中的至少一個(gè)進(jìn)行檢測和修改。
測試模塊800用于在固定格式的測試方法執(zhí)行成功時(shí),根據(jù)固定格式的測試方法對(duì)應(yīng)的預(yù)期數(shù)據(jù)對(duì)測試數(shù)據(jù)進(jìn)行測試。其中,預(yù)期數(shù)據(jù)是用戶根據(jù)實(shí)際情況進(jìn)行編寫的,預(yù)期數(shù)據(jù)可為json數(shù)據(jù)。
提取模塊200用于提取測試數(shù)據(jù)中的多個(gè)節(jié)點(diǎn)路徑,并將多個(gè)節(jié)點(diǎn)路徑添加至節(jié)點(diǎn)路徑集合。
驗(yàn)證模塊300用于遍歷節(jié)點(diǎn)路徑集合,對(duì)節(jié)點(diǎn)路徑集合中的多個(gè)節(jié)點(diǎn)路徑以及多個(gè)節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值進(jìn)行驗(yàn)證。
在本發(fā)明的一個(gè)實(shí)施例中,如圖9所示,驗(yàn)證模塊,可包括:第一判斷單元310、獲取單元320、第二判斷單元330、第三判斷單元340和生成單元350。
具體地,第一判斷單元310用于判斷節(jié)點(diǎn)路徑集合中的當(dāng)前節(jié)點(diǎn)路徑是否存在。
獲取單元320用于若當(dāng)前節(jié)點(diǎn)路徑存在,則根據(jù)當(dāng)前節(jié)點(diǎn)路徑獲取當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值;
第二判斷單元330用于將當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值與預(yù)期節(jié)點(diǎn)值進(jìn)行比較,以判斷當(dāng)前節(jié)點(diǎn)路徑以及當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值是否符合預(yù)設(shè)要求。其中,預(yù)設(shè)要求可根據(jù) 實(shí)際情況進(jìn)行標(biāo)定。
其中,需要理解的是,上述預(yù)期節(jié)點(diǎn)值是從預(yù)期數(shù)據(jù)中解析而來的。
第三判斷單元340用于若當(dāng)前節(jié)點(diǎn)路徑不存在,則判斷當(dāng)前節(jié)點(diǎn)路徑驗(yàn)證失敗,并進(jìn)一步判斷當(dāng)前節(jié)點(diǎn)路徑的下一個(gè)節(jié)點(diǎn)路徑是否存在。
生成單元350用于在節(jié)點(diǎn)路徑集合的多個(gè)節(jié)點(diǎn)路徑中驗(yàn)證失敗的節(jié)點(diǎn)路徑的數(shù)量超過預(yù)設(shè)閾值時(shí),生成測試數(shù)據(jù)測試失敗的測試結(jié)果。其中,預(yù)設(shè)閥值可根據(jù)實(shí)際情況進(jìn)行標(biāo)定,例如,預(yù)設(shè)閥值可為2。
舉例而言,第一判斷單元310判斷節(jié)點(diǎn)路徑集合中的當(dāng)前節(jié)點(diǎn)路徑是否存在,第三判斷單元340在第一判斷單元310判斷當(dāng)前節(jié)點(diǎn)路徑不存在時(shí),可將本次驗(yàn)證標(biāo)記為“fail”,并且拋出異常,同時(shí)進(jìn)入下一個(gè)循環(huán),并進(jìn)一步判斷當(dāng)前節(jié)點(diǎn)路徑的下一個(gè)節(jié)點(diǎn)路徑,獲取單元320在第一判斷單元310判斷當(dāng)前節(jié)點(diǎn)路徑存在時(shí),可根據(jù)當(dāng)前節(jié)點(diǎn)路徑獲取當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值,而后第二判斷單元330將當(dāng)前節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值與預(yù)期節(jié)點(diǎn)值進(jìn)行比較,如果該節(jié)點(diǎn)值與預(yù)期節(jié)點(diǎn)值相等,則可將本次驗(yàn)證標(biāo)記為“pass”,如果該節(jié)點(diǎn)值與預(yù)期節(jié)點(diǎn)值不相等,則可將本次驗(yàn)證標(biāo)記為“fail”,同時(shí)進(jìn)入下一個(gè)循環(huán),繼續(xù)判斷下一個(gè)節(jié)點(diǎn)路徑,生成單元350檢測出現(xiàn)標(biāo)記為“fail”的次數(shù),直至該次數(shù)大于或等于預(yù)設(shè)閥值(例如2),或者節(jié)點(diǎn)路徑集合遍歷完畢,則該api的測試結(jié)束,并生成相應(yīng)的測試結(jié)果。由此,能夠自動(dòng)驗(yàn)證測試數(shù)據(jù)并返回測試結(jié)果,無需人為干擾,在給用戶帶來便利的同時(shí),還提高了效率和精準(zhǔn)度,從而提升了用戶體驗(yàn)。
生成模塊400用于根據(jù)驗(yàn)證結(jié)果生成測試數(shù)據(jù)的測試結(jié)果。
根據(jù)本發(fā)明實(shí)施例的api測試裝置,通過獲取模塊獲取測試數(shù)據(jù),并通過提取模塊提取測試數(shù)據(jù)中的多個(gè)節(jié)點(diǎn)路徑,并將多個(gè)節(jié)點(diǎn)路徑添加至節(jié)點(diǎn)路徑集合,而后通過遍歷模塊歷節(jié)點(diǎn)路徑集合,對(duì)節(jié)點(diǎn)路徑集合中的多個(gè)節(jié)點(diǎn)路徑以及多個(gè)節(jié)點(diǎn)路徑對(duì)應(yīng)的節(jié)點(diǎn)值進(jìn)行驗(yàn)證,以及生成模塊根據(jù)驗(yàn)證結(jié)果生成測試數(shù)據(jù)的測試結(jié)果。由此,該裝置能夠自動(dòng)驗(yàn)證測試數(shù)據(jù)并返回測試結(jié)果,無需人為干擾,在給用戶帶來便利的同時(shí),還提高了效率和精準(zhǔn)度,從而提升了用戶體驗(yàn)。
在本發(fā)明的描述中,需要理解的是,術(shù)語“中心”、“縱向”、“橫向”、“長度”、“寬度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“豎直”、“水平”、“頂”、“底”、“內(nèi)”、“外”、“順時(shí)針”、“逆時(shí)針”、“軸向”、“徑向”、“周向”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對(duì)本發(fā)明的限制。
此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對(duì)重要 性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括一個(gè)或者更多個(gè)該特征。在本發(fā)明的描述中,“多個(gè)”的含義是兩個(gè)或兩個(gè)以上,除非另有明確具體的限定。
在本發(fā)明中,除非另有明確的規(guī)定和限定,術(shù)語“安裝”、“相連”、“連接”、“固定”等術(shù)語應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或成一體;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個(gè)元件內(nèi)部的連通或兩個(gè)元件的相互作用關(guān)系。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語在本發(fā)明中的具體含義。
在本發(fā)明中,除非另有明確的規(guī)定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接觸,或第一和第二特征通過中間媒介間接接觸。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或僅僅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或僅僅表示第一特征水平高度小于第二特征。
在本說明書的描述中,參考術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對(duì)上述術(shù)語的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。