欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種模糊測試的測試用例生成方法及裝置制造方法

文檔序號:6491918閱讀:210來源:國知局
一種模糊測試的測試用例生成方法及裝置制造方法
【專利摘要】本發(fā)明提供了一種模糊測試的測試用例生成方法和裝置,該方法包括:根據被測系統(tǒng)的輸入字段的合法內容,確定該輸入字段的文法結構,所述輸入字段的文法結構包括該字段中的特殊字符及其位置;根據設定的生成方法生成異常用例,并確定所生成的異常用例的文法結構,所述異常用例的文法結構包括該異常用例中的特殊字符及其位置;比較所述異常用例的文法結構和所述輸入字段的文法結構;如果所述異常用例的文法結構和所述輸入字段的文法結構中有至少一個特殊字符的位置相同,則將所述異常用例用作所述被測系統(tǒng)的測試用例。采用本發(fā)明,可以使模糊測試的測試用例與被測系統(tǒng)的輸入數據具有更高的相似性,從而實現更高效率和更全面的安全測試。
【專利說明】一種模糊測試的測試用例生成方法及裝置
【技術領域】
[0001]本發(fā)明涉及軟件安全測試【技術領域】,特別涉及一種模糊測試的測試用例生成方法
及裝置。
【背景技術】
[0002]黑盒(Black-box)測試為一種常用的軟件安全測試方法,其測試不依賴于被測軟件程序的源代碼,并總是能檢測出被測試人員所忽略的安全漏洞,因而在軟件安全測試中獲得了廣泛的應用。
[0003]模糊測試(fuzz testing)是在九十年代出現的一種黑盒測試技術,該技術構造一些隨機或半隨機的數據(稱為fuzz)作為被測試軟件的輸入,并監(jiān)測被測試軟件的響應和/或狀態(tài),以確定在被測軟件中是否存在安全漏洞。作為一種黑盒測試工具,模糊測試通常用于大型軟件開發(fā)項目,其優(yōu)勢在于:進行測試的成本相對較低,并且完全可以自動實現;并且,模糊測試經常能找出比較嚴重、且可被攻擊者加以利用的安全漏洞。
[0004]由于網絡和通信技術的快速發(fā)展和廣泛使用,軟件安全測試領域當前的一個重要課題是對通信協(xié)議、工控協(xié)議等協(xié)議實現進行安全測試。在協(xié)議實現中造成安全漏洞的重要原因之一是對輸入數據的異常處理,由于異常處理所導致的安全問題例如包括緩沖區(qū)溢出攻擊、格式化字符串攻擊以及代碼注入攻擊等。
[0005]針對協(xié)議實現的模糊測試通常是基于字符的,即使被測協(xié)議的某些輸入字段是基于二進制比特流的,也可以將該二進制比特流轉換為字符形式的數據流進行測試,因此,向被測協(xié)議中輸入的測試用例通常為隨機的或半隨機的字符串。由于該字符串和符合協(xié)議規(guī)范的合法內容差別較大,被測協(xié)議無法對其正確解析,或可能檢查出其為非法輸入,從而拒絕該測試用例。因此,采用這種測試用例進行模糊測試不僅測試效率低,并且很難探測到被測協(xié)議內部的深層的安全漏洞。
[0006]美國專利申請US20090164975A1中提出了一種模糊測試方法。考慮到被測系統(tǒng)的某些輸入數據經過特定方式的編碼,例如這部分輸入數據可能經Base64編碼或前向糾錯編碼(FEC),經隨機化(fuzz)后的這部分輸入數據將可能無法由被測系統(tǒng)解碼,即使可以被解碼,解碼后的數據也可能會丟失原有的格式或無法被解析。為此,該專利申請中的方法包括:接收由被測系統(tǒng)處理的格式化數據,確定該格式化數據所采用的編碼方式并選擇其中的部分數據以進行隨機化,根據所述編碼方法確定相應的解碼器對選擇的數據進行解碼,對解碼后的數據進行隨機化,根據所述編碼方法確定相應的編碼器對隨機化后的數據進行編碼,使用編碼后的隨機化數據對被測系統(tǒng)進行測試。該方法雖然考慮了被測系統(tǒng)的某些輸入數據的特定編碼方式,但經隨機化后的輸入數據仍然可能在格式上和正常的輸入數據有較大的差別,因而同樣會面臨被被測系統(tǒng)拒絕的問題。

