本申請涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及測試方法和裝置。
背景技術(shù):
目前,對于具有分支結(jié)構(gòu)的程序(例如用于大數(shù)據(jù)分析、計(jì)算等的分布式應(yīng)用程序)的測試方法通常是等價(jià)類劃分法、邊界值分析法、因果圖法等。通常是將被測程序在運(yùn)行結(jié)束后所產(chǎn)生的實(shí)際結(jié)果數(shù)據(jù)與預(yù)期結(jié)果數(shù)據(jù)進(jìn)行比較,來判斷實(shí)際結(jié)果數(shù)據(jù)的正確與否,卻難以定位問題。
技術(shù)實(shí)現(xiàn)要素:
本申請的目的在于提出一種改進(jìn)的測試方法和裝置,來解決以上背景技術(shù)部分提到的技術(shù)問題。
第一方面,本申請實(shí)施例提供了一種測試方法,該方法包括:接收對待測試程序進(jìn)行測試的指令,其中,上述待測試程序是具有分支結(jié)構(gòu)的程序,上述待測試程序所包括的每個(gè)分支預(yù)先設(shè)置有數(shù)據(jù)標(biāo)記,上述指令包括測試數(shù)據(jù)和期望結(jié)果,上述期望結(jié)果包括期望上述測試數(shù)據(jù)所流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第一數(shù)據(jù)標(biāo)記序列;將上述測試數(shù)據(jù)輸入上述待測試程序,運(yùn)行上述待測試程序,以使上述待測試程序在運(yùn)行結(jié)束后生成執(zhí)行過程信息,其中,上述執(zhí)行過程信息包括上述測試數(shù)據(jù)實(shí)際流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第二數(shù)據(jù)標(biāo)記序列;將上述第二數(shù)據(jù)標(biāo)記序列與上述第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,基于匹配結(jié)果生成測試結(jié)果。
在一些實(shí)施例中,上述將上述第二數(shù)據(jù)標(biāo)記序列與上述第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,基于匹配結(jié)果生成測試結(jié)果,包括:確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目是否相同;若數(shù)目相同,則進(jìn)一步確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的同一位置的數(shù)據(jù)標(biāo)記是否相同;若上述第二數(shù)據(jù)標(biāo)記序列包括與上述第一數(shù)據(jù)標(biāo)記序列中的對應(yīng)位置上的數(shù)據(jù)標(biāo)記不同的目標(biāo)數(shù)據(jù)標(biāo)記,則生成測試結(jié)果,其中,上述測試結(jié)果包括上述目標(biāo)數(shù)據(jù)標(biāo)記。
在一些實(shí)施例中,當(dāng)上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目超出預(yù)置值時(shí),上述測試結(jié)果還包括上述目標(biāo)數(shù)據(jù)標(biāo)記在上述第二數(shù)據(jù)標(biāo)記序列中的位置信息。
在一些實(shí)施例中,上述將上述第二數(shù)據(jù)標(biāo)記序列與上述第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,基于匹配結(jié)果生成測試結(jié)果,包括:響應(yīng)于確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目不相同,則進(jìn)一步確定上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目是否少于上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目;若少于,則生成包括數(shù)據(jù)丟失提示信息的測試結(jié)果。
在一些實(shí)施例中,當(dāng)上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目少于上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目時(shí),所生成的測試結(jié)果還包括上述第一數(shù)據(jù)標(biāo)記序列中的、未包括在上述第二數(shù)據(jù)標(biāo)記序列中的數(shù)據(jù)標(biāo)記。
在一些實(shí)施例中,上述期望結(jié)果還包括預(yù)期結(jié)果數(shù)據(jù);以及上述基于匹配結(jié)果生成測試結(jié)果,包括:響應(yīng)于確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的同一位置的數(shù)據(jù)標(biāo)記相同,則進(jìn)一步確定上述待測試程序在運(yùn)行結(jié)束后所產(chǎn)生的實(shí)際結(jié)果數(shù)據(jù)是否與上述預(yù)期結(jié)果數(shù)據(jù)相同;響應(yīng)于確定上述實(shí)際結(jié)果數(shù)據(jù)與上述預(yù)期結(jié)果數(shù)據(jù)相同,則生成包括以下至少一項(xiàng)的測試結(jié)果:測試通過提示信息、上述第二數(shù)據(jù)標(biāo)記序列、上述實(shí)際結(jié)果數(shù)據(jù)。
第二方面,本申請?zhí)峁┝艘环N測試裝置,該裝置包括:接收單元,配置用于接收對待測試程序進(jìn)行測試的指令,其中,上述待測試程序是具有分支結(jié)構(gòu)的程序,上述待測試程序所包括的每個(gè)分支預(yù)先設(shè)置有數(shù)據(jù)標(biāo)記,上述指令包括測試數(shù)據(jù)和期望結(jié)果,上述期望結(jié)果包括期望上述測試數(shù)據(jù)所流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第一數(shù)據(jù)標(biāo)記序列;程序運(yùn)行單元,配置用于將上述測試數(shù)據(jù)輸入上述待測試程序,運(yùn)行上述待測試程序,以使上述待測試程序在運(yùn)行結(jié)束后生成執(zhí)行過程信息,其中,上述執(zhí)行過程信息包括上述測試數(shù)據(jù)實(shí)際流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第二數(shù)據(jù)標(biāo)記序列;生成單元,配置用于將上述第二數(shù)據(jù)標(biāo)記序列與上述第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,基于匹配結(jié)果生成測試結(jié)果。
在一些實(shí)施例中,上述生成單元包括:第一確定子單元,配置用于確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目是否相同;第二確定子單元,配置用于確定若數(shù)目相同,則進(jìn)一步確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的同一位置的數(shù)據(jù)標(biāo)記是否相同;生成子單元,配置用于確定若上述第二數(shù)據(jù)標(biāo)記序列包括與上述第一數(shù)據(jù)標(biāo)記序列中的對應(yīng)位置上的數(shù)據(jù)標(biāo)記不同的目標(biāo)數(shù)據(jù)標(biāo)記,則生成測試結(jié)果,其中,上述測試結(jié)果包括上述目標(biāo)數(shù)據(jù)標(biāo)記。
在一些實(shí)施例中,當(dāng)上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目超出預(yù)置值時(shí),上述測試結(jié)果還包括上述目標(biāo)數(shù)據(jù)標(biāo)記在上述第二數(shù)據(jù)標(biāo)記序列中的位置信息。
在一些實(shí)施例中,上述生成單元包括:第三確定子單元,配置用于響應(yīng)于確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目不相同,則進(jìn)一步確定上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目是否少于上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目;第一生成子單元,配置用于若少于,則生成包括數(shù)據(jù)丟失提示信息的測試結(jié)果。
在一些實(shí)施例中,當(dāng)上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目少于上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目時(shí),所生成的測試結(jié)果還包括上述第一數(shù)據(jù)標(biāo)記序列中的、未包括在上述第二數(shù)據(jù)標(biāo)記序列中的數(shù)據(jù)標(biāo)記。
在一些實(shí)施例中,上述期望結(jié)果還包括預(yù)期結(jié)果數(shù)據(jù);以及上述生成單元進(jìn)一步配置用于:響應(yīng)于確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的同一位置的數(shù)據(jù)標(biāo)記相同,則進(jìn)一步確定上述待測試程序在運(yùn)行結(jié)束后所產(chǎn)生的實(shí)際結(jié)果數(shù)據(jù)是否與上述預(yù)期結(jié)果數(shù)據(jù)相同;響應(yīng)于確定上述實(shí)際結(jié)果數(shù)據(jù)與上述預(yù)期結(jié)果數(shù)據(jù)相同,則生成包括以下至少一項(xiàng)的測試結(jié)果:測試通過提示信息、上述第二數(shù)據(jù)標(biāo)記序列、上述實(shí)際結(jié)果數(shù)據(jù)。
第三方面,本申請實(shí)施例提供了一種電子設(shè)備,該電子設(shè)備包括:一個(gè)或多個(gè)處理器;存儲(chǔ)裝置,用于存儲(chǔ)一個(gè)或多個(gè)程序;當(dāng)上述一個(gè)或多個(gè)程序被上述一個(gè)或多個(gè)處理器執(zhí)行,使得上述一個(gè)或多個(gè)處理器實(shí)現(xiàn)如第一方面中任一實(shí)現(xiàn)方式描述的方法。
第四方面,本申請實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,上述程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如第一方面中任一實(shí)現(xiàn)方式描述的方法。
本申請實(shí)施例提供的測試方法和裝置,通過在接收到對待測試程序進(jìn)行測試的指令后,將該指令所包括的測試數(shù)據(jù)輸入該待測試程序,并運(yùn)行該待測試程序,以使該待測試程序在運(yùn)行結(jié)束后生成執(zhí)行過程信息。而后通過將該執(zhí)行過程信息所包括的第二數(shù)據(jù)標(biāo)記序列與該指令所包括的第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,以便基于匹配結(jié)果生成測試結(jié)果。有效利用了對上述第二數(shù)據(jù)標(biāo)記序列的生成,清晰地記錄了該測試數(shù)據(jù)實(shí)際流經(jīng)的每個(gè)分支,通過將上述第二數(shù)據(jù)標(biāo)記序列與上述第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,以便在上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記和上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記不完全相同時(shí),快速地定位出哪個(gè)分支出現(xiàn)了問題,從而可以提高測試效率。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實(shí)施例所作的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1是本申請可以應(yīng)用于其中的示例性系統(tǒng)架構(gòu)圖;
圖2是根據(jù)本申請的測試方法的一個(gè)實(shí)施例的流程圖;
圖3是一個(gè)具有分支結(jié)構(gòu)的程序的部分分支的示意圖;
圖4是根據(jù)本申請的測試方法的一個(gè)應(yīng)用場景的示意圖;
圖5是根據(jù)本申請的測試方法的又一個(gè)實(shí)施例的流程圖;
圖6是根據(jù)本申請的測試裝置的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
圖7是適于用來實(shí)現(xiàn)本申請實(shí)施例的電子設(shè)備的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本申請作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖牵颂幩枋龅木唧w實(shí)施例僅僅用于解釋相關(guān)發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本申請。
圖1示出了可以應(yīng)用本申請的測試方法或測試裝置的實(shí)施例的示例性系統(tǒng)架構(gòu)100。
如圖1所示,系統(tǒng)架構(gòu)100可以包括終端設(shè)備101、102、103,網(wǎng)絡(luò)104和服務(wù)器105。網(wǎng)絡(luò)104用以在終端設(shè)備101、102、103和服務(wù)器105之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)104可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
用戶可以使用終端設(shè)備101、102、103通過網(wǎng)絡(luò)104與服務(wù)器105交互,以接收或發(fā)送信息等。終端設(shè)備101、102、103上可以安裝有各種通訊客戶端應(yīng)用,例如網(wǎng)頁瀏覽器應(yīng)用、購物類應(yīng)用、游戲類應(yīng)用、軟件測試工具等。終端設(shè)備101、102、103可以本地接收對待測試程序進(jìn)行測試的指令,并對該指令進(jìn)行處理。
終端設(shè)備101、102、103可以是具有顯示屏的各種電子設(shè)備,包括但不限于智能手機(jī)、平板電腦、膝上型便攜計(jì)算機(jī)和臺(tái)式計(jì)算機(jī)等等。
服務(wù)器105可以是提供各種服務(wù)的服務(wù)器,例如部署有具有分支結(jié)構(gòu)的待測試程序的服務(wù)器,該服務(wù)器可以將待測試程序運(yùn)行結(jié)束后所生成的信息(例如運(yùn)行過程中所耗費(fèi)的時(shí)間等)寫入指定的存儲(chǔ)位置、或發(fā)送給終端設(shè)備101、102、103。
需要說明的是,本申請實(shí)施例所提供的測試方法一般由終端設(shè)備101、102、103執(zhí)行,相應(yīng)地,測試裝置一般設(shè)置于終端設(shè)備101、102、103中。
應(yīng)該理解,圖1中的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器的數(shù)目僅僅是示意性的。根據(jù)實(shí)現(xiàn)需要,可以具有任意數(shù)目的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器。
需要指出的是,若待測試程序不是部署在服務(wù)器上的程序,則系統(tǒng)架構(gòu)100中可以不包括服務(wù)器105。
繼續(xù)參考圖2,示出了根據(jù)本申請的測試方法的一個(gè)實(shí)施例的流程200。該測試方法,包括以下步驟:
步驟201,接收對待測試程序進(jìn)行測試的指令。
在本實(shí)施例中,測試方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的終端設(shè)備101、102、103)可以本地接收對待測試程序進(jìn)行測試的指令。其中,該待測試程序可以是具有分支結(jié)構(gòu)的程序。如圖3所示,圖3示出了一個(gè)具有分支結(jié)構(gòu)的程序的部分分支的示意圖。在圖3中,該程序包括條件“判斷1”、“判斷2”、“判斷3”、“判斷4”、“判斷5”、“判斷6”、“判斷7”。其中,條件“判斷1”、“判斷2”、“判斷3”可以分別對應(yīng)兩個(gè)分支,即條件滿足時(shí)(圖3中的“是”可以表示條件滿足)對應(yīng)一個(gè)分支,條件不滿足時(shí)(圖3中的“否”可以表示條件不滿足)對應(yīng)一個(gè)分支。對于條件“判斷4”、“判斷5”、“判斷6”、“判斷7”所對應(yīng)的分支在圖3中未示出。這里,上述待測試程序所包括的每個(gè)分支可以預(yù)先設(shè)置有數(shù)據(jù)標(biāo)記,該數(shù)據(jù)標(biāo)記可以包括數(shù)字、字母、漢字、特殊符號(hào)(例如“(”、“)”等)等字符,數(shù)據(jù)標(biāo)記可以例如是“標(biāo)記1(是)”、“標(biāo)記1(y)”、“標(biāo)記1(否)”、“標(biāo)記1(f)”等。上述指令可以包括測試數(shù)據(jù)和期望結(jié)果,該期望結(jié)果可以包括期望該測試數(shù)據(jù)所流經(jīng)的每個(gè)分支的數(shù)據(jù)標(biāo)記所組成的第一數(shù)據(jù)標(biāo)記序列。需要說明的是,上述待測試程序可以是部署在本地的程序,也可以是部署在所連接的服務(wù)器(例如圖1所示的服務(wù)器105)上的程序,本實(shí)施例不對此方面內(nèi)容做任何限定。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述期望結(jié)果還可以包括預(yù)期結(jié)果數(shù)據(jù),該預(yù)期結(jié)果數(shù)據(jù)可以是測試人員期望上述待測試程序在運(yùn)行結(jié)束后所產(chǎn)生的結(jié)果數(shù)據(jù)。例如,上述待測試程序可以用于店鋪匹配,確定兩個(gè)店鋪是否是同一個(gè)店鋪,所產(chǎn)生的結(jié)果數(shù)據(jù)為“相同”或“不相同”,若測試數(shù)據(jù)包括數(shù)據(jù)集a和數(shù)據(jù)集b,其中,數(shù)據(jù)集a包括“三里屯38號(hào)”、“西餐”、“容納40人”,數(shù)據(jù)集b包括“三里屯38號(hào)”、“西餐廳”、“40人”,那么預(yù)期結(jié)果數(shù)據(jù)可以為“相同”。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述測試數(shù)據(jù)可以來源于一條測試用例,也可以來源于多條測試用例。當(dāng)上述測試數(shù)據(jù)來源于多條測試用例時(shí),意味著上述電子設(shè)備可以一次性地執(zhí)行多條測試用例。需要說明的是,測試用例通常指對一項(xiàng)特定的軟件產(chǎn)品進(jìn)行測試任務(wù)的描述,體現(xiàn)測試方案、方法、技術(shù)和策略。內(nèi)容可以包括測試目標(biāo)、測試環(huán)境、輸入數(shù)據(jù)、測試步驟、預(yù)期結(jié)果、測試腳本等。
步驟202,將指令所包括的測試數(shù)據(jù)輸入待測試程序,運(yùn)行待測試程序,以使待測試程序在運(yùn)行結(jié)束后生成執(zhí)行過程信息。
在本實(shí)施例中,上述電子設(shè)備在接收到上述指令后,可以將上述測試數(shù)據(jù)輸入上述待測試程序,并運(yùn)行上述待測試程序,以使上述待測試程序在運(yùn)行結(jié)束后生成執(zhí)行過程信息。其中,該執(zhí)行過程信息可以包括上述測試數(shù)據(jù)實(shí)際所流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第二數(shù)據(jù)標(biāo)記序列,該第二數(shù)據(jù)標(biāo)記序列中的各個(gè)數(shù)據(jù)標(biāo)記可以是按照所對應(yīng)的分支被執(zhí)行的先后順序進(jìn)行排列的。這里,上述電子設(shè)備本地可以預(yù)先配置有擁有軟硬件資源的線程,上述電子設(shè)備可以通過該線程以將上述測試數(shù)據(jù)輸入上述待測試程序,并運(yùn)行上述待測試程序,本實(shí)施例不對此方面內(nèi)容做任何限定。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,當(dāng)上述測試數(shù)據(jù)來源于多條測試用例時(shí),上述執(zhí)行過程信息可以包括與來源于每一條測試用例的測試數(shù)據(jù)對應(yīng)的第二數(shù)據(jù)標(biāo)記序列。例如上述待測試數(shù)據(jù)包括測試數(shù)據(jù)a和測試數(shù)據(jù)b,則上述執(zhí)行過程信息可以包括測試數(shù)據(jù)a所流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第二數(shù)據(jù)標(biāo)記序列,以及測試數(shù)據(jù)b所流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第二數(shù)據(jù)標(biāo)記序列。
步驟203,將執(zhí)行過程信息所包括的第二數(shù)據(jù)標(biāo)記序列和指令所包括的第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,基于匹配結(jié)果生成測試結(jié)果。
在本實(shí)施例中,在生成上述執(zhí)行過程信息后,上述電子設(shè)備可以將上述執(zhí)行過程信息所包括的第二數(shù)據(jù)標(biāo)記序列與上述指令所包括的第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,并基于匹配結(jié)果生成測試結(jié)果。作為示例,上述電子設(shè)備可以直接將該第二數(shù)據(jù)標(biāo)記序列和該第一數(shù)據(jù)標(biāo)記序列所包括的同一位置的數(shù)據(jù)標(biāo)記進(jìn)行比較,例如依次確定該第二數(shù)據(jù)標(biāo)記序列中的每個(gè)數(shù)據(jù)標(biāo)記是否與該第一數(shù)據(jù)標(biāo)記序列中的對應(yīng)位置上的數(shù)據(jù)標(biāo)記相同;若存在不相同的數(shù)據(jù)標(biāo)記,則上述電子設(shè)備可以生成測試結(jié)果,該測試結(jié)果可以包括該第二數(shù)據(jù)標(biāo)記序列中的、首個(gè)被確定出的與該第一數(shù)據(jù)標(biāo)記序列中的對應(yīng)位置上的數(shù)據(jù)標(biāo)記不相同的數(shù)據(jù)標(biāo)記。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述電子設(shè)備還可以將上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列進(jìn)行數(shù)目比對,以確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目是否相同,若數(shù)目不相同,上述電子設(shè)備可以進(jìn)一步確定上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目是否少于上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目,若少于,上述電子設(shè)備可以生成包括數(shù)據(jù)丟失提示信息的測試結(jié)果。可選地,該測試結(jié)果還可以包括上述第一數(shù)據(jù)標(biāo)記序列中的、未包括在上述第二數(shù)據(jù)標(biāo)記序列中的數(shù)據(jù)標(biāo)記。這樣,測試人員或開發(fā)人員通過查看該測試結(jié)果,很容易定位出被漏執(zhí)行的分支。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,若上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目相同,則上述電子設(shè)備可以進(jìn)一步確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的同一位置的數(shù)據(jù)標(biāo)記是否相同;若該同一位置的數(shù)據(jù)標(biāo)記相同,則上述電子設(shè)備可以進(jìn)一步確定上述待測試程序在運(yùn)行結(jié)束后所產(chǎn)生的實(shí)際結(jié)果數(shù)據(jù)是否與上述指令所包括的預(yù)期結(jié)果數(shù)據(jù)相同;響應(yīng)于確定該實(shí)際結(jié)果數(shù)據(jù)與該預(yù)期結(jié)果數(shù)據(jù)相同,則上述電子設(shè)備可以生成包括以下至少一項(xiàng)的測試數(shù)據(jù):測試通過提示信息、上述第二數(shù)據(jù)標(biāo)記序列、該實(shí)際結(jié)果數(shù)據(jù)。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述電子設(shè)備還可以輸出上述執(zhí)行過程信息和上述測試結(jié)果,例如輸出至上述電子設(shè)備的顯示屏上,或輸出至上述電子設(shè)備的內(nèi)存或硬盤上,或者輸出至與上述電子設(shè)備遠(yuǎn)程通信連接的服務(wù)器,本實(shí)施例不對此方面內(nèi)容做任何限定。
繼續(xù)參見圖4,圖4是根據(jù)本實(shí)施例的測試方法的應(yīng)用場景的一個(gè)示意圖。在圖4的應(yīng)用場景中,待測試程序401是部署在服務(wù)器402上的分布式應(yīng)用程序,待測試程序401所包括的每個(gè)分支預(yù)先設(shè)置有數(shù)據(jù)標(biāo)記。客戶端403上可以安裝有支持測試數(shù)據(jù)和第一數(shù)據(jù)標(biāo)記序列提交功能的客戶端應(yīng)用,用戶可以通過該客戶端應(yīng)用提交測試數(shù)據(jù)404和與測試數(shù)據(jù)404對應(yīng)的第一數(shù)據(jù)標(biāo)記序列405以觸發(fā)對待測試程序401進(jìn)行測試的指令406,其中,指令406包括測試數(shù)據(jù)404和第一數(shù)據(jù)標(biāo)記序列405,第一數(shù)據(jù)標(biāo)記序列405依次包括數(shù)據(jù)標(biāo)記“標(biāo)記1(是)”、“標(biāo)記2(是)”、“標(biāo)記4(是)”、“標(biāo)記9(否)”。客戶端403可以本地接收指令406。而后,客戶端403可以將測試數(shù)據(jù)404輸入待測試程序401,運(yùn)行待測試程序401,以使待測試程序401在運(yùn)行結(jié)束后生成執(zhí)行過程信息,其中,該執(zhí)行過程信息包括測試數(shù)據(jù)404實(shí)際流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第二數(shù)據(jù)標(biāo)記序列407,假定第二數(shù)據(jù)標(biāo)記序列407依次包括數(shù)據(jù)標(biāo)記“標(biāo)記1(是)”、“標(biāo)記2(否)”、“標(biāo)記5(是)”、“標(biāo)記10(否)”;最后,客戶端403可以直接將第二數(shù)據(jù)標(biāo)記序列407和第一數(shù)據(jù)標(biāo)記序列405所包括的同一位置的數(shù)據(jù)標(biāo)記進(jìn)行比較,比較出同一位置的數(shù)據(jù)標(biāo)記“標(biāo)記2(是)”和“標(biāo)記2(否)”不同,數(shù)據(jù)標(biāo)記“標(biāo)記4(是)”和“標(biāo)記5(是)”不同,以及數(shù)據(jù)標(biāo)記“標(biāo)記9(否)”和“標(biāo)記10(否)”不同,客戶端403可以生成測試結(jié)果408,測試結(jié)果408可以包括第二數(shù)據(jù)標(biāo)記序列407中的數(shù)據(jù)標(biāo)記“標(biāo)記2(否)”,即待測試程序401中的首個(gè)執(zhí)行錯(cuò)誤的分支的數(shù)據(jù)標(biāo)記。
本申請的上述實(shí)施例提供的方法有效利用了對上述第二數(shù)據(jù)標(biāo)記序列的生成,清晰地記錄了該測試數(shù)據(jù)實(shí)際流經(jīng)的每個(gè)分支,通過將上述第二數(shù)據(jù)標(biāo)記序列與上述第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,以便在上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記和上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記不完全相同時(shí),快速地定位出哪個(gè)分支出現(xiàn)了問題,從而可以提高測試效率。
進(jìn)一步參考圖5,其示出了測試方法的又一個(gè)實(shí)施例的流程500。該測試方法的流程500,包括以下步驟:
步驟501,接收對待測試程序進(jìn)行測試的指令。
在本實(shí)施例中,測試方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的終端設(shè)備101、102、103)可以本地接收對待測試程序進(jìn)行測試的指令。其中,該待測試程序可以是具有分支結(jié)構(gòu)的程序,該待測試程序所包括的每個(gè)分支可以預(yù)先設(shè)置有數(shù)據(jù)標(biāo)記,該數(shù)據(jù)標(biāo)記可以包括數(shù)字、字母、漢字、特殊符號(hào)(例如“(”、“)”等)等字符,數(shù)據(jù)標(biāo)記可以例如是“標(biāo)記1(是)”、“標(biāo)記1(y)”、“標(biāo)記1(否)”、“標(biāo)記1(f)”等。上述指令可以包括測試數(shù)據(jù)和期望結(jié)果,該期望結(jié)果可以包括期望該測試數(shù)據(jù)所流經(jīng)的每個(gè)分支的數(shù)據(jù)標(biāo)記所組成的第一數(shù)據(jù)標(biāo)記序列。需要說明的是,上述待測試程序可以是部署在本地的程序,也可以是部署在所連接的服務(wù)器(例如圖1所示的服務(wù)器105)上的程序,本實(shí)施例不對此方面內(nèi)容做任何限定。
步驟502,將指令所包括的測試數(shù)據(jù)輸入待測試程序,運(yùn)行待測試程序,以使待測試程序在運(yùn)行結(jié)束后生成執(zhí)行過程信息。
在本實(shí)施例中,上述電子設(shè)備在接收到上述指令后,可以將上述測試數(shù)據(jù)輸入上述待測試程序,并運(yùn)行上述待測試程序,以使上述待測試程序在運(yùn)行結(jié)束后生成執(zhí)行過程信息。其中,該執(zhí)行過程信息可以包括上述測試數(shù)據(jù)實(shí)際所流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第二數(shù)據(jù)標(biāo)記序列,該第二數(shù)據(jù)標(biāo)記序列中的各個(gè)數(shù)據(jù)標(biāo)記可以是按照所對應(yīng)的分支被執(zhí)行的先后順序進(jìn)行排列的。
步驟503,確定執(zhí)行過程信息所包括的第二數(shù)據(jù)標(biāo)記序列和指令所包括的第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目是否相同。
在本實(shí)施例中,在生成上述執(zhí)行過程信息后,上述電子設(shè)備可以將上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目進(jìn)行比對,以確定該數(shù)目是否相同。若相同,上述電子設(shè)備可以執(zhí)行步驟504。
步驟504,確定第二數(shù)據(jù)標(biāo)記序列和第一數(shù)據(jù)標(biāo)記序列分別包括的同一位置的數(shù)據(jù)標(biāo)記是否相同。
在本實(shí)施例中,響應(yīng)于步驟503確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目相同,則上述電子設(shè)備可以進(jìn)一步將上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的同一位置的數(shù)據(jù)標(biāo)記進(jìn)行比較,以確定該同一位置的數(shù)據(jù)標(biāo)記是否相同。若上述第二數(shù)據(jù)標(biāo)記序列包括與上述第一數(shù)據(jù)標(biāo)記序列中的對應(yīng)位置上的數(shù)據(jù)標(biāo)記不同的目標(biāo)數(shù)據(jù)標(biāo)記,則上述電子設(shè)備可以執(zhí)行步驟505。
步驟505,生成測試結(jié)果。
在本實(shí)施例中,響應(yīng)于上述第二數(shù)據(jù)標(biāo)記序列包括與上述第一數(shù)據(jù)標(biāo)記序列中的對應(yīng)位置上的數(shù)據(jù)標(biāo)記不同的目標(biāo)數(shù)據(jù)標(biāo)記,則上述電子設(shè)備可以生成測試結(jié)果,其中,該測試結(jié)果可以包括上述目標(biāo)數(shù)據(jù)標(biāo)記。這里,若上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目超出預(yù)置值(例如30),該測試結(jié)果還可以包括上述目標(biāo)數(shù)據(jù)標(biāo)記在上述第二數(shù)據(jù)標(biāo)記序列中的位置信息。需要指出的是,上述第二數(shù)據(jù)標(biāo)記序列中的每個(gè)數(shù)據(jù)標(biāo)記可以有索引號(hào),該位置信息可以是上述目標(biāo)數(shù)據(jù)的索引號(hào)。需要說明的是,上述預(yù)置值是可以根據(jù)實(shí)際需要進(jìn)行修改的,本實(shí)施例不對此方面內(nèi)容做任何限定。
從圖5中可以看出,與圖2對應(yīng)的實(shí)施例相比,本實(shí)施例中的測試方法的流程500突出了在上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目相同的情況下的處理步驟。由此,本實(shí)施例描述的方案可以提高測試的全面性,進(jìn)而可以提高測試效率。
進(jìn)一步參考圖6,作為對上述各圖所示方法的實(shí)現(xiàn),本申請?zhí)峁┝艘环N測試裝置的一個(gè)實(shí)施例,該裝置實(shí)施例與圖2所示的方法實(shí)施例相對應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
如圖6所示,本實(shí)施例所示的測試裝置600包括:接收單元601、程序運(yùn)行單元602和生成單元603。其中,接收單元601配置用于接收對待測試程序進(jìn)行測試的指令,其中,上述待測試程序是具有分支結(jié)構(gòu)的程序,上述待測試程序所包括的每個(gè)分支預(yù)先設(shè)置有數(shù)據(jù)標(biāo)記,上述指令包括測試數(shù)據(jù)和期望結(jié)果,上述期望結(jié)果包括期望上述測試數(shù)據(jù)所流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第一數(shù)據(jù)標(biāo)記序列;程序運(yùn)行單元602配置用于將上述測試數(shù)據(jù)輸入上述待測試程序,運(yùn)行上述待測試程序,以使上述待測試程序在運(yùn)行結(jié)束后生成執(zhí)行過程信息,其中,上述執(zhí)行過程信息包括上述測試數(shù)據(jù)實(shí)際流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第二數(shù)據(jù)標(biāo)記序列;生成單元603配置用于將上述第二數(shù)據(jù)標(biāo)記序列與上述第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,基于匹配結(jié)果生成測試結(jié)果。
在本實(shí)施例中,測試裝置600中:接收單元601、程序運(yùn)行單元602和生成單元603的具體處理及其所帶來的技術(shù)效果可分別參考圖2對應(yīng)實(shí)施例中的步驟201、步驟202和步驟203的相關(guān)說明,在此不再贅述。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述生成單元603可以包括:第一確定子單元(圖中未示出),配置用于確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目是否相同;第二確定子單元(圖中未示出),配置用于確定若數(shù)目相同,則進(jìn)一步確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的同一位置的數(shù)據(jù)標(biāo)記是否相同;生成子單元(圖中未示出),配置用于確定若上述第二數(shù)據(jù)標(biāo)記序列包括與上述第一數(shù)據(jù)標(biāo)記序列中的對應(yīng)位置上的數(shù)據(jù)標(biāo)記不同的目標(biāo)數(shù)據(jù)標(biāo)記,則生成測試結(jié)果,其中,上述測試結(jié)果包括上述目標(biāo)數(shù)據(jù)標(biāo)記。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,當(dāng)上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目超出預(yù)置值時(shí),上述測試結(jié)果還包括上述目標(biāo)數(shù)據(jù)標(biāo)記在上述第二數(shù)據(jù)標(biāo)記序列中的位置信息。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述生成單元603可以包括:第三確定子單元(圖中未示出),配置用于響應(yīng)于確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的數(shù)據(jù)標(biāo)記的數(shù)目不相同,則進(jìn)一步確定上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目是否少于上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目;第一生成子單元(圖中未示出),配置用于若少于,則生成包括數(shù)據(jù)丟失提示信息的測試結(jié)果。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,當(dāng)上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目少于上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記的數(shù)目時(shí),所生成的測試結(jié)果還包括上述第一數(shù)據(jù)標(biāo)記序列中的、未包括在上述第二數(shù)據(jù)標(biāo)記序列中的數(shù)據(jù)標(biāo)記。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述期望結(jié)果還包括預(yù)期結(jié)果數(shù)據(jù);以及上述生成單元603可以進(jìn)一步配置用于:響應(yīng)于確定上述第二數(shù)據(jù)標(biāo)記序列和上述第一數(shù)據(jù)標(biāo)記序列分別包括的同一位置的數(shù)據(jù)標(biāo)記相同,則進(jìn)一步確定上述待測試程序在運(yùn)行結(jié)束后所產(chǎn)生的實(shí)際結(jié)果數(shù)據(jù)是否與上述預(yù)期結(jié)果數(shù)據(jù)相同;響應(yīng)于確定上述實(shí)際結(jié)果數(shù)據(jù)與上述預(yù)期結(jié)果數(shù)據(jù)相同,則生成包括以下至少一項(xiàng)的測試結(jié)果:測試通過提示信息、上述第二數(shù)據(jù)標(biāo)記序列、上述實(shí)際結(jié)果數(shù)據(jù)。
本申請的上述實(shí)施例提供的裝置有效利用了對上述第二數(shù)據(jù)標(biāo)記序列的生成,清晰地記錄了該測試數(shù)據(jù)實(shí)際流經(jīng)的每個(gè)分支,通過將上述第二數(shù)據(jù)標(biāo)記序列與上述第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,以便在上述第二數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記和上述第一數(shù)據(jù)標(biāo)記序列所包括的數(shù)據(jù)標(biāo)記不完全相同時(shí),快速地定位出哪個(gè)分支出現(xiàn)了問題,從而可以提高測試效率。
下面參考圖7,其示出了適于用來實(shí)現(xiàn)本申請實(shí)施例的電子設(shè)備的計(jì)算機(jī)系統(tǒng)700的結(jié)構(gòu)示意圖。圖7示出的電子設(shè)備僅僅是一個(gè)示例,不應(yīng)對本申請實(shí)施例的功能和使用范圍帶來任何限制。
如圖7所示,計(jì)算機(jī)系統(tǒng)700包括中央處理單元(cpu)701,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(rom)702中的程序或者從存儲(chǔ)部分708加載到隨機(jī)訪問存儲(chǔ)器(ram)703中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在ram703中,還存儲(chǔ)有系統(tǒng)700操作所需的各種程序和數(shù)據(jù)。cpu701、rom702以及ram703通過總線704彼此相連。輸入/輸出(i/o)接口705也連接至總線704。
以下部件連接至i/o接口705:包括鍵盤、鼠標(biāo)等的輸入部分706;包括諸如陰極射線管(crt)、液晶顯示器(lcd)等以及揚(yáng)聲器等的輸出部分707;包括硬盤等的存儲(chǔ)部分708;以及包括諸如lan卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分709。通信部分709經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動(dòng)器710也根據(jù)需要連接至i/o接口705。可拆卸介質(zhì)711,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲(chǔ)器等等,根據(jù)需要安裝在驅(qū)動(dòng)器710上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲(chǔ)部分708。
特別地,根據(jù)本公開的實(shí)施例,上文參考流程圖描述的過程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本公開的實(shí)施例包括一種計(jì)算機(jī)程序產(chǎn)品,其包括承載在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序,該計(jì)算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實(shí)施例中,該計(jì)算機(jī)程序可以通過通信部分709從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)711被安裝。在該計(jì)算機(jī)程序被中央處理單元(cpu)701執(zhí)行時(shí),執(zhí)行本申請的系統(tǒng)中限定的上述功能。
需要說明的是,本申請所示的計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)或者是上述兩者的任意組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子可以包括但不限于:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)訪問存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、可擦式可編程只讀存儲(chǔ)器(eprom或閃存)、光纖、便攜式緊湊磁盤只讀存儲(chǔ)器(cd-rom)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本申請中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。而在本申請中,計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括但不限于電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括但不限于:無線、電線、光纜、rf等等,或者上述的任意合適的組合。
附圖中的流程圖和框圖,圖示了按照本申請各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,上述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖或流程圖中的每個(gè)方框、以及框圖或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
描述于本申請實(shí)施例中所涉及到的單元可以通過軟件的方式實(shí)現(xiàn),也可以通過硬件的方式來實(shí)現(xiàn)。所描述的單元也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括接收單元、程序運(yùn)行單元、和生成單元。其中,這些單元的名稱在某種情況下并不構(gòu)成對該單元本身的限定,例如,第一確定單元還可以被描述為“接收對待測試程序進(jìn)行測試的指令的單元”。
作為另一方面,本申請還提供了一種計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以是上述實(shí)施例中描述的電子設(shè)備中所包含的;也可以是單獨(dú)存在,而未裝配入該電子設(shè)備中。上述計(jì)算機(jī)可讀介質(zhì)承載有一個(gè)或者多個(gè)程序,當(dāng)上述一個(gè)或者多個(gè)程序被一個(gè)該電子設(shè)備執(zhí)行時(shí),使得該電子設(shè)備包括:接收對待測試程序進(jìn)行測試的指令,其中,上述待測試程序是具有分支結(jié)構(gòu)的程序,上述待測試程序所包括的每個(gè)分支預(yù)先設(shè)置有數(shù)據(jù)標(biāo)記,上述指令包括測試數(shù)據(jù)和期望結(jié)果,上述期望結(jié)果包括期望上述測試數(shù)據(jù)所流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第一數(shù)據(jù)標(biāo)記序列;將上述測試數(shù)據(jù)輸入上述待測試程序,運(yùn)行上述待測試程序,以使上述待測試程序在運(yùn)行結(jié)束后生成執(zhí)行過程信息,其中,上述執(zhí)行過程信息包括上述測試數(shù)據(jù)實(shí)際流經(jīng)的分支的數(shù)據(jù)標(biāo)記所組成的第二數(shù)據(jù)標(biāo)記序列;將上述第二數(shù)據(jù)標(biāo)記序列與上述第一數(shù)據(jù)標(biāo)記序列進(jìn)行匹配,基于匹配結(jié)果生成測試結(jié)果。
以上描述僅為本申請的較佳實(shí)施例以及對所運(yùn)用技術(shù)原理的說明。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本申請中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時(shí)也應(yīng)涵蓋在不脫離上述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進(jìn)行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術(shù)特征進(jìn)行互相替換而形成的技術(shù)方案。