本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種接口測試方法及裝置。
背景技術(shù):
接口測試是對系統(tǒng)間的接口進行的一種測試。接口測試主要用于檢測系統(tǒng)與系統(tǒng)之間,以及系統(tǒng)內(nèi)部的各個子系統(tǒng)之間的交互接口是否正常。
現(xiàn)有技術(shù)中,通常采用Postman、Soap UI和Selenium等自動化測試工具進行服務(wù)端的接口測試。具體的,測試人員根據(jù)某個測試用例的需求文檔中預(yù)設(shè)的期望值在自動化測試工具中預(yù)先設(shè)置驗證點(驗證點可以包括某個特定關(guān)鍵字(英文:key)、特定的值(英文:value)、某個值出現(xiàn)的次數(shù)等),再在自動化測試工具中輸入請求方式、請求訪問地址(也稱為統(tǒng)一資源定位符(英文:Uniform Resource Locator;簡稱:URL))、請求參數(shù)等來對待測的接口進行接口測試,得到返回值。最后根據(jù)預(yù)先設(shè)置的驗證點,驗證返回值中的相應(yīng)內(nèi)容,當返回值中的相應(yīng)內(nèi)容與預(yù)先設(shè)置的驗證點中的內(nèi)容一致時,確定當前該接口正常;當返回值中的相應(yīng)內(nèi)容與預(yù)先設(shè)置的驗證點中的內(nèi)容不一致時,確定該接口異常。
但是目前對返回值進行驗證時,僅是驗證了預(yù)先設(shè)置的驗證點中的內(nèi)容,由于驗證點是測試人員預(yù)先設(shè)置的,當返回值的數(shù)據(jù)量過大時,無法保證為返回值中的所有數(shù)據(jù)設(shè)置驗證點,從而無法保證返回值中的所有內(nèi)容都能得到驗證,易發(fā)生漏測現(xiàn)象,所以接口測試的可靠性較差。
技術(shù)實現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中無法保證返回值中的所有內(nèi)容都能得到驗證,易發(fā)生漏測現(xiàn)象,接口測試的可靠性較差的問題,本發(fā)明實施例提供了一種接口測試方法及裝置。所述技術(shù)方案如下:
第一方面,提供了一種接口測試方法,所述方法包括:
通過待測接口執(zhí)行測試用例,得到目標返回值;
將所述目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較,所述目標期望值是根據(jù)執(zhí)行所述測試用例得到的初始返回值和所述測試用例的需求文檔獲得的;
根據(jù)比較結(jié)果,判斷所述待測接口是否正常。
在本發(fā)明實施例中,將從待測接口返回的目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較,由于該目標期望值是根據(jù)執(zhí)行測試用例的初始返回值和該測試用例的需求文檔獲得的,與現(xiàn)有技術(shù)中根據(jù)預(yù)先設(shè)置的驗證點驗證返回值的相應(yīng)內(nèi)容相比,本發(fā)明實施例可以驗證目標返回值的所有內(nèi)容,可以有效避免發(fā)生漏測現(xiàn)象,提高了接口測試的可靠性。
可選的,在所述通過待測接口執(zhí)行測試用例之前,所述方法還包括:
通過所述待測接口執(zhí)行所述測試用例,得到所述初始返回值;
當所述初始返回值與所述需求文檔中的預(yù)設(shè)期望值相同時,將所述初始返回值確定為目標期望值。
本發(fā)明實施例提供的接口測試方法,將測試人員確定正確的初始返回值設(shè)置為目標期望值,無需手工設(shè)置驗證點,降低了測試用例的維護成本,提高了測試效率。
可選的,所述將所述目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較,包括:
判斷所述目標返回值的數(shù)據(jù)格式與所述目標期望值的數(shù)據(jù)格式是否相同;
當所述目標返回值的數(shù)據(jù)格式與所述目標期望值的數(shù)據(jù)格式相同時,根據(jù)所述目標返回值的數(shù)據(jù)類型,對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容進行比較。
本發(fā)明實施例中,最先判斷目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容是否相同,當目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容不相同時,結(jié)束比較過程,當目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容相同時,再比較目標返回值的內(nèi)容與目標期望值的內(nèi)容,這種接口測試的比較順序效率較高。
可選的,所述根據(jù)所述目標返回值的數(shù)據(jù)類型,對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容進行比較,包括:
確定所述目標返回值的數(shù)據(jù)類型,所述數(shù)據(jù)類型為對象或數(shù)組;
當所述數(shù)據(jù)類型為對象時,對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容執(zhí)行對象比較操作;
當所述數(shù)據(jù)類型為數(shù)組時,對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容執(zhí)行數(shù)組比較操作。
本發(fā)明實施例中,當數(shù)據(jù)類型為對象時,執(zhí)行對象比較操作,當數(shù)據(jù)類型為數(shù)組時,執(zhí)行數(shù)組比較操作,可以全面的將目標返回值的內(nèi)容與目標期望值的內(nèi)容進行比較,分類比較還可以提高接口測試的測試效率。
可選的,所述目標返回值包括關(guān)鍵字和與所述關(guān)鍵字對應(yīng)的值,
所述對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容執(zhí)行對象比較操作,包括:
判斷所述目標返回值的關(guān)鍵字的個數(shù)與所述目標期望值的關(guān)鍵字的個數(shù)是否相同;
當所述目標返回值的關(guān)鍵字的個數(shù)與所述目標期望值的關(guān)鍵字的個數(shù)相同時,判斷所述目標返回值的關(guān)鍵字的格式與所述目標期望值的關(guān)鍵字的格式是否相同;
當所述目標返回值的關(guān)鍵字的格式與所述目標期望值的關(guān)鍵字的格式相同時,判斷所述目標返回值的關(guān)鍵字的名稱與所述目標期望值的關(guān)鍵字的名稱是否相同;
當所述目標返回值的關(guān)鍵字的名稱與所述目標期望值的關(guān)鍵字的名稱相同時,判斷所述目標返回值的關(guān)鍵字對應(yīng)的值與所述目標期望值的關(guān)鍵字對應(yīng)的值是否相同;
所述根據(jù)比較結(jié)果,判斷待測接口是否正常,包括:
當所述目標返回值的關(guān)鍵字對應(yīng)的值與所述目標期望值的關(guān)鍵字對應(yīng)的值相同時,確定所述待測接口正常。
這種對目標返回值的內(nèi)容與目標期望值的內(nèi)容執(zhí)行對象比較操作的方法,可以保證對象中的所有內(nèi)容均得到驗證,完成對目標返回值的全遍歷比對,提高了接口測試的可靠性。
進一步的,所述對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容執(zhí)行對象比較操作,還包括:
當滿足以下任意一種,結(jié)束所述對象比較操作,并發(fā)出報錯提示信息:
所述目標返回值的關(guān)鍵字的個數(shù)與所述目標期望值的關(guān)鍵字的個數(shù)不相同;
所述目標返回值的關(guān)鍵字的格式與所述目標期望值的關(guān)鍵字的格式不相同;
所述目標返回值的關(guān)鍵字的名稱與所述目標期望值的關(guān)鍵字的名稱不相同;
所述目標返回值的關(guān)鍵字對應(yīng)的值與所述目標期望值的關(guān)鍵字對應(yīng)的值不相同。
本發(fā)明實施例中,當滿足上述任意一種情況時,將會結(jié)束對象比較操作,并可以發(fā)出相應(yīng)的報錯提示信息,該報錯提示信息用于提示測試人員待測接口不正常,測試人員可以根據(jù)相應(yīng)的報錯提示信息對待測接口進行修復(fù)。
可選的,所述對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容執(zhí)行數(shù)組比較操作,包括:
判斷所述目標返回值的長度與所述目標期望值的長度是否相同;
當所述目標返回值的長度與所述目標期望值的長度相同時,判斷所述目標返回值的元素的內(nèi)容與所述目標期望值的元素的內(nèi)容是否相同;
所述根據(jù)比較結(jié)果,判斷所述待測接口是否正常,包括:
當所述目標返回值的元素的內(nèi)容與所述目標期望值的元素的內(nèi)容相同時,確定所述待測接口正常。
這種對目標返回值的內(nèi)容與目標期望值的內(nèi)容執(zhí)行數(shù)組比較操作的方法,可以保證數(shù)組中的所有內(nèi)容均得到驗證,完成對目標返回值的全遍歷比對,提高了接口測試的可靠性。
可選的,所述對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容執(zhí)行數(shù)組比較操作,還包括:
當所述目標返回值的長度與所述目標期望值的長度不相同或所述目標返回值的元素的內(nèi)容與所述目標期望值的元素的內(nèi)容不相同時,結(jié)束所述數(shù)組比較操作,并發(fā)出報錯提示信息。
本發(fā)明實施例中,當滿足上述兩種情況中任一種情況時,將會結(jié)束數(shù)組比較操作,并可以發(fā)出相應(yīng)的報錯提示信息,該報錯提示信息用于提示測試人員待測接口不正常,測試人員可以根據(jù)相應(yīng)的報錯提示信息對待測接口進行修復(fù)。
第二方面,提供了一種接口測試裝置,所述裝置包括:
第一執(zhí)行模塊,用于通過待測接口執(zhí)行測試用例,得到目標返回值;
比較模塊,用于將所述目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較,所述目標期望值是根據(jù)執(zhí)行所述測試用例得到的初始返回值和所述測試用例的需求文檔獲得的;
判斷模塊,用于根據(jù)比較結(jié)果,判斷所述待測接口是否正常。
可選的,所述裝置還包括:
第二執(zhí)行模塊,用于通過所述待測接口執(zhí)行所述測試用例,得到所述初始返回值;
確定模塊,用于當所述初始返回值與所述需求文檔中的預(yù)設(shè)期望值相同時,將所述初始返回值確定為目標期望值。
可選的,所述比較模塊,包括:
判斷子模塊,用于判斷所述目標返回值的數(shù)據(jù)格式與所述目標期望值的數(shù)據(jù)格式是否相同;
比較子模塊,用于當所述目標返回值的數(shù)據(jù)格式與所述目標期望值的數(shù)據(jù)格式相同時,根據(jù)所述目標返回值的數(shù)據(jù)類型,對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容進行比較。
可選的,所述比較子模塊,包括:
確定單元,用于確定所述目標返回值的數(shù)據(jù)類型,所述數(shù)據(jù)類型為對象或數(shù)組;
第一執(zhí)行單元,用于當所述數(shù)據(jù)類型為對象時,對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容執(zhí)行對象比較操作;
第二執(zhí)行單元,用于當所述數(shù)據(jù)類型為數(shù)組時,對所述目標返回值的內(nèi)容與所述目標期望值的內(nèi)容執(zhí)行數(shù)組比較操作。
可選的,所述目標返回值包括關(guān)鍵字和與所述關(guān)鍵字對應(yīng)的值,
所述第一執(zhí)行單元,用于:
判斷所述目標返回值的關(guān)鍵字的個數(shù)與所述目標期望值的關(guān)鍵字的個數(shù)是否相同;
當所述目標返回值的關(guān)鍵字的個數(shù)與所述目標期望值的關(guān)鍵字的個數(shù)相同時,判斷所述目標返回值的關(guān)鍵字的格式與所述目標期望值的關(guān)鍵字的格式是否相同;
當所述目標返回值的關(guān)鍵字的格式與所述目標期望值的關(guān)鍵字的格式相同時,判斷所述目標返回值的關(guān)鍵字的名稱與所述目標期望值的關(guān)鍵字的名稱是否相同;
當所述目標返回值的關(guān)鍵字的名稱與所述目標期望值的關(guān)鍵字的名稱相同時,判斷所述目標返回值的關(guān)鍵字對應(yīng)的值與所述目標期望值的關(guān)鍵字對應(yīng)的值是否相同;
所述判斷模塊,用于:
當所述目標返回值的關(guān)鍵字對應(yīng)的值與所述目標期望值的關(guān)鍵字對應(yīng)的值相同時,確定所述待測接口正常。
可選的,所述第一執(zhí)行單元,還用于:
當滿足以下任意一種,結(jié)束所述對象比較操作,并發(fā)出報錯提示信息:
所述目標返回值的關(guān)鍵字的個數(shù)與所述目標期望值的關(guān)鍵字的個數(shù)不相同;
所述目標返回值的關(guān)鍵字的格式與所述目標期望值的關(guān)鍵字的格式不相同;
所述目標返回值的關(guān)鍵字的名稱與所述目標期望值的關(guān)鍵字的名稱不相同;
所述目標返回值的關(guān)鍵字對應(yīng)的值與所述目標期望值的關(guān)鍵字對應(yīng)的值不相同。
可選的,所述第二執(zhí)行單元,用于:
判斷所述目標返回值的長度與所述目標期望值的長度是否相同;
當所述目標返回值的長度與所述目標期望值的長度相同時,判斷所述目標返回值的元素的內(nèi)容與所述目標期望值的元素的內(nèi)容是否相同;
所述判斷模塊,用于:
當所述目標返回值的元素的內(nèi)容與所述目標期望值的元素的內(nèi)容相同時,確定所述待測接口正常。
可選的,所述第二執(zhí)行單元,還用于:
當所述目標返回值的長度與所述目標期望值的長度不相同或所述目標返回值的元素的內(nèi)容與所述目標期望值的元素的內(nèi)容不相同時,結(jié)束所述數(shù)組比較操作,并發(fā)出報錯提示信息。
本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
本發(fā)明實施例提供的接口測試方法及裝置,將從待測接口返回的目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較,由于該目標期望值是根據(jù)執(zhí)行測試用例的初始返回值和該測試用例的需求文檔獲得的,與現(xiàn)有技術(shù)中根據(jù)預(yù)先設(shè)置的驗證點驗證返回值的相應(yīng)內(nèi)容相比,本發(fā)明實施例可以驗證目標返回值的所有內(nèi)容,可以有效避免發(fā)生漏測現(xiàn)象,提高了接口測試的可靠性。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的一種接口測試方法的流程圖;
圖2-1是本發(fā)明實施例提供的另一種接口測試方法的流程圖;
圖2-2是本發(fā)明實施例提供的一種比較目標返回值與目標期望值的方法流程圖;
圖2-3是本發(fā)明實施例提供的一種根據(jù)數(shù)據(jù)類型比較目標返回值與目標期望值的方法流程圖;
圖2-4是本發(fā)明實施例提供的一種執(zhí)行對象比較操作的方法流程圖;
圖2-5是本發(fā)明實施例提供的一種執(zhí)行數(shù)組比較操作的方法流程圖;
圖3是本發(fā)明實施例提供的一種接口測試裝置的結(jié)構(gòu)示意圖;
圖4-1是本發(fā)明實施例提供的另一種接口測試裝置的結(jié)構(gòu)示意圖;
圖4-2是本發(fā)明實施例提供的一種比較模塊的結(jié)構(gòu)示意圖;
圖4-3是本發(fā)明實施例提供的一種比較子模塊的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本申請實施方式作進一步地詳細描述。
圖1是本發(fā)明實施例提供的一種接口測試方法的流程圖,如圖1所示,該方法可以包括:
步驟101、通過待測接口執(zhí)行測試用例,得到目標返回值。
步驟102、將該目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較,該目標期望值是根據(jù)執(zhí)行該測試用例得到的初始返回值和該測試用例的需求文檔獲得的。
步驟103、根據(jù)比較結(jié)果,判斷待測接口是否正常。
綜上所述,本發(fā)明實施例提供的接口測試方法,將從待測接口返回的目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較,由于該目標期望值是根據(jù)執(zhí)行測試用例的初始返回值和該測試用例的需求文檔獲得的,與現(xiàn)有技術(shù)中根據(jù)預(yù)先設(shè)置的驗證點驗證返回值的相應(yīng)內(nèi)容相比,本發(fā)明實施例可以驗證目標返回值的所有內(nèi)容,可以有效避免發(fā)生漏測現(xiàn)象,提高了接口測試的可靠性。
圖2-1是本發(fā)明實施例提供的另一種接口測試方法的流程圖,用于服務(wù)端,如圖2-1所示,該方法可以包括:
步驟201、通過待測接口執(zhí)行測試用例,得到初始返回值。
需要說明的是,在對待測接口進行接口測試之前,測試人員根據(jù)測試用例的需求文檔中的內(nèi)容在自動化測試工具中輸入請求方式、請求URL和請求參數(shù)等,再通過待測接口執(zhí)行一次測試用例,得到初始返回值,可選的,該初始返回值可以是在正常的測試環(huán)境中執(zhí)行一次測試用例得到的。
可選的,本發(fā)明實施例涉及的待測接口可以為服務(wù)端的系統(tǒng)接口。
步驟202、當該初始返回值與測試用例的需求文檔中的預(yù)設(shè)期望值相同時,將初始返回值確定為目標期望值。
需要說明的是,在執(zhí)行完一次測試用例后,測試人員可以根據(jù)該測試用例的需求文檔中的預(yù)設(shè)期望值對初始返回值進行對比驗證,當該初始返回值的內(nèi)容與需求文檔中的預(yù)設(shè)期望值的內(nèi)容相同時,可以將該初始返回值設(shè)置為自動化測試工具中的目標期望值。本發(fā)明實施例提供的接口測試方法,無需手工設(shè)置驗證點,降低了測試用例的維護成本,提高了測試效率。
可選的,當待測接口的返回參數(shù)改變或測試用例更改時,在正常環(huán)境中再執(zhí)行一次測試用例,在測試人員確保新的返回值正確的情況下,可以將新的返回值設(shè)置為新的目標期望值,便于后續(xù)使用。節(jié)省人力且可以有效提高測試效率。
步驟203、通過待測接口執(zhí)行測試用例,得到目標返回值。
可選的,服務(wù)端根據(jù)需求文檔的內(nèi)容,定期通過待測接口執(zhí)行測試用例,示例的,可以每隔半小時執(zhí)行一次測試用例,得到相應(yīng)的目標返回值。
步驟204、將該目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較。
可選的,服務(wù)端可以將每隔半小時執(zhí)行測試用例后得到的目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較。
可選的,將目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較的過程,如圖2-2所示,可以包括:
步驟2041、判斷目標返回值的數(shù)據(jù)格式與目標期望值的數(shù)據(jù)格式是否相同;當目標返回值的數(shù)據(jù)格式與目標期望值的數(shù)據(jù)格式相同時,執(zhí)行步驟2042;當當目標返回值的數(shù)據(jù)格式與目標期望值的數(shù)據(jù)格式不同時,結(jié)束步驟。
可選的,該目標期望值的數(shù)據(jù)格式可以為JSON(英文:JavaScript Object Notiation)格式,判斷目標返回值的數(shù)據(jù)格式與目標期望值的數(shù)據(jù)格式是否相同,也即是,判斷目標返回值的數(shù)據(jù)格式是否為JSON格式。
需要說明的是,JSON格式是基于JavaScript編程語言ECMA-262 3rd Edition-December 1999標準的一種輕量級的數(shù)據(jù)交換格式,包括對象和數(shù)組兩種數(shù)據(jù)類型。
步驟2042、根據(jù)目標返回值的數(shù)據(jù)類型,對目標返回值的內(nèi)容與目標期望值的內(nèi)容進行比較。
具體的,根據(jù)目標返回值的數(shù)據(jù)類型,對目標返回值的內(nèi)容與目標期望值的內(nèi)容進行比較的過程,如圖2-3所示,可以包括:
步驟2042a、確定目標返回值的數(shù)據(jù)類型。
可選的,目標返回值的數(shù)據(jù)類型可以為對象或數(shù)組。
步驟2042b、當數(shù)據(jù)類型為對象時,對目標返回值的內(nèi)容與目標期望值的內(nèi)容執(zhí)行對象比較操作。
可選的,當數(shù)據(jù)類型為對象時,目標返回值可以包括關(guān)鍵字和與關(guān)鍵字對應(yīng)的值,對目標返回值的內(nèi)容與目標期望值的內(nèi)容執(zhí)行對象比較操作的過程,如圖2-4所示,可以包括:
步驟b1、判斷目標返回值的關(guān)鍵字的個數(shù)與目標期望值的關(guān)鍵字的個數(shù)是否相同;當目標返回值的關(guān)鍵字的個數(shù)與目標期望值的關(guān)鍵字的個數(shù)相同時,執(zhí)行步驟b2;當目標返回值的關(guān)鍵字的個數(shù)與目標期望值的關(guān)鍵字的個數(shù)不相同時,執(zhí)行步驟b5。
假設(shè)目標期望值為{“城市”:“北京”,“面積”:16800,“population”:1600},其中,關(guān)鍵字有三個,分別為:“城市”、“面積”和“population”,則服務(wù)端需要判斷目標返回值是否包括三個關(guān)鍵字。
需要說明的是,當目標返回值的關(guān)鍵字的個數(shù)與目標期望值的關(guān)鍵字的個數(shù)不相同時,服務(wù)端可以結(jié)束對象比較操作,并發(fā)出報錯提示信息,用于提示測試人員返回的測試結(jié)果有錯。示例的,報錯提示信息可以為“接口異常,錯誤類型為關(guān)鍵字個數(shù)不匹配”。
步驟b2、判斷目標返回值的關(guān)鍵字的格式與目標期望值的關(guān)鍵字的格式是否相同;當目標返回值的關(guān)鍵字的格式與目標期望值的關(guān)鍵字的格式相同時,執(zhí)行步驟b3;當目標返回值的關(guān)鍵字的格式與目標期望值的關(guān)鍵字的格式不相同時,執(zhí)行步驟b5。
可選的,關(guān)鍵字的格式可以為整型或字符串。
示例的,參考步驟b1中的例子,關(guān)鍵字“城市”和“面積”的格式為整型,“population”的格式為字符串,則服務(wù)端需要判斷目標返回值中的關(guān)鍵字是否為兩個整型格式的關(guān)鍵字和一個字符串格式的關(guān)鍵字。
需要說明的是,當目標返回值的關(guān)鍵字的格式與目標期望值的關(guān)鍵字的格式不相同時,服務(wù)端可以結(jié)束對象比較操作,并發(fā)出報錯提示信息。假設(shè)目標返回值中的關(guān)鍵字包括“城市”、“面積”和“人口”,那么該報錯提示信息可以為“接口異常,錯誤類型為關(guān)鍵字“人口”的格式不匹配”。
步驟b3、判斷目標返回值的關(guān)鍵字的名稱與目標期望值的關(guān)鍵字的名稱是否相同;當目標返回值的關(guān)鍵字的名稱與目標期望值的關(guān)鍵字的名稱相同時,執(zhí)行步驟b4;當目標返回值的關(guān)鍵字的名稱與目標期望值的關(guān)鍵字的名稱不相同時,執(zhí)行步驟b5。
示例的,參考步驟b1中的例子,則服務(wù)端需要判斷返回目標值的關(guān)鍵字名稱是否分別為“城市”、“面積”和“population”。
需要說明的是,當目標返回值的關(guān)鍵字的名稱與目標期望值的關(guān)鍵字的名稱不相同時,服務(wù)端可以結(jié)束對象比較操作,并發(fā)出報錯提示信息。假設(shè)目標返回值中的關(guān)鍵字包括“城市”、“面積”和“number”,那么該報錯提示信息可以為“接口異常,錯誤類型為關(guān)鍵字“number”的名稱不匹配”。
步驟b4、判斷目標返回值的關(guān)鍵字對應(yīng)的值與目標期望值的關(guān)鍵字對應(yīng)的值是否相同。
示例的,參考步驟b1中的例子,關(guān)鍵字“城市”對應(yīng)的值為“北京”,關(guān)鍵字“面積”對應(yīng)的值為“16800”,關(guān)鍵字“population”對應(yīng)的值為“1600”,則需要判斷目標返回值的關(guān)鍵字對應(yīng)的值是否與目標期望值的關(guān)鍵字對應(yīng)的值相同。
需要說明的是,當目標返回值的關(guān)鍵字對應(yīng)的值與目標期望值的關(guān)鍵字對應(yīng)的值不同時,服務(wù)端可以結(jié)束對象比較操作,并發(fā)出報錯提示信息。假設(shè)關(guān)鍵字“城市”對應(yīng)的值不為“北京”,那么該報錯提示信息可以為“接口異常,錯誤類型為關(guān)鍵字“城市”對應(yīng)的值不匹配”。
步驟b5、結(jié)束對象比較操作,并發(fā)出報錯提示信息。
步驟b5的具體過程可以對應(yīng)參考步驟b1至步驟b4中的說明。
需要說明的是,在對目標返回值的內(nèi)容與目標期望值的內(nèi)容執(zhí)行對象比較操作時,只要保證關(guān)鍵字的個數(shù)、關(guān)鍵字的格式、關(guān)鍵字的名稱和關(guān)鍵字對應(yīng)的值都被比較即可,上述步驟b1至步驟b4的比較順序為本發(fā)明實施例提供的一種可選的比較順序,本發(fā)明實施例對比較順序不做限定。
步驟2042c、當數(shù)據(jù)類型為數(shù)組時,對目標返回值的內(nèi)容與目標期望值的內(nèi)容執(zhí)行數(shù)組比較操作。
可選的,當數(shù)據(jù)類型為數(shù)組時,對目標返回值的內(nèi)容與目標期望值的內(nèi)容執(zhí)行數(shù)組比較操作的過程,如圖2-5所示,可以包括:
步驟c1、判斷目標返回值的長度與目標期望值的長度是否相同;當目標返回值的長度與目標期望值的長度相同時,執(zhí)行步驟c2;當目標返回值的長度與目標期望值的長度不相同時,執(zhí)行步驟c3。
需要說明的是,目標期望值的數(shù)組的長度也即是數(shù)組中元素的個數(shù)。假設(shè)目標期望值為數(shù)組[“北京”,16800,1600],該數(shù)組的長度為3,則服務(wù)端需要判斷目標返回值中的數(shù)組的長度是否為3。
需要說明的是,當目標返回值的數(shù)組的長度與目標期望值的數(shù)組的長度不相同時,服務(wù)端可以結(jié)束數(shù)組比較操作,并發(fā)出報錯提示信息。示例的,該報錯提示信息可以為“接口異常,錯誤類型為數(shù)組長度不匹配”。
步驟c2、判斷目標返回值的元素的內(nèi)容與目標期望值的元素的內(nèi)容是否相同。
示例的,參考步驟c1中的例子,目標期望值中元素的內(nèi)容分別為“北京”、“16800”和“1600”,則服務(wù)端需要判斷目標返回值中的三個元素的內(nèi)容是否與目標期望值的元素的內(nèi)容相同。
需要說明的是,當目標返回值的元素的內(nèi)容與目標期望值的元素的內(nèi)容不相同時,服務(wù)端可以結(jié)束數(shù)組比較操作,并發(fā)出報錯提示信息。假設(shè)目標返回值的元素包括“上海”、“16800”和“1600”,該報錯提示信息可以為“接口異常,錯誤類型為元素“上?!眱?nèi)容不匹配”。
步驟c3、結(jié)束數(shù)組比較操作,并發(fā)出報錯提示信息。
步驟c3的具體過程可以對應(yīng)參考步驟c1和步驟c2中的說明。
步驟205、根據(jù)比較結(jié)果,判斷待測接口是否正常。
可選的,當數(shù)據(jù)類型為對象時,對應(yīng)上述步驟b1至步驟b4,則存在:當目標返回值的關(guān)鍵字對應(yīng)的值與目標期望值的關(guān)鍵字對應(yīng)的值相同時,服務(wù)端確定待測接口正常。
可選的,當數(shù)據(jù)類型為數(shù)組時,對應(yīng)上述步驟c1和步驟c2,則存在:當目標返回值的元素的內(nèi)容與目標期望值的元素的內(nèi)容相同時,服務(wù)端確定待測接口正常。
需要說明的是,JSON格式的數(shù)據(jù)是可以嵌套的,比如對象可以嵌套數(shù)組,數(shù)組也可以嵌套對象。對于這種嵌套格式的數(shù)據(jù),采用本發(fā)明實施例提供的接口測試方法同樣可以實現(xiàn)對目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較的目的。
可選的,當目標返回值的數(shù)據(jù)類型為對象時,對象中的關(guān)鍵字對應(yīng)的值的數(shù)據(jù)類型可以為對象、數(shù)組或數(shù)據(jù)。其中,數(shù)據(jù)可以包括數(shù)字(整數(shù)或浮點數(shù))、字符串和邏輯值(true或false),當關(guān)鍵字對應(yīng)的值的數(shù)據(jù)類型為數(shù)據(jù)時,可以直接比較目標返回值的關(guān)鍵字對應(yīng)的值與目標期望值的關(guān)鍵字對應(yīng)的值是否相同;當關(guān)鍵字對應(yīng)的值的數(shù)據(jù)類型為對象時,對目標返回值的關(guān)鍵字對應(yīng)的值與目標期望值的關(guān)鍵字對應(yīng)的值執(zhí)行對象比較操作;當關(guān)鍵字對應(yīng)的值的數(shù)據(jù)類型為數(shù)組時,對目標返回值的關(guān)鍵字對應(yīng)的值與目標期望值的關(guān)鍵字對應(yīng)的值執(zhí)行數(shù)組比較操作,從而達到對目標返回值的內(nèi)容與目標返回值的內(nèi)容進行遞歸全遍歷對比的效果,測試內(nèi)容更全面,提高了接口測試的可靠性。
可選的,當目標返回值的數(shù)據(jù)類型為數(shù)組時,元素的內(nèi)容的數(shù)據(jù)類型可以為對象、數(shù)組或數(shù)據(jù)。當元素的內(nèi)容的數(shù)據(jù)類型為數(shù)據(jù)時,可以直接比較目標返回值的元素的內(nèi)容與目標期望值的元素的內(nèi)容是否相同;當元素的內(nèi)容的數(shù)據(jù)類型為對象時,對目標返回值的元素的內(nèi)容與目標期望值的元素的內(nèi)容執(zhí)行對象比較操作;當元素的內(nèi)容的數(shù)據(jù)類型為數(shù)組時,對目標返回值的元素的內(nèi)容與目標期望值的元素的內(nèi)容執(zhí)行數(shù)組比較操作,從而達到對目標返回值的內(nèi)容與目標返回值的內(nèi)容進行遞歸全遍歷對比的效果,測試內(nèi)容更全面,提高了接口測試的可靠性。
綜上所述,本發(fā)明實施例提供的接口測試方法,將從待測接口返回的目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行遞歸全遍歷比較,由于該目標期望值是根據(jù)執(zhí)行測試用例的初始返回值和該測試用例的需求文檔獲得的,與現(xiàn)有技術(shù)中根據(jù)預(yù)先設(shè)置的驗證點驗證返回值的相應(yīng)內(nèi)容相比,本發(fā)明實施例可以驗證目標返回值的所有內(nèi)容,測試內(nèi)容更全面,可以有效避免發(fā)生漏測現(xiàn)象,提高了接口測試的可靠性。
圖3是本發(fā)明實施例提供的一種接口測試裝置30的結(jié)構(gòu)示意圖,如圖3所示,該裝置30包括:
第一執(zhí)行模塊301,用于通過待測接口執(zhí)行測試用例,得到目標返回值。
比較模塊302,用于將目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較,該目標期望值是根據(jù)執(zhí)行該測試用例得到的初始返回值和該測試用例的需求文檔獲得的。
判斷模塊303,用于根據(jù)比較結(jié)果,判斷待測接口是否正常。
綜上所述,本發(fā)明實施例提供的接口測試裝置,通過比較模塊將從待測接口返回的目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行比較,由于該目標期望值是根據(jù)執(zhí)行測試用例的初始返回值和該測試用例的需求文檔獲得的,與現(xiàn)有技術(shù)中設(shè)置驗證點進行驗證返回值的內(nèi)容相比,本發(fā)明實施例可以驗證目標返回值的所有內(nèi)容,可以有效避免發(fā)生漏測現(xiàn)象,提高了接口測試的可靠性。
可選的,如圖4-1所示,該裝置30還可以包括:
第二執(zhí)行模塊304,用于通過待測接口執(zhí)行所述測試用例,得到初始返回值。
確定模塊305,用于當初始返回值與需求文檔中的預(yù)設(shè)期望值相同時,將該初始返回值確定為目標期望值。
圖4-1中的其他標記含義可以參考圖3。
可選的,如圖4-2所示,比較模塊302可以包括:
判斷子模塊3021,用于判斷目標返回值的數(shù)據(jù)格式與目標期望值的數(shù)據(jù)格式是否相同。
比較子模塊3022,用于當目標返回值的數(shù)據(jù)格式與目標期望值的數(shù)據(jù)格式相同時,根據(jù)目標返回值的數(shù)據(jù)類型,對目標返回值的內(nèi)容與目標期望值的內(nèi)容進行比較。
可選的,如圖4-3所示,比較子模塊3022可以包括:
確定單元3022a,用于確定目標返回值的數(shù)據(jù)類型,該數(shù)據(jù)類型為對象或數(shù)組。
第一執(zhí)行單元3022b,用于當數(shù)據(jù)類型為對象時,對目標返回值的內(nèi)容與目標期望值的內(nèi)容執(zhí)行對象比較操作。
第二執(zhí)行單元3022c,用于當數(shù)據(jù)類型為數(shù)組時,對目標返回值的內(nèi)容與目標期望值的內(nèi)容執(zhí)行數(shù)組比較操作。
可選的,一方面,當數(shù)據(jù)類型為對象時,目標返回值可以包括關(guān)鍵字和與關(guān)鍵字對應(yīng)的值,該第一執(zhí)行單元3022b可以用于:
判斷目標返回值的關(guān)鍵字的個數(shù)與目標期望值的關(guān)鍵字的個數(shù)是否相同;當目標返回值的關(guān)鍵字的個數(shù)與目標期望值的關(guān)鍵字的個數(shù)相同時,判斷目標返回值的關(guān)鍵字的格式與目標期望值的關(guān)鍵字的格式是否相同;當目標返回值的關(guān)鍵字的格式與目標期望值的關(guān)鍵字的格式相同時,判斷目標返回值的關(guān)鍵字的名稱與目標期望值的關(guān)鍵字的名稱是否相同;當目標返回值的關(guān)鍵字的名稱與目標期望值的關(guān)鍵字的名稱相同時,判斷目標返回值的關(guān)鍵字對應(yīng)的值與述目標期望值的關(guān)鍵字對應(yīng)的值是否相同。
相應(yīng)的,判斷模塊303可以用于:
當目標返回值的關(guān)鍵字對應(yīng)的值與目標期望值的關(guān)鍵字對應(yīng)的值相同時,確定待測接口正常。
可選的,該第一執(zhí)行單元3022b,還可以用于:
當滿足以下任意一種,結(jié)束該對象比較操作,并發(fā)出報錯提示信息:
目標返回值的關(guān)鍵字的個數(shù)與目標期望值的關(guān)鍵字的個數(shù)不相同;目標返回值的關(guān)鍵字的格式與目標期望值的關(guān)鍵字的格式不相同;目標返回值的關(guān)鍵字的名稱與目標期望值的關(guān)鍵字的名稱不相同;目標返回值的關(guān)鍵字對應(yīng)的值與目標期望值的關(guān)鍵字對應(yīng)的值不相同。
另一方面,當數(shù)據(jù)類型為數(shù)組時,目標返回值可以包括元素,第二執(zhí)行單元3022c可以用于:
判斷目標返回值的長度與目標期望值的長度是否相同;當目標返回值的長度與目標期望值的長度相同時,判斷目標返回值的元素的內(nèi)容與目標期望值的元素的內(nèi)容是否相同。
相應(yīng)的,判斷模塊303可以用于:
當目標返回值的元素的內(nèi)容與目標期望值的元素的內(nèi)容相同時,確定待測接口正常。
可選的,第二執(zhí)行單元3022c,還可以用于:
當目標返回值的長度與目標期望值的長度不相同或目標返回值的元素的內(nèi)容與目標期望值的元素的內(nèi)容不相同時,結(jié)束數(shù)組比較操作,并發(fā)出報錯提示信息。
可選的,上述數(shù)據(jù)格式可以為JSON格式。
綜上所述,本發(fā)明實施例提供的接口測試裝置,通過比較模塊將從待測接口返回的目標返回值的內(nèi)容與預(yù)設(shè)的目標期望值的內(nèi)容進行遞歸全遍歷比較,由于該目標期望值是根據(jù)執(zhí)行測試用例的初始返回值和該測試用例的需求文檔獲得的,與現(xiàn)有技術(shù)中根據(jù)預(yù)先設(shè)置的驗證點驗證返回值的相應(yīng)內(nèi)容相比,本發(fā)明實施例可以驗證目標返回值的所有內(nèi)容,測試內(nèi)容更全面,可以有效避免發(fā)生漏測現(xiàn)象,提高了接口測試的可靠性。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的裝置和模塊的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的可選實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。