一種用于對被測程序進(jìn)行異常測試的方法和裝置制造方法
【專利摘要】本發(fā)明的目的在于提供一種用于對被測程序進(jìn)行異常測試的方法和裝置。根據(jù)本發(fā)明的方法包括:獲取被待測程序中正在運(yùn)行的當(dāng)前函數(shù)的當(dāng)前調(diào)用信息;判斷所述當(dāng)前調(diào)用信息是否滿足異常觸發(fā)條件;當(dāng)所述當(dāng)前函數(shù)的當(dāng)前調(diào)用信息滿足異常觸發(fā)條件時,觸發(fā)異常,以測試所述被測程序。本發(fā)明的優(yōu)點(diǎn)在于,可基于預(yù)定的異常觸發(fā)條件,人為地觸發(fā)待測程序中的部分函數(shù)的異常,以測試待測程序?qū)τ谠摦惓5姆磻?yīng),從而能夠有效的控制異常的發(fā)生,并且,還可方便的重復(fù)觸發(fā)該異常,以便于用戶做進(jìn)一步調(diào)試和檢測。極大的提高了測試過程的效率,并節(jié)省了大量的人力物力。
【專利說明】一種用于對被測程序進(jìn)行異常測試的方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種用于對被測程序進(jìn)行異常測試的方法 和裝置。
【背景技術(shù)】
[0002] 在現(xiàn)有的測試技術(shù)中,程序異常通常是偶發(fā)性的,無法對異常的發(fā)生進(jìn)行控制,因 此,人們需要花費(fèi)大量的時間與精力去研究如何重現(xiàn)前一次的異常,以便于后續(xù)的程序調(diào) 試;并且由于異常的偶發(fā)性,也導(dǎo)致有時候?qū)τ诒粶y程序的測試過程并不完整很嚴(yán)謹(jǐn),其可 能還存在許多隱藏的問題沒有被檢測到。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的在于提供一種用于對被測程序進(jìn)行異常測試的方法和裝置。
[0004] 根據(jù)本發(fā)明的一個方面,提供了一種用于對被測程序進(jìn)行異常測試的方法,其中, 所述方法包括以下步驟:
[0005] a獲取被待測程序中正在運(yùn)行的當(dāng)前函數(shù)的當(dāng)前調(diào)用信息;
[0006] b判斷所述當(dāng)前調(diào)用信息是否滿足異常觸發(fā)條件;
[0007] c當(dāng)所述當(dāng)前函數(shù)的當(dāng)前調(diào)用信息滿足異常觸發(fā)條件時,觸發(fā)異常,以測試所述被 測程序。
[0008] 根據(jù)本發(fā)明的一個方面,還提供了一種用于對被測程序進(jìn)行異常測試的測試裝 置,其中,測試裝置包括:
[0009] 第一獲取裝置,用于獲取被待測程序中正在運(yùn)行的當(dāng)前函數(shù)的當(dāng)前調(diào)用信息;
[0010] 判斷裝置,用于判斷所述當(dāng)前調(diào)用信息是否滿足異常觸發(fā)條件;
[0011] 觸發(fā)裝置,用于當(dāng)所述當(dāng)前函數(shù)的當(dāng)前調(diào)用信息滿足異常觸發(fā)條件時,觸發(fā)異常, 以測試所述被測程序。
[0012] 根據(jù)本發(fā)明的方法,可基于預(yù)定的異常觸發(fā)條件,人為地觸發(fā)待測程序中的部分 函數(shù)的異常,以測試待測程序?qū)τ谠摦惓5姆磻?yīng),從而能夠有效的控制異常的發(fā)生,并且, 還可方便的重復(fù)觸發(fā)該異常,以便于用戶做進(jìn)一步調(diào)試和檢測。極大的提高了測試過程的 效率,并節(jié)省了大量的人力物力。
【專利附圖】
【附圖說明】
[0013] 通過閱讀參照以下附圖所作的對非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它 特征、目的和優(yōu)點(diǎn)將會變得更明顯:
[0014] 圖1為根據(jù)本發(fā)明的一個方面的用于對被測程序進(jìn)行異常測試的方法流程圖;
[0015] 圖2為根據(jù)本發(fā)明的一個方面的用于對被測程序進(jìn)行異常測試的測試裝置的結(jié) 構(gòu)示意圖。
[0016] 附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
【具體實(shí)施方式】
[0017] 下面結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)描述。
[0018] 圖1示意出了根據(jù)本發(fā)明的一個方面的用于對被測程序進(jìn)行異常測試的方法流 程圖。根據(jù)本發(fā)明的方法包括步驟S1、步驟S2和步驟S3。
[0019] 參照圖1,在步驟S1中,計算機(jī)設(shè)備獲取被測程序中正在運(yùn)行的當(dāng)前函數(shù)的當(dāng)前 調(diào)用信息。
[0020] 其中,所述當(dāng)前調(diào)用信息用于指示當(dāng)前函數(shù)的被調(diào)用關(guān)系。優(yōu)選地,所述當(dāng)前調(diào)用 信息基于被測程序執(zhí)行時的棧序列所確定。
[0021] 具體地,計算機(jī)設(shè)備在運(yùn)行所述被測程序的當(dāng)前函數(shù)時,獲取與該被測函數(shù)對應(yīng) 的函數(shù)調(diào)用棧序列,以基于所獲得的棧序列確定當(dāng)前函數(shù)的當(dāng)前調(diào)用信息。
[0022] 接著,在步驟S2中,計算機(jī)設(shè)備判斷所述當(dāng)前調(diào)用信息是否滿足異常觸發(fā)條件。
[0023] 其中,所述異常包括但不限于可導(dǎo)致與當(dāng)前函數(shù)的正常運(yùn)行結(jié)果不同的其他運(yùn)行 結(jié)果的可執(zhí)行代碼,優(yōu)選地,所述異常包括函數(shù)或代碼。所述異常觸發(fā)條件用于判斷是否觸 發(fā)與當(dāng)前函數(shù)對應(yīng)的異常。
[0024] 其中,所述異常觸發(fā)條件包括但不限于一項或多項調(diào)用關(guān)系。優(yōu)選地,所述異常觸 發(fā)條件包括但不限于以下任一種:
[0025] 1)包括與所述當(dāng)前函數(shù)對應(yīng)的一項或多項調(diào)用關(guān)系;
[0026] 2)與所述被測程序?qū)?yīng)的一項或多項調(diào)用關(guān)系。
[0027] 更優(yōu)選地,所述異常觸發(fā)條件包括與各項調(diào)用關(guān)系分別對應(yīng)的異常相關(guān)信息。所 述異常相關(guān)信息包括但不限于以下至少任一項:
[0028] 1)異常標(biāo)識信息,例如,異常函數(shù)的函數(shù)名稱,或者函數(shù)編號等。
[0029] 2)異常對應(yīng)的返回信息,例如,異常函數(shù)或代碼執(zhí)行后的輸出信息等。
[0030] 3)異常所對應(yīng)的函數(shù)的調(diào)用信息。
[0031] 具體地,計算機(jī)設(shè)備將所述當(dāng)前調(diào)用信息與異常觸發(fā)條件進(jìn)行比對,以根據(jù)比對 結(jié)果,判斷所述當(dāng)前調(diào)用信息是否滿足該異常觸發(fā)條件。
[0032] 接著,在步驟S3中,當(dāng)所述當(dāng)前函數(shù)的當(dāng)前調(diào)用信息滿足異常觸發(fā)條件時,計算 機(jī)設(shè)備觸發(fā)異常,以測試所述被測程序。
[0033] 具體地,當(dāng)所述當(dāng)前函數(shù)的當(dāng)前調(diào)用信息滿足異常觸發(fā)條件時,確定與所述當(dāng)前 調(diào)用信息相對應(yīng)的異常并執(zhí)行,以基于該異常所輸出的異常輸出信息來測試所述被測程 序。
[0034] 作為本發(fā)明的優(yōu)選實(shí)施例之一,根據(jù)本實(shí)施例的方法,步驟S2進(jìn)一步包括步驟 S21 (圖未示),步驟S3進(jìn)一步包括步驟S31 (圖未示)。
[0035] 在步驟S21中,計算機(jī)設(shè)備判斷所述異常觸發(fā)條件中是否包含所述當(dāng)前調(diào)用信 肩、Ο
[0036] 接著,在步驟S31中,計算機(jī)設(shè)備當(dāng)所述異常觸發(fā)條件中包含所述當(dāng)前調(diào)用信息 時,觸發(fā)異常,以測試所述被測程序。
[0037] 根據(jù)本發(fā)明的第一示例,計算機(jī)設(shè)備正在運(yùn)行被測程序ProA中的函數(shù) funcM,并且,計算機(jī)設(shè)備在步驟S1中獲得與當(dāng)前函數(shù)funcM對應(yīng)的棧序列包括 funcA - funcB - funcM,并將該棧序列作為與當(dāng)前函數(shù)funcM的當(dāng)前調(diào)用信息,其中,與被 測程序ProA對應(yīng)的異常觸發(fā)條件如下表1所示:
[0038]表 1
[0039]
【權(quán)利要求】
1. 一種用于對被測程序進(jìn)行異常測試的方法,其中,所述方法包括以下步驟: a獲取被測程序中正在運(yùn)行的當(dāng)前函數(shù)的當(dāng)前調(diào)用信息; b判斷所述當(dāng)前調(diào)用信息是否滿足異常觸發(fā)條件; c當(dāng)所述當(dāng)前函數(shù)的當(dāng)前調(diào)用信息滿足異常觸發(fā)條件時,觸發(fā)異常,以測試所述被測程 序。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述步驟b包括以下步驟: -判斷所述異常觸發(fā)條件中是否包含所述當(dāng)前調(diào)用信息; 其中,所述步驟c包括: -當(dāng)所述異常觸發(fā)條件中包含所述當(dāng)前調(diào)用信息時,觸發(fā)異常,以測試所述被測程序。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,所述方法在步驟b之前還包括以下步驟: -獲取與所述當(dāng)前函數(shù)對應(yīng)的異常觸發(fā)條件。
4.根據(jù)權(quán)利要求1至3中任一項所述的方法,其中,所述當(dāng)前調(diào)用信息基于被測程序執(zhí) 行時的棧序列所確定。
5.根據(jù)權(quán)利要求1至4中任一項所述的方法,其中,所述方法還包括以下步驟: m獲取所述被測程序中包含的各個函數(shù)的一項或多項調(diào)用信息; η基于所述各個函數(shù)的一項或多項調(diào)用信息來確定異常觸發(fā)條件。
6.根據(jù)權(quán)利要求5所述的方法,其中,所述步驟η包括以下步驟: -由所述各個函數(shù)的一項或多項調(diào)用信息中,選擇至少一項調(diào)用信息; -基于所述至少一項調(diào)用信息來生成異常觸發(fā)條件。
7.根據(jù)權(quán)利要求5或6所述的方法,其中,所述步驟m包括以下步驟: -對所述被測程序進(jìn)行反匯編,以得到所述被測程序基于匯編語言的中間文件; -基于所述中間文件,來確定所述被測程序中包含的各個函數(shù)及其對應(yīng)的一項或多項 調(diào)用信息。
8.根據(jù)權(quán)利要求5至7中任一項所述的方法,其中,所述方法還包括以下步驟: -根據(jù)與所述被測程序?qū)?yīng)的功能描述信息,確定該被測程序中的函數(shù)的各項調(diào)用信 息所對應(yīng)的功能信息。
9.根據(jù)權(quán)利要求1至8中任一項所述的方法,其中,所述方法還包括以下步驟: -輸出所觸發(fā)的異常的異常相關(guān)信息。
10.根據(jù)權(quán)利要求9所述的方法,其中,所述異常相關(guān)信息包括以下信息: -該異常所對應(yīng)的函數(shù)的調(diào)用信息; -該異常所對應(yīng)的返回信息; _該異常的標(biāo)識息。
11. 一種用于對被測程序進(jìn)行異常測試的測試裝置,其中,測試裝置包括: 第一獲取裝置,用于獲取被待測程序中正在運(yùn)行的當(dāng)前函數(shù)的當(dāng)前調(diào)用信息; 判斷裝置,用于判斷所述當(dāng)前調(diào)用信息是否滿足異常觸發(fā)條件; 觸發(fā)裝置,用于當(dāng)所述當(dāng)前函數(shù)的當(dāng)前調(diào)用信息滿足異常觸發(fā)條件時,觸發(fā)異常,以測 試所述被測程序。
12.根據(jù)權(quán)利要求11所述的測試裝置,其中,所述判斷裝置用于: -判斷所述異常觸發(fā)條件中是否包含所述當(dāng)前調(diào)用信息; 其中,所述觸發(fā)裝置用于: -當(dāng)所述異常觸發(fā)條件中包含所述當(dāng)前調(diào)用信息時,觸發(fā)異常,以測試所述被測程序。
13.根據(jù)權(quán)利要求11或12所述的測試裝置,其中,所述測試裝置還包括: 第二獲取裝置,用于獲取與所述當(dāng)前函數(shù)對應(yīng)的異常觸發(fā)條件。
14.根據(jù)權(quán)利要求11至13中任一項所述的測試裝置,其中,所述當(dāng)前調(diào)用信息基于被 測程序執(zhí)行時的棧序列所確定。
15.根據(jù)權(quán)利要求11至14中任一項所述的測試裝置,其中,所述測試裝置還包括: 第三獲取裝置,用于獲取所述被測程序中包含的各個函數(shù)的一項或多項調(diào)用信息; 第一確定裝置,用于基于所述各個函數(shù)的一項或多項調(diào)用信息來確定異常觸發(fā)條件。
16.根據(jù)權(quán)利要求15所述的測試裝置,其中,所述第一確定裝置包括: 選擇裝置,用于由所述各個函數(shù)的一項或多項調(diào)用信息中,選擇至少一項調(diào)用信息; 生成裝置,用于基于所述至少一項調(diào)用信息來生成異常觸發(fā)條件。
17.根據(jù)權(quán)利要求15或16所述的測試裝置,其中,所述第三獲取裝置包括: 反匯編裝置,用于對所述被測程序進(jìn)行反匯編,以得到所述被測程序基于匯編語言的 中間文件; 第二確定裝置,用于基于所述中間文件,來確定所述被測程序中包含的各個函數(shù)及其 對應(yīng)的一項或多項調(diào)用信息。
18.根據(jù)權(quán)利要求15至17中任一項所述的測試裝置,其中,所述測試裝置還包括: 功能確定裝置,用于根據(jù)與所述被測程序?qū)?yīng)的功能描述信息,確定該被測程序中的 函數(shù)的各項調(diào)用信息所對應(yīng)的功能信息。
19.根據(jù)權(quán)利要求11至18中任一項所述的測試裝置,其中,所述測試裝置還包括: 輸出裝置,用于輸出所觸發(fā)異常的異常相關(guān)信息。
20.根據(jù)權(quán)利要求19所述的測試裝置,其中,所述異常相關(guān)信息包括以下信息: -該異常所對應(yīng)的函數(shù)的調(diào)用信息; -該異常所對應(yīng)的返回信息; _該異常的標(biāo)識息。
【文檔編號】G06F11/36GK104142885SQ201310169526
【公開日】2014年11月12日 申請日期:2013年5月9日 優(yōu)先權(quán)日:2013年5月9日
【發(fā)明者】徐鵬, 郭江亮, 李陽, 萬東海, 吳年有, 蔡媛 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司