【發(fā)明內容】

[0007]針對上述問題,為了使模糊測試的測試用例與被測系統(tǒng)的輸入數據具有更高的相似性,本發(fā)明實施例提出了一種模糊測試的測試用例生成方法及裝置。
[0008]根據本發(fā)明實施例的模糊測試的測試用例生成方法,包括:
[0009]根據被測系統(tǒng)的輸入字段的合法內容,確定該輸入字段的文法結構,所述輸入字段的文法結構包括該字段中的特殊字符及其位置;
[0010]根據設定的生成方法生成異常用例,并確定所生成的異常用例的文法結構,所述異常用例的文法結構包括該異常用例中的特殊字符及其位置;
[0011]比較所述異常用例的文法結構和所述輸入字段的文法結構;
[0012]如果所述異常用例的文法結構和所述輸入字段的文法結構中有至少一個特殊字符的位置相同,則將所述異常用例用作所述被測系統(tǒng)的測試用例。
[0013]根據本發(fā)明實施例的一種模糊測試的測試用例生成裝置,包括:
[0014]輸入字段文法結構確定單元,用于根據被測系統(tǒng)的輸入字段的合法內容,確定該輸入字段的文法結構,所述輸入字段的文法結構包括該字段中的特殊字符及其位置;
[0015]異常用例生成及文法結構確定單元,用于根據設定的生成方法生成異常用例,并確定所生成的異常用例的文法結構,所述異常用例的文法結構包括該異常用例中的特殊字符及其位置;
[0016]比較單元,用于比較所述異常用例的文法結構和所述輸入字段的文法結構;
[0017]篩選單元,用于當所述異常用例的文法結構和所述輸入字段的文法結構中有至少一個特殊字符的位置相同時,則將所述異常用例用作所述被測系統(tǒng)的測試用例。
[0018]在上述本發(fā)明實施例提供的方法和裝置中,所選取的測試用例與輸入字段的合法內容中有至少一個特殊字符的位置相同,而特殊字符及其位置可決定測試用例與輸入字段的文法結構,因此,所選取的測試用例與輸入字段的合法內容在格式上具有一定的相似度,這樣的測試用例輸入到被測系統(tǒng)中后通過被測系統(tǒng)的語法檢查或能夠被成功解析的可能性更大,從而可以減少測試用例被被測系統(tǒng)拒絕的情形,以實現更高效率和更全面的安全測試。
【專利附圖】

