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