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