999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于程序變異的故障注入及故障規則庫的設計

2010-11-07 08:19:50徐麗中國礦業大學計算機科學與技術學院221008
中國科技信息 2010年22期
關鍵詞:程序故障

徐麗 中國礦業大學計算機科學與技術學院 221008

基于程序變異的故障注入及故障規則庫的設計

徐麗 中國礦業大學計算機科學與技術學院 221008

1. 基于程序變異的軟件故障注入方法

軟件故障注入的方法有很多種,本節著重介紹利用插入的故障代碼違反程序中函數的滿足條件(前置條件、后置條件或其它),改變其狀態,迫使軟件出現故障,使程序偏移正常的控制流,從而達到引發異常,執行異常處理代碼的軟件故障注入方法。

1.1 基于斷言違背的軟件故障注入方法

對于違背語言規則或違背系統規則的隱式引發的異常,根據異常處理結構的抽取信息,對try塊中的每個語句可以采用基于斷言違背的軟件故障注入法進行故障注入。假設程序中有下列的語句:

int [ , ]a=new int [2][3]

該語句執行的前置條件是數組的下標的滿足條件,由于C#中默認的下標起始值為0,所以下標的范圍定義為0到下標值減去1,即我們對于上述定義的數組,可以取到的范圍為 int [0][0]-int [1][2]我們所采用的斷言違背的故障注入則有以下幾種可能來進行注入,從而引發所對應的異常。

在測試時只需改變數組下標的值,就可以改變注入的錯誤,從而引發不可達的異常,注入故障后即可進行異常機制的測試。

對于用戶自定義異常,根據抽取的異常處理結構信息,針對引發異常的條件則可以進行故障注入。分為兩種情況:一種是基于斷言違背的軟件故障注入方法,假設在程序的源代碼中有如下的一個語句:

if (0<=i && i

throw

ArrayIndexOutOfBoundsException;

則可以采用與上面類似的故障注入程序來進行。另一種是普通的故障注入方法,假設在程序的源代碼中有如下的一個語句:

if ( currValue == 0 )

throw new ZeroValueException();

則在進行故障注入時,可以直接對currValue賦值為0,即可引發ZeroValueException(),測試源程序不可達的異常代碼,增大測試的覆蓋面。

1.2 在條件中插入真值的軟件故障注入方法

從上面的例子中可以看出,基于斷言違背的軟件故障注入技術可以很好地仿真這類軟件故障。但如果在條件語句中涉及到系統調用,那么通過簡單的程序變異或斷言違背技術通常無法直接修改系統調用的返回結果。本文在設計實現時,擬采用在條件中插入真值法來注入故障,從而引發異常。假設有下列語句:

if (p=malloc(sizeof(int))= =NULL) throw OutOfMemoryException;

因為這個語句是一個系統函數,并且不能直接訪問它的源代碼。為了測試由該異常引發的異常處理代碼段,可以將上式條件語句轉化為如下形式:

if (p=malloc(sizeof(int))= =NULL||true ) throw OutOfMemoryException;

此方法擴大了if語句的條件判斷范圍,無論系統調用函數運行的結果如何,在并上條件為真的情況下,都將引發異常,執行相應的異常處理語句,達到測試異常機制的目的。

1.3 逆向設置的軟件故障注入方法

本節主要針對關系表達式和布爾表達式進行研究和討論,在原程序中做一個很少的語法改變即可得到一個變異程序。例如,一個大于號“>”可以改變為“≥”,可以測試到異常處理代碼;我們也可以在條件語句中改變操作數讓程序轉去執行異常處理代碼。假設有下列語句:

a>5,a+b<10;

我們可以根據逆向設置的方法,將此關系表達式改變如下:

a=5,a+b=10;

讓程序的代碼在語法上做一個很小的改動,從而引發預期的異常。

2.故障注入規則庫的設計與生成

本節特別有針對性的選擇了幾種常見的異常情況,對其進行可發生故障的分析,特別對可能發生的故障設計了故障注入規則庫,以確定原程序中的故障注入點以及故障注入的可選列表。

2.1 故障注入規則庫的設計

本小節主要針對常見的異常類型,例如:除數為0,數組邊界值越界,關系表達式的符號判斷條件等進行詳細分析和歸納,以具體的示例來設計故障注入規則庫,以解決故障注入的問題。

2.1.1 除數為0的示例

常見的異常類型中,除數為0是比較典型的,由于除數不能為0的原則,使得在這個判斷原則的基礎上,只要遇到除數為0,則引發除數為0的異常,使程序執行其所引發的異常語句。

2.1.2 If判斷條件示例

我們以If條件中的關系表達式為例,其示如例圖2所示:

圖1 除數異常示例圖

特別注意的是,判斷條件的故障注入的可選列表的設計,我們是基于簡單的程序變異,抽取出表達式符號后,根據斷言違背或逆向設置等條件列出可以引發故障的注入條件,從而引發故障。

2.1.3 數組越界的示例

關于數組的異常判斷,關鍵在于下標的邊界值是否越界,按照數組邊界值的定義,我們一般取兩種情況來引發數組的異常:取一個下標的上界;取一個下標的下界。由于C#語言的數組下標的起始值為0,所以,在規則庫的設計中,我們取下界為-1,上界為抽取出的數組的邊界值。從而確定了針對一維數組的故障注入的兩個可選擇的條件。

2.2 故障注入規則庫的生成與實現

我們根據第1節所介紹的幾種軟件故障注入方法,將相對應的異常程序分析整合,主要包括以下幾種異常處理的測試:

1)if的條件判斷所引發的異常

① || 關系表達式

②單一關系表達式(包括:= = , ! = ,> =, < =, >, <)

③布爾表達式(true、false)

2)除數為0所引發的異常

3)數組索引值越界

①一元數組下標范圍;②二元數組下標范圍

圖2 If判斷條件注入示例圖

4)調用系統函數所引發的異常

此測試用例的主要程序變異如下:

1)int[]a=new int[8];

a[4]=123; //數組邊界值示例

一元數組邊界值的范圍為a[0]—a[7],所以引發異常的邊界值越界主要有以下兩種選擇:

① a[-1]=123;

② a[8]=123

2)int nTheZero=10;

int nResult=100/nTheZero; //判斷除數為0示例

若要引發除數為0的異常,則要把變量nTheZero賦值0即可引發C#的標準異常類DivideByZeroException。

3)if(num= =99) //if的= =判斷條件(自定義異常)

throw new Exception();

在本測試用例中,自定義異常為,當num值恒等于99時,拋出自定義的異常,輸出“Game Over!”。

由于測試用例中num是一個隨機的值,所以恒等于99的幾率非常的小,我們改變“= =”的條件,以達到以滿足引發異常的條件,如:

① num != 99 ; ② num > = 99 ;③num < = 99 ; ④ num > 99 ; ⑤ num < 99 ;

4)if(n<0)

throw(new

ArgumentOutOfRangeException()); //if的<判斷條件

有以下幾種可選擇的注入條件:

①n = = 0 ; ② n > = 0 ; ③ n < = 0 ; ④ num > 0 ; ⑤ n ! = 0 ;

任意選擇其中的一種條件,引發基本異常類ArgumentOutOfRangeException,從而執行相對應的異常處理語句,達到測試異常處理機制的目的。

10.3969/j.issn.1001-8972.2010.22.052

猜你喜歡
程序故障
故障一點通
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
奔馳R320車ABS、ESP故障燈異常點亮
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
故障一點通
故障一點通
故障一點通
主站蜘蛛池模板: 国产传媒一区二区三区四区五区| 午夜视频免费试看| 日韩无码视频网站| 在线观看亚洲成人| 亚洲三级a| 亚洲精品爱草草视频在线| 波多野结衣久久高清免费| av无码一区二区三区在线| 真实国产乱子伦高清| 26uuu国产精品视频| 日本a级免费| 黄色网站在线观看无码| 她的性爱视频| 亚洲中文字幕97久久精品少妇| 国产精品黄色片| 亚洲国产综合第一精品小说| 亚洲男人的天堂久久精品| 国产特级毛片aaaaaaa高清| 97在线国产视频| 久热这里只有精品6| 亚洲精品卡2卡3卡4卡5卡区| 中文字幕va| 大学生久久香蕉国产线观看 | 无码AV日韩一二三区| 成人字幕网视频在线观看| 久久91精品牛牛| 日韩天堂网| 国产成人一级| 国产精品成人一区二区不卡| 精品人妻AV区| 亚洲视频免| 国产精品毛片一区视频播| 91av国产在线| 欧美日韩国产成人在线观看| 免费在线播放毛片| 国产一区成人| 欧美狠狠干| 国产女主播一区| 女同国产精品一区二区| 欧美日韩一区二区三区四区在线观看 | 欧美午夜一区| 国产精女同一区二区三区久| 免费jjzz在在线播放国产| 亚洲熟妇AV日韩熟妇在线| 国产欧美在线观看一区| 8090成人午夜精品| 成人午夜久久| 久久无码av一区二区三区| 97se综合| 最新精品久久精品| 欧美亚洲日韩中文| 超清人妻系列无码专区| 日韩无码精品人妻| 香蕉伊思人视频| 青青久视频| 久久无码av三级| 天天综合网色中文字幕| 99精品视频播放| 国产99精品视频| 91口爆吞精国产对白第三集| 欧美激情视频一区二区三区免费| 一级毛片免费不卡在线视频| 欧美日韩中文国产| 日韩欧美国产三级| 日韩人妻少妇一区二区| 欧美h在线观看| 一级毛片无毒不卡直接观看| 精品国产自| 国产网友愉拍精品视频| 国产色伊人| 女人天堂av免费| 亚洲乱强伦| 九月婷婷亚洲综合在线| 欧美成人综合在线| 伊人查蕉在线观看国产精品| 成人免费一级片| 18禁黄无遮挡网站| 露脸国产精品自产在线播| 久久久久久久97| 最新国产在线| 久久久久青草大香线综合精品| 亚洲aⅴ天堂|