【附圖說明】
[0019]下面將通過參照附圖詳細描述本發(fā)明的示例性實施例,使本領域的普通技術人員更清楚本發(fā)明的上述及其它特征和優(yōu)點,附圖中:
[0020]圖1為根據本發(fā)明實施例的測試用例生成方法的流程示意圖;
[0021]圖2為本發(fā)明實施例中輸入字段的前綴樹自動機的示意圖;
[0022]圖3為本發(fā)明另一實施例中輸入字段的前綴樹自動機的示意圖;
[0023]圖4為本發(fā)明實施例中異常用例的前綴樹自動機的示意圖;
[0024]圖5為本發(fā)明另一實施例中異常用例的前綴樹自動機的示意圖;
[0025]圖6為根據本發(fā)明實施例的測試用例生成裝置的結構示意圖;
[0026]圖7為根據本發(fā)明實施例的測試用例生成設備的結構示意圖。
【具體實施方式】
[0027]下文將以明確易懂的方式通過對優(yōu)選實施例的說明并結合附圖來對本發(fā)明上述特性、技術特征、優(yōu)點及其實現方式予以進一步說明。[0028]本發(fā)明實施例提出了一種用于模糊測試的測試用例生成方法,如圖1所示,該方法包括如下步驟:
[0029]步驟101:根據被測系統(tǒng)的輸入字段的合法內容,確定該輸入字段的文法結構,所述輸入字段的文法結構包括該字段中的特殊字符及其位置。
[0030]在本發(fā)明實施例中,被測系統(tǒng)可以是應用程序、協(xié)議實現等使用計算機代碼編寫的軟件,在下文中統(tǒng)稱為被測系統(tǒng)。
[0031]根據具體的應用場景或協(xié)議規(guī)范,被測系統(tǒng)的輸入字段的合法內容需要符合一定的文法結構。所謂文法結構指的是該輸入字段的合法內容所應滿足的語法規(guī)則,在本發(fā)明實施例中,該語法規(guī)則中包括該字段中的特殊字符及其位置。在此,特殊字符可以為除小寫字母、大寫字母和數字以外的任何用于特殊用途的符號。隨被測系統(tǒng)所采用的操作系統(tǒng)、協(xié)議規(guī)范和/或編程語言的不同,其輸入字段的合法內容中的特殊字符會有所不同。例如,在C/C++編程語言中“%”代表格式字符串的開頭;在乘客和機場的數據交換標準(PADIS,Passenger and Airport Data InterchangeStandards)協(xié)議中,“ +,,代表數據項的分隔符。
[0032]步驟102:根據設定的生成方法生成異常用例,并確定所生成的異常用例的文法結構,所述異常用例的文法結構包括該異常用例中的特殊字符及其位置。
[0033]在本步驟中,可以采用設定的生成方法生成異常用例。例如最為簡單地,可以采用隨機的方式生成異常用例,還可以采用現有的方法對隨機生成的異常用例進一步進行過濾,以去除相似的異常用例,使得測試用例能夠更全面地覆蓋被測系統(tǒng)的輸入空間,從而提高模糊測試的效率?;蛘?,也可采用如上文所述的專利申請中的模糊測試方法等更為智能的方式來生成異常用例。在本發(fā)明的實施例中,對于異常用例的生成方法不作限制。
[0034]對于生成的異常用例,同樣對其文法結構進行分析,確定異常用例中的特殊字符及其位置。
[0035]步驟103:比較異常用例的文法結構和輸入字段的文法結構。
[0036]接下來,將異常用例和輸入字段中出現的各特殊字符及其位置進行比較。
[0037]步驟104:如果異常用例的文法結構和輸入字段的文法結構中有至少一個特殊字符的位置相同,則將所述異常用例用作所述被測系統(tǒng)的測試用例。
[0038]在進行比較后,如果存在異常用例的文法結構和輸入字段的文法結構中具有一個或多個特殊字符的位置相同,則將該異常用例作為模糊測試的測試用例。
[0039]在上述本發(fā)明實施例提供的方法中,所選取的測試用例與輸入字段的合法內容中有至少一個特殊字符的位置相同,而特殊字符及其位置可決定測試用例與輸入字段的文法結構,因此,所選取的測試用例與輸入字段的合法內容在格式上具有一定的相似度,這樣的測試用例輸入到被測系統(tǒng)中后通過被測系統(tǒng)的語法檢查或能夠被成功解析的可能性更大,從而可以減少測試用例被被測系統(tǒng)拒絕的情形,以實現更高效率和更全面的安全測試。
[0040]在根據本發(fā)明的另一實施例中,可以為測試用例設置優(yōu)先級,當測試用例與輸入字段的文法結構中相同的特殊字符的位置越多時,測試用例的優(yōu)先級越高。相同的特殊字符的位置越多,表明測試用例與輸入字段的合法內容之間的格式相似度越大,該測試用例被拒絕的可能性越小,因此,可以對該測試用例優(yōu)先進行測試。
[0041]在具體實施時,可以根據所需的優(yōu)先級,對應設置若干個閾值范圍。例如對應優(yōu)先級1、2、3,分別設置閾值范圍η〈Α、Α < η ( Β、η>Β,η表示相同的特殊字符的位置的數量,A和B為設定值;當測試用例與輸入字段的文法結構中相同的特殊字符的位置小于閾值A時,該測試用例的優(yōu)先級為1,并依次類推。優(yōu)先級越高的測試用例將在模糊測試中被優(yōu)先使用。
[0042]在根據本發(fā)明的又一個實施例中,如果用作測試用例的異常用例的文法結構與輸入字段的文法結構相比,至少一個特殊字符的位置且特殊字符本身均相同,則可為該測試用例設置更高的優(yōu)先級。具體地,例如可以首先根據測試用例與輸入字段的文法結構中相同的特殊字符的位置的數量設置主優(yōu)先級;然后,在同樣的主優(yōu)先級條件下,進一步根據相同的特殊字符的數量設置輔優(yōu)先級,相同的特殊字符的數量越多,輔優(yōu)先級越高。
[0043]此外,還可根據輸入字段的合法內容,確定該輸入字段中的短語及其取值;并且,確定所生成的異常用例中的短語及其取值;所述短語由特殊字符分隔,在此,所述短語可以是小寫字母、大寫字母或數字,也可以是由小寫字母、大寫字母和/或數字組成的字符串。
[0044]如果所生成的異常用例的文法結構和輸入字段的文法結構中有至少一個特殊字符的位置相同,也即該異常用例將被用作測試用例時,可以進一步比較該測試用例與輸入字段的合法內容中以所述至少一個特殊字符為前綴/后綴的短語的取值。如果以所述至少一個特殊字符為前綴/后綴的短語的取值相同,則可為該測試用例設置更高的優(yōu)先級,以在模糊測試中優(yōu)先使用。具體地,例如可以首先根據測試用例與輸入字段的文法結構中相同的特殊字符的位置的數量設置主優(yōu)先級;然后,在同樣的主優(yōu)先級條件下,進一步根據相同取值的短語的數量設置輔優(yōu)先級,相同取值的短語的數量越多,輔優(yōu)先級越高。
[0045]被測系統(tǒng)的的輸入字段一般包括兩類:固定長度的輸入字段和可變長度的輸入字段。其中,可變長度的輸入字段的長度可由長度字段或特定的結束符等來表征。特殊字符多出現在可變長度的輸入字段中,在被測系統(tǒng)不同的輸入數據中,可變長度的輸入字段的長度以及所包含的內容可能不同??勺冮L度的輸入字段所包含的所有可能的合法內容可由前綴樹自動機(PTA, Prefix Tree Automata)、確定性有限自動機(DFA, DeterministicFinite Automata)或正則表達式來表示。
[0046]例如,以PTA來表示一可變長度的輸入字段所包含的所有可能的合法內容,其中每個狀態(tài)(即節(jié)點)代表在該字段的合法內容中出現的短語,狀態(tài)間的轉移表示分隔短語的特殊字符。由PTA的初始狀態(tài)出發(fā),沿著PTA的一條狀態(tài)轉移路徑,到達一個最終狀態(tài)的輸出結果便是輸入字段的一種可能的合法內容。假定一可變長度的輸入字段可能有三種合法的輸入,分別為:“A/B/C”、“A/C”、“A/B/D”,那么為該輸入字段生成的PTA可表示為如圖2所示。
[0047]其中,節(jié)點“A”、“B”、“C”、“D”就是PTA的各個狀態(tài),表示在該字段的合法內容中可能出現的短語,箭頭所表示的狀態(tài)間的轉移為分隔短語的特殊字符。由PTA的初始狀態(tài)“A”出發(fā),沿著PTA的一條狀態(tài)轉移路徑,到達最終狀態(tài)“D”的輸出結果便是一種可能的合法輸入“A/B/D”,同理,也可得到其余兩種可能的合法輸入“A/B/C”、“A/C”。
[0048]再以C語言中的格式化字符串輸入字段為例,在此以該輸入字段三種可能的合法內容為例,分別為“%s%d”、“%.16x”,“%*x”,在這三種可能的合法內容中出現的特殊字符為
”和“*”,則對這些合法內容進行分析后獲得的該輸入字段的PTA可表示為圖3所
示,
[0049]其中,“O”節(jié)點表示該節(jié)點所代表的短語為空字符串。[0050]如前文所述,被測系統(tǒng)的輸入字段通??梢宰址问奖硎?。相應的,所生成的異常用例可以包括超長字符串、格式化字符串和代碼/腳本字符串其中的一種或多種,分別對應于緩沖區(qū)溢出攻擊、格式化字符串攻擊以及代碼注入攻擊等安全漏洞。
[0051]以下將以異常用例為超長字符串和格式化字符串為例來進一步對本發(fā)明的具體實施例進行說明。
[0052]首先,以超長字符串的異常用例為例:
[0053]超長字符串類的異常用例試圖用(遠遠超過)合法內容所允許的長度的字符串導致被測系統(tǒng)在處理輸入數據的過程中出現緩沖區(qū)溢出的異常,假定在本實施例中所生成的異常用例如下:
[0054]AAA …AAA/EEEE …EEEE
[0055]AAA …AAA/BBB …BBB/CCC …CCC
[0056]AAA …AAA0DDD …DDD
[0057]其中,“AAA…AAA”等表示由大寫字母‘A’等組成的很長的字符串(遠遠大于I個字符),那么對這些異常用例進行分析后獲得的異常用例的PTA可表示為圖4所示。
[0058]假定在本實施例中輸入字段的PTA如圖2所示,比較圖2與圖4可知,異常用例“AAA…AAA/BBB…BBB/CCO"CCC”與合法內容“A/B/D”中均包括三個短語,相鄰的兩個短語之間均由特殊字符“/”進行分隔,因此,異常用例“ΑΑΑ...AAA/BBB-.BBB/CCC-.CCC”與合法內容“A/B/D”的文法結構相同,即其中出現的特殊字符及其位置完全相同;同樣,異常用例“AAA…ΑΑΑ/ΕΕΕΕ...ΕΕΕΕ”與合法內容“A/C”的文法結構也相同。由于這些異常用例與對應的合法內容在格式上完全相`同,這樣的異常用例通過被測系統(tǒng)的語法檢查或能夠被成功解析的可能性更大,因而可以減少被被測系統(tǒng)拒絕的情形,因此,這些異常用例很容易被被測系統(tǒng)當做正常輸入數據。但“ΑΑΑ…ΑΑΑ”等超長字符串可能導致被測系統(tǒng)的輸入數據出現緩沖區(qū)溢出,使用這些異常用例作為測試用例對被測系統(tǒng)進行模糊測試,將可能發(fā)現被測系統(tǒng)中存在的緩沖區(qū)溢出漏洞,因而可以提高模糊安全測試的有效性,并且使測試過程更為高效。
[0059]由于測試用例“ AAA …ΑΑΑ/ΒΒΒ …BBB/CCC …CCC ” 和 “ AAA …AAA/EEEE...EEEE ” 與對應的合法內容中出現的特殊字符及其位置完全相同,在模糊測試過程中可以優(yōu)先使用這兩個測試用例進行測試。
[0060]異常用例“ΑΑΑ…AAA0DDD…DDD”與合法輸入數據“A/C”中出現的特殊字符不同,分別為和“/”,但其位置相同,也就是說,異常用例“ΑΑΑ…AAA0DDD…DDD”與合法內容“A/C”的文法結構相似,因此,該異常用例也可以作為測試用例用于模糊測試,但其優(yōu)先級可低于上述兩個測試用例“ΑΑΑ…ΑΑΑ/ΒΒΒ…BBB/CCC…CCC”和“ΑΑΑ…ΑΑΑ/ΕΕΕΕ…ΕΕΕΕ”。
[0061]接下來,以格式化字符串的異常用例為例:
[0062]格式化字符串類的異常用例的目的是通過異常的格式化字符串對未指定格式化字符串的輸入字段,如printf等函數的輸入數據進行安全測試。假定在本實施例中所生成的異常用例如下:
[0063]AAAA
[0064]“%s%d%s%d”
[0065]“%.4096d”[0066]
[0067]那么對這些異常用例進行分析后獲得的PTA可表示為圖5所示。
[0068]假定在本實施例中輸入字段的PTA如圖3所示,比較圖3與圖5可知,異常用例“%.4096d”與合法內容“%.16x”的文法結構相同,即其中出現的特殊字符及其位置完全相同,但在這兩者以特殊字符”為前綴的短語中,4096的取值遠遠大于16,這可能導致printf等函數分配的內存異常。因此,使用該異常用例作為測試用例對被測系統(tǒng)進行模糊測試,可以減少測試用例被被測系統(tǒng)拒絕的情形,并且可以發(fā)現被測系統(tǒng)中存在的格式化字符串漏洞,使得測試過程更為有效。
[0069]異常測試用例“%s%d%s%d”和“%##d”中的前綴(“%s%d”、“%* ”)與合法內容“%s%d”和“%*x”的文法結構相同,即其中出現的特殊字符及其位置相同,因此,異常測試用例“%s%d%s%d”和“%##d”也可以用于模糊測試。
[0070]異常用例“AAAA”的文法結構與所有可能的合法內容的文法結構沒有任何相似性,為了節(jié)省測試時間及測試資源,可以將其丟棄而不用于模糊測試。
[0071]以上對本發(fā)明方法的具體實施例進行了詳細說明。
[0072]本發(fā)明實施例還提出了一種用于模糊測試的測試用例生成裝置,如圖6所示,該裝置60可以利用軟件、硬件或軟硬件結合的方式來實現,具體可以包括:
[0073]輸入字段文法結構確定單元601,用于根據被測系統(tǒng)的輸入字段的合法內容,確定該輸入字段的文法結構,所述輸入字段的文法結構包括該字段中的特殊字符及其位置;
[0074]異常用例生成及文法結構確定單元602,用于根據設定的生成方法生成異常用例,并確定所生成的異常用例的文法結構,所述異常用例的文法結構包括該異常用例中的特殊字符及其位置;
[0075]比較單元603,用于比較異常用例的文法結構和輸入字段的文法結構;
[0076]篩選單元604,用于當異常用例的文法結構和輸入字段的文法結構中有至少一個特殊字符的位置相同時,將異常用例用作被測系統(tǒng)的測試用例。
[0077]在本發(fā)明裝置的一個具體實施例中,篩選單元604,可進一步用于為測試用例設置優(yōu)先級,其中,用作測試用例的異常用例的文法結構與輸入字段的文法結構相比,相同的特殊字符的位置越多時,測試用例的優(yōu)先級越高。
[0078]在本發(fā)明裝置的另一個實施例中,篩選單元604,還可用于當用作測試用例的異常用例與輸入字段的文法結構相比,至少一個特殊字符的位置且特殊字符本身均相同時,為該測試用例設置更高的優(yōu)先級。
[0079]在本發(fā)明裝置的又一個實施例中,輸入字段文法結構確定單元601,還可用于根據輸入字段的合法內容,確定該輸入字段中的短語及其取值,所述短語由輸入字段中的特殊字符分隔。
[0080]異常用例生成及文法結構確定單元602,還可用于確定所生成的異常用例中的短語及其取值,所述短語由異常用例中的特殊字符分隔。
[0081]比較單元603,還可用于當異常用例的文法結構和輸入字段的文法結構中有至少一個特殊字符的位置相同時,進一步比較異常用例與合法內容中以所述至少一個特殊字符為前綴/后綴的短語的取值。
[0082]篩選單元604,還可用于當以所述至少一個特殊字符為前綴/后綴的短語的取值相同時,為該測試用例設置更高的優(yōu)先級。
[0083]由于以上已對本發(fā)明方法的具體實施例進行了詳細說明,本發(fā)明裝置的具體實施例可以參照針對本發(fā)明方法的相應說明,在此不再贅述。
[0084]本發(fā)明實施例還提供了一種用于模糊測試的測試用例生成設備,如圖7所示,該設備可以由單獨的物理實體實現,或者作為用于模糊測試的任意物理實體的一部分。
[0085]如圖7所示,該用于模糊測試的測試用例生成設備70可以包括存儲器701和處理器702。其中,存儲器701可以用于存儲可執(zhí)行指令。處理器702可以用于根據存儲器701所存儲的可執(zhí)行指令,執(zhí)行以下步驟:
[0086]根據被測系統(tǒng)的輸入字段的合法內容,確定該輸入字段的文法結構,所述輸入字段的文法結構包括該字段中的特殊字符及其位置;
[0087]根據設定的生成方法生成異常用例,并確定所生成的異常用例的文法結構,所述異常用例的文法結構包括該異常用例中的特殊字符及其位置;
[0088]比較異常用例的文法結構和輸入字段的文法結構;
[0089]當異常用例的文法結構和輸入字段的文法結構中有至少一個特殊字符的位置相同時,將異常用例用作被測系統(tǒng)的測試用例。
[0090]進一步地,可為測試用例設置優(yōu)先級,其中,用作測試用例的異常用例的文法結構與輸入字段的文法結構相比,相同的特殊字符的位置越多時,測試用例的優(yōu)先級越高。
[0091]如果用作測試用例的異常用例的文法結構與輸入字段的文法結構相比,至少一個特殊字符的位置且特殊字符本身均相同,則可為該測試用例設置更高的優(yōu)先級。
[0092]此外,還可根據輸入字段的合法內容,確定該輸入字段中的短語及其取值,所述短語由輸入字段中的特殊字符分隔;以及,確定所生成的異常用例中的短語及其取值,所述短語由異常用例中的特殊字符分隔。當異常用例的文法結構和輸入字段的文法結構中有至少一個特殊字符的位置相同時,可進一步比較異常用例與合法內容中以所述至少一個特殊字符為前綴/后綴的短語的取值。當以所述至少一個特殊字符為前綴/后綴的短語的取值相同時,為該測試用例設置更高的優(yōu)先級。
[0093]本發(fā)明實施例還提供了一種機器可讀介質,其上存儲有可執(zhí)行指令,當該可執(zhí)行指令被執(zhí)行時,使得一機器執(zhí)行前述處理器702所執(zhí)行的步驟。具體地,可以提供配有存儲介質的系統(tǒng)或者裝置,在該存儲介質上存儲著實現上述實施例中任一實施例的功能的軟件程序代碼,且使該系統(tǒng)或者裝置的計算機(或CPU或MPU)讀出并執(zhí)行存儲在存儲介質中的程序代碼。
[0094]在這種情況下,從存儲介質讀取的程序代碼本身可實現上述實施例中任何一項實施例的功能,因此程序代碼和存儲程序代碼的介質構成了本發(fā)明的一部分。
[0095]用于提供程序代碼的機器可讀介質實施例包括軟盤、硬盤、磁光盤、光盤(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁帶、非易失性存儲卡和 ROM??蛇x擇地,可以由通信網絡從服務器計算機上下載程序代碼。
[0096]此外,應該清楚的是,不僅可以通過執(zhí)行計算機所讀出的程序代碼,而且可以通過基于程序代碼的指令使計算機上操作的操作系統(tǒng)等來完成部分或者全部的實際操作,從而實現上述實施例中任意一項實施例的功能。
[0097]此外,可以理解的是,將由存儲介質讀出的程序代碼寫到插入計算機內的擴展板中所設置的存儲器中或者寫到與計算機相連接的擴展單元中設置的存儲器中,隨后基于程序代碼的指令使安裝在擴展板或者擴展單元上的CPU等來執(zhí)行部分和全部實際操作,從而實現上述實施例中任一實施例的功能。
[0098]需要說明的是,在上述示意圖中并非所有的步驟和模塊都是必須的,可以根據實際的需要忽略某些步驟或模塊。各步驟的執(zhí)行順序不是固定的,可以根據需要進行調整。上述各實施例中描述的模塊結構可以是物理結構,也可以是邏輯結構,即,有些模塊可能由同一物理實體實現,或者,有些模塊可能分由多個物理實體實現,或者,可以由多個獨立設備中的某些部件共同實現。
[0099]上文通過附圖和實施例對本發(fā)明進行了詳細展示和說明,然而本發(fā)明不限于這些已揭示的實施例,本領域技術人員從中推導出來的其他方案也在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應當由所附的權利要求書來定義。
【權利要求】
1.一種模糊測試的測試用例生成方法,包括: 根據被測系統(tǒng)的輸入字段的合法內容,確定該輸入字段的文法結構,所述輸入字段的文法結構包括該字段中的特殊字符及其位置; 根據設定的生成方法生成異常用例,并確定所生成的異常用例的文法結構,所述異常用例的文法結構包括該異常用例中的特殊字符及其位置; 比較所述異常用例的文法結構和所述輸入字段的文法結構; 如果所述異常用例的文法結構和所述輸入字段的文法結構中有至少一個特殊字符的位置相同,則將所述異常用例用作所述被測系統(tǒng)的測試用例。
2.根據權利要求1所述的方法,其特征在于,還包括: 為所述測試用例設置優(yōu)先級,其中,用作所述測試用例的異常用例的文法結構與所述輸入字段的文法結構相比,相同的特殊字符的位置越多時,所述測試用例的優(yōu)先級越高。
3.根據權利要求2所述的方法,其特征在于,還包括: 如果用作所述測試用例的異常用例的文法結構與所述輸入字段的文法結構相比,至少一個特殊字符的位置且特殊字符本身均相同,則為該測試用例設置更高的優(yōu)先級。
4.根據權利要求2所述的方法,其特征在于,還包括: 根據所述輸入字段的合法內容,確定該輸入字段中的短語及其取值,所述短語由所述輸入字段中的特殊字符分隔;· 確定所生成的異常用例中的短語及其取值,所述短語由所述異常用例中的特殊字符分隔; 如果所述異常用例的文法結構和所述輸入字段的文法結構中有至少一個特殊字符的位置相同,則進一步比較所述異常用例與所述合法內容中以所述至少一個特殊字符為前綴/后綴的短語的取值; 如果以所述至少一個特殊字符為前綴/后綴的短語的取值相同,則為該測試用例設置更高的優(yōu)先級。
5.根據權利要求4所述的方法,其特征在于,所述文法結構和所述短語及其取值通過以下任一種方式進行描述: 前綴樹自動機、確定性有限自動機和正則表達式。
6.根據權利要求1至5任一所述的方法,其特征在于, 所述輸入字段為可變長度字段。
7.根據權利要求6所述的方法,其特征在于,所生成的異常用例包括以下的一種或多種: 超長字符串、格式化字符串和代碼/腳本字符串。
8.一種模糊測試的測試用例生成裝置,包括: 輸入字段文法結構確定單元,用于根據被測系統(tǒng)的輸入字段的合法內容,確定該輸入字段的文法結構,所述輸入字段的文法結構包括該字段中的特殊字符及其位置; 異常用例生成及文法結構確定單元,用于根據設定的生成方法生成異常用例,并確定所生成的異常用例的文法結構,所述異常用例的文法結構包括該異常用例中的特殊字符及其位置; 比較單元,用于比較所述異常用例的文法結構和所述輸入字段的文法結構;篩選單元,用于當所述異常用例的文法結構和所述輸入字段的文法結構中有至少一個特殊字符的位置相同時,則將所述異常用例用作所述被測系統(tǒng)的測試用例。
9.根據權利要求8所述的裝置,其特征在于, 所述篩選單元,進一步用于為所述測試用例設置優(yōu)先級,其中,用作所述測試用例的異常用例的文法結構與所述輸入字段的文法結構相比,相同的特殊字符的位置越多時,所述測試用例的優(yōu)先級越高。
10.根據權利要求9所述的裝置,其特征在于, 所述篩選單元,還用于當用作所述測試用例的異常用例的文法結構與所述輸入字段的文法結構相比,至少一個特殊字符的位置且特殊字符本身均相同時,為該測試用例設置更高的優(yōu)先級。
11.根據權利要求9所述的裝置,其特征在于, 所述輸入字段文法結構確定單元,還用于根據所述輸入字段的合法內容,確定該輸入字段中的短語及其取值,所述短語由所述輸入字段中的特殊字符分隔; 所述異常用例生成及文法結構確定單元,還用于確定所生成的異常用例中的短語及其取值,所述短語由所述異常用例中的特殊字符分隔; 所述比較單元,還用于當所述異常用例的文法結構和所述輸入字段的文法結構中有至少一個特殊字符的位置相同時,進一步比較所述異常用例與所述合法內容中以所述至少一個特殊字符為前綴/后綴的短語的取值; 所述篩選單元,還用于當以所述至少一個特殊字符為前綴/后綴的短語的取值相同時,為該測試用例設置更高的優(yōu)先級。
12.根據權利要求11所述的裝 置,其特征在于,所述文法結構和所述短語及其取值通過以下任一種方式進行描述: 前綴樹自動機、確定性有限自動機和正則表達式。
13.根據權利要求8至12任一所述的裝置,其特征在于, 所述輸入字段為可變長度字段。
14.根據權利要求13所述的裝置,其特征在于,所生成的異常用例包括以下的一種或多種: 超長字符串、格式化字符串和代碼/腳本字符串。
15.一種模糊測試的測試用例生成設備,包括: 存儲器,用于存儲可執(zhí)行指令; 處理器,用于根據所存儲的可執(zhí)行指令,執(zhí)行如權利要求1-7中的任意一個權利要求所述的方法。
16.—種機器可讀介質,其上存儲有可執(zhí)行指令,當所述可執(zhí)行指令被執(zhí)行時,使得機器執(zhí)行如權利要求1-7中的任意一個權利要求所述的方法。
【文檔編號】G06F11/36GK103853650SQ201210496983
【公開日】2014年6月11日 申請日期:2012年11月28日 優(yōu)先權日:2012年11月28日
【發(fā)明者】唐文 申請人:西門子公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
武宣县| 报价| 盱眙县| 门源| 龙岩市| 洪雅县| 元谋县| 盖州市| 兰西县| 来宾市| 邢台市| 苏尼特右旗| 苏尼特右旗| 梁山县| 湖北省| 兴安县| 松滋市| 宿迁市| 奉化市| 定边县| 罗山县| 盘锦市| 古田县| 沛县| 铁力市| 清水县| 晋江市| 碌曲县| 泰顺县| 泗阳县| 兴和县| 甘肃省| 雷波县| 通州区| 平山县| 重庆市| 云阳县| 阆中市| 田东县| 玉田县| 巴塘县|