資料介紹
軟件(或軟件構(gòu)件)魯棒性是衡量軟件在異常輸入和應(yīng)力環(huán)境條件下保持正常工作能力的一種度量。魯棒性測(cè)試主要用于測(cè)試操作系統(tǒng)、應(yīng)用程序、COTS軟件、構(gòu)件及服務(wù)協(xié)議等軟件和協(xié)議的可靠性及健壯性。在操作系統(tǒng)和安全關(guān)鍵軟件等一些重要軟件的測(cè)試上尤為重要。對(duì)于系統(tǒng)魯棒性的評(píng)價(jià)一般有基于測(cè)量的方法和基于故障注入的方法,近年來(lái)提出了魯棒性基準(zhǔn)程序方法(Robustness Benchmarking)[1]。魯棒性基準(zhǔn)程序(Robustness Benchmark)由一組健壯性測(cè)試用例組成。
實(shí)施軟件魯棒性測(cè)試的目的是發(fā)現(xiàn)所測(cè)代碼的健壯性薄弱環(huán)節(jié),并予以消除或增強(qiáng)抵抗異常情況的能力。增強(qiáng)代碼健壯性的過(guò)程包括:(1)確定軟件的激發(fā)健壯性失效的異常值參數(shù),并進(jìn)行測(cè)試;(2)分析測(cè)試結(jié)果,找出失效原因;(3)寫(xiě)保護(hù)代碼屏蔽導(dǎo)致失效的異常值;(4)把保護(hù)代碼與軟件模塊相連接[3]。
1 Linux內(nèi)核函數(shù)測(cè)試
Linux操作系統(tǒng)體系結(jié)構(gòu)從底層到頂部的順序依次是:內(nèi)核(包含內(nèi)核函數(shù))、系統(tǒng)調(diào)用、內(nèi)建程序(操作系統(tǒng)的命令)。內(nèi)核函數(shù)是內(nèi)核代碼的組成部分,其調(diào)用程序直接運(yùn)行在內(nèi)核空間。內(nèi)核函數(shù)一旦出現(xiàn)異常,將立刻對(duì)整個(gè)操作系統(tǒng)產(chǎn)生影響。系統(tǒng)調(diào)用一般對(duì)內(nèi)核函數(shù)進(jìn)行封裝,以此作為內(nèi)核與用戶空間的接口。當(dāng)用戶程序使用系統(tǒng)調(diào)用時(shí)會(huì)轉(zhuǎn)到內(nèi)核空間,調(diào)用結(jié)束后又會(huì)返回用戶空間。內(nèi)核函數(shù)的測(cè)試結(jié)果一般分類為:函數(shù)錯(cuò)誤碼返回、異常、內(nèi)核掛起、工作負(fù)載夭折、工作負(fù)載結(jié)果不正確、工作負(fù)載完成[1]。
Linux內(nèi)核函數(shù)魯棒性測(cè)試的最終目的是要提高系統(tǒng)的健壯性,需要根據(jù)測(cè)試結(jié)果生成相應(yīng)的保護(hù)代碼。這方面的研究目前處于初期階段。
2 魯棒性維度分析
典型的魯棒性測(cè)試包括模塊化基準(zhǔn)測(cè)試和層次化測(cè)試兩種主要方法。模塊化基準(zhǔn)測(cè)試是對(duì)一個(gè)系統(tǒng)進(jìn)行分離測(cè)試。它把一個(gè)獨(dú)立的系統(tǒng)看作是一系列組件的集合,如文件系統(tǒng)、內(nèi)存系統(tǒng)、外部交互系統(tǒng)、鎖機(jī)制和多道程序運(yùn)作等,另外還通過(guò)一個(gè)監(jiān)視器程序來(lái)監(jiān)視和收集測(cè)試的結(jié)果。而層次化測(cè)試是通過(guò)定義一個(gè)清晰的交互層,使測(cè)試和對(duì)各種模塊進(jìn)行測(cè)試的執(zhí)行細(xì)節(jié)相分離。一些測(cè)試可以適用于所有模塊,而另一些可能只適合一個(gè)模塊子集。使用層次性結(jié)構(gòu)是分解系統(tǒng)的好方法。通過(guò)層次化來(lái)對(duì)操作系統(tǒng)進(jìn)行測(cè)試可以收到較好的效果[2]。
無(wú)論采用模塊化基準(zhǔn)測(cè)試還是層次化方法,最終都是對(duì)操作系統(tǒng)接口函數(shù)采用參數(shù)的組合測(cè)試。對(duì)魯棒性測(cè)試結(jié)果進(jìn)行分析的一種方法是使用維度(Dimensionality)模型。維度有兩種定義:(1)參數(shù)維度,它指的是模塊中參數(shù)的個(gè)數(shù),對(duì)于一個(gè)軟件模塊而言,參數(shù)維度被定義為其變量的個(gè)數(shù);(2)魯棒性失效維度,對(duì)于引起魯棒性失效的一組特殊參數(shù),那些確實(shí)引起失效的參數(shù)的個(gè)數(shù)被定義為魯棒性失效維數(shù)。
2.1 維度失效
維度失效分一維失效和多維失效。多維失效的參數(shù)一定都是符合條件的系統(tǒng)能夠識(shí)別的值。一維失效和多維失效所引發(fā)的原因不同,一維失效是參數(shù)非法,多維失效是參數(shù)組合非法(每個(gè)參數(shù)都是合法的)。當(dāng)一維失效用例被保護(hù)和屏蔽后,會(huì)不會(huì)跳轉(zhuǎn)為多維失效,關(guān)鍵是看其參數(shù)是否構(gòu)成組合關(guān)系。從對(duì)其參數(shù)的組合關(guān)系的判定上,可以判斷該失效用例是真維失效用例還是變維失效用例[3]。
基于低維度優(yōu)先的維度模型中失效維度不可能超過(guò)參數(shù)維度??赡軐儆谝痪S失效的某個(gè)失效,同時(shí)也可能屬于高維失效。對(duì)于這種情況,一般把這個(gè)失效作為低維失效來(lái)對(duì)待。同時(shí)激發(fā)軟件魯棒性失效所需考慮的最少因素取決于魯棒性失效維數(shù),當(dāng)參數(shù)維度為失效維度時(shí),測(cè)試結(jié)果的觀察最為直觀;當(dāng)參數(shù)維度大于失效維度,測(cè)試結(jié)果的觀察就不太直觀了。失效維度也可以通過(guò)觀察魯棒性測(cè)試的響應(yīng)模式得到。
2.2 失效狀態(tài)分析
維度失效狀態(tài)分為三類。(1)真維失效指狀態(tài)失效條件被屏蔽后,測(cè)試用例跳轉(zhuǎn)到正常狀態(tài);(2)同維失效指狀態(tài)失效條件被屏蔽后,失效維度保持不變;(3)變維失效指相同條件下產(chǎn)生失效維度升高。由于基于低維度優(yōu)先原則,所以由高維度向低維度的失效躍遷跳變不可能發(fā)生[3]。魯棒性測(cè)試用例的失效維度狀態(tài)轉(zhuǎn)變?nèi)鐖D1所示。

現(xiàn)以Linux系統(tǒng)函數(shù)read(fd, buf,count)為實(shí)例進(jìn)行分析,說(shuō)明上述不同失效維度之間的轉(zhuǎn)變問(wèn)題。函數(shù)的三個(gè)參數(shù)取值如表1所示。

假設(shè)當(dāng)參數(shù)fd取值errno file,buf取值 Null時(shí),均會(huì)產(chǎn)生一維失效。當(dāng)fd取合法的值,并且buf分配空間小于count時(shí)產(chǎn)生一個(gè)二維失效。此時(shí),對(duì)參數(shù)fd取值empty file進(jìn)行保護(hù)屏蔽,則一些測(cè)試用例將會(huì)通過(guò)測(cè)試,如read(empty file,8,1);而另一些用例則維持一維失效不變,如read(empty file,Null,1024);還有一些用例將轉(zhuǎn)化為多維(維度≥2)失效,如read(empty file,1,8)。
實(shí)施軟件魯棒性測(cè)試的目的是發(fā)現(xiàn)所測(cè)代碼的健壯性薄弱環(huán)節(jié),并予以消除或增強(qiáng)抵抗異常情況的能力。增強(qiáng)代碼健壯性的過(guò)程包括:(1)確定軟件的激發(fā)健壯性失效的異常值參數(shù),并進(jìn)行測(cè)試;(2)分析測(cè)試結(jié)果,找出失效原因;(3)寫(xiě)保護(hù)代碼屏蔽導(dǎo)致失效的異常值;(4)把保護(hù)代碼與軟件模塊相連接[3]。
1 Linux內(nèi)核函數(shù)測(cè)試
Linux操作系統(tǒng)體系結(jié)構(gòu)從底層到頂部的順序依次是:內(nèi)核(包含內(nèi)核函數(shù))、系統(tǒng)調(diào)用、內(nèi)建程序(操作系統(tǒng)的命令)。內(nèi)核函數(shù)是內(nèi)核代碼的組成部分,其調(diào)用程序直接運(yùn)行在內(nèi)核空間。內(nèi)核函數(shù)一旦出現(xiàn)異常,將立刻對(duì)整個(gè)操作系統(tǒng)產(chǎn)生影響。系統(tǒng)調(diào)用一般對(duì)內(nèi)核函數(shù)進(jìn)行封裝,以此作為內(nèi)核與用戶空間的接口。當(dāng)用戶程序使用系統(tǒng)調(diào)用時(shí)會(huì)轉(zhuǎn)到內(nèi)核空間,調(diào)用結(jié)束后又會(huì)返回用戶空間。內(nèi)核函數(shù)的測(cè)試結(jié)果一般分類為:函數(shù)錯(cuò)誤碼返回、異常、內(nèi)核掛起、工作負(fù)載夭折、工作負(fù)載結(jié)果不正確、工作負(fù)載完成[1]。
Linux內(nèi)核函數(shù)魯棒性測(cè)試的最終目的是要提高系統(tǒng)的健壯性,需要根據(jù)測(cè)試結(jié)果生成相應(yīng)的保護(hù)代碼。這方面的研究目前處于初期階段。
2 魯棒性維度分析
典型的魯棒性測(cè)試包括模塊化基準(zhǔn)測(cè)試和層次化測(cè)試兩種主要方法。模塊化基準(zhǔn)測(cè)試是對(duì)一個(gè)系統(tǒng)進(jìn)行分離測(cè)試。它把一個(gè)獨(dú)立的系統(tǒng)看作是一系列組件的集合,如文件系統(tǒng)、內(nèi)存系統(tǒng)、外部交互系統(tǒng)、鎖機(jī)制和多道程序運(yùn)作等,另外還通過(guò)一個(gè)監(jiān)視器程序來(lái)監(jiān)視和收集測(cè)試的結(jié)果。而層次化測(cè)試是通過(guò)定義一個(gè)清晰的交互層,使測(cè)試和對(duì)各種模塊進(jìn)行測(cè)試的執(zhí)行細(xì)節(jié)相分離。一些測(cè)試可以適用于所有模塊,而另一些可能只適合一個(gè)模塊子集。使用層次性結(jié)構(gòu)是分解系統(tǒng)的好方法。通過(guò)層次化來(lái)對(duì)操作系統(tǒng)進(jìn)行測(cè)試可以收到較好的效果[2]。
無(wú)論采用模塊化基準(zhǔn)測(cè)試還是層次化方法,最終都是對(duì)操作系統(tǒng)接口函數(shù)采用參數(shù)的組合測(cè)試。對(duì)魯棒性測(cè)試結(jié)果進(jìn)行分析的一種方法是使用維度(Dimensionality)模型。維度有兩種定義:(1)參數(shù)維度,它指的是模塊中參數(shù)的個(gè)數(shù),對(duì)于一個(gè)軟件模塊而言,參數(shù)維度被定義為其變量的個(gè)數(shù);(2)魯棒性失效維度,對(duì)于引起魯棒性失效的一組特殊參數(shù),那些確實(shí)引起失效的參數(shù)的個(gè)數(shù)被定義為魯棒性失效維數(shù)。
2.1 維度失效
維度失效分一維失效和多維失效。多維失效的參數(shù)一定都是符合條件的系統(tǒng)能夠識(shí)別的值。一維失效和多維失效所引發(fā)的原因不同,一維失效是參數(shù)非法,多維失效是參數(shù)組合非法(每個(gè)參數(shù)都是合法的)。當(dāng)一維失效用例被保護(hù)和屏蔽后,會(huì)不會(huì)跳轉(zhuǎn)為多維失效,關(guān)鍵是看其參數(shù)是否構(gòu)成組合關(guān)系。從對(duì)其參數(shù)的組合關(guān)系的判定上,可以判斷該失效用例是真維失效用例還是變維失效用例[3]。
基于低維度優(yōu)先的維度模型中失效維度不可能超過(guò)參數(shù)維度??赡軐儆谝痪S失效的某個(gè)失效,同時(shí)也可能屬于高維失效。對(duì)于這種情況,一般把這個(gè)失效作為低維失效來(lái)對(duì)待。同時(shí)激發(fā)軟件魯棒性失效所需考慮的最少因素取決于魯棒性失效維數(shù),當(dāng)參數(shù)維度為失效維度時(shí),測(cè)試結(jié)果的觀察最為直觀;當(dāng)參數(shù)維度大于失效維度,測(cè)試結(jié)果的觀察就不太直觀了。失效維度也可以通過(guò)觀察魯棒性測(cè)試的響應(yīng)模式得到。
2.2 失效狀態(tài)分析
維度失效狀態(tài)分為三類。(1)真維失效指狀態(tài)失效條件被屏蔽后,測(cè)試用例跳轉(zhuǎn)到正常狀態(tài);(2)同維失效指狀態(tài)失效條件被屏蔽后,失效維度保持不變;(3)變維失效指相同條件下產(chǎn)生失效維度升高。由于基于低維度優(yōu)先原則,所以由高維度向低維度的失效躍遷跳變不可能發(fā)生[3]。魯棒性測(cè)試用例的失效維度狀態(tài)轉(zhuǎn)變?nèi)鐖D1所示。

現(xiàn)以Linux系統(tǒng)函數(shù)read(fd, buf,count)為實(shí)例進(jìn)行分析,說(shuō)明上述不同失效維度之間的轉(zhuǎn)變問(wèn)題。函數(shù)的三個(gè)參數(shù)取值如表1所示。

假設(shè)當(dāng)參數(shù)fd取值errno file,buf取值 Null時(shí),均會(huì)產(chǎn)生一維失效。當(dāng)fd取合法的值,并且buf分配空間小于count時(shí)產(chǎn)生一個(gè)二維失效。此時(shí),對(duì)參數(shù)fd取值empty file進(jìn)行保護(hù)屏蔽,則一些測(cè)試用例將會(huì)通過(guò)測(cè)試,如read(empty file,8,1);而另一些用例則維持一維失效不變,如read(empty file,Null,1024);還有一些用例將轉(zhuǎn)化為多維(維度≥2)失效,如read(empty file,1,8)。
LINUX內(nèi)核
加入交流群
掃碼添加小助手
加入工程師交流群
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 含風(fēng)電并網(wǎng)系統(tǒng)的魯棒區(qū)間優(yōu)化調(diào)度模型 11次下載
- 開(kāi)源軟件關(guān)鍵開(kāi)發(fā)者類型及協(xié)作網(wǎng)絡(luò)魯棒性綜述 4次下載
- 一種針對(duì)魯棒水印問(wèn)題的偽造邊信息攻擊手段 2次下載
- 一種可消除噪聲數(shù)據(jù)影響的魯棒SVM算法 12次下載
- Linux內(nèi)核GPIO操作函數(shù)的詳解分析 28次下載
- 使用光照魯棒實(shí)現(xiàn)圖像匹配的方法詳細(xì)概述 7次下載
- 魯棒PID控制器設(shè)計(jì)和仿真研究分析資料說(shuō)明 14次下載
- 魯棒優(yōu)化的風(fēng)儲(chǔ)聯(lián)合配置 2次下載
- 電力系統(tǒng)的魯棒性評(píng)估 6次下載
- 穩(wěn)定性與魯棒性的理論基礎(chǔ) 0次下載
- 基于系統(tǒng)辨識(shí)的神經(jīng)網(wǎng)絡(luò)魯棒性研究
- 種提高數(shù)字水印魯棒性的算法研究
- 魯棒自適應(yīng)控制綜述A survey of robust ad
- 提高加熱爐溫度控制魯棒性的研究
- 使用頻域LSB水印算法的魯棒性分析
- Linux內(nèi)核自解壓過(guò)程分析 2k次閱讀
- 基于魯棒神經(jīng)架構(gòu)的設(shè)計(jì) 1k次閱讀
- 均勻B樣條采樣從LiDAR數(shù)據(jù)中快速且魯棒地估計(jì)地平面 1.2k次閱讀
- Linux內(nèi)核的安全性對(duì)Android的影響 2k次閱讀
- Linux內(nèi)核系統(tǒng)調(diào)用概述及實(shí)現(xiàn)原理 2.8k次閱讀
- Linux:QEMU調(diào)試內(nèi)核的步驟 3.8k次閱讀
- 嵌入式Linux內(nèi)核的驅(qū)動(dòng)程序開(kāi)發(fā)是怎樣的 1.9k次閱讀
- 通過(guò)聯(lián)鎖柵極驅(qū)動(dòng)器來(lái)提高三相逆變器的魯棒性 1.8k次閱讀
- Linux內(nèi)核與Android的關(guān)系 4.9k次閱讀
- 基于Linux2.6內(nèi)核的實(shí)時(shí)性增強(qiáng)方案設(shè)計(jì) 1.2k次閱讀
- Linux內(nèi)核地址映射模型與Linux內(nèi)核高端內(nèi)存詳解 3.8k次閱讀
- 魯棒性和穩(wěn)定性的區(qū)別 24.8w次閱讀
- 魯棒性是什么意思_Robust為什么翻譯成魯棒性 13.1w次閱讀
- 基于Android的Linux內(nèi)核的電源管理:概述 1.1k次閱讀
- 影響電路魯棒性的設(shè)計(jì)因素思考 4.7k次閱讀
下載排行
本周
- 1冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 2安川A1000變頻器中文版說(shuō)明書(shū)
- 20.16 MB | 3次下載 | 3 積分
- 3直流電路的組成和基本定律
- 1.67 MB | 2次下載 | 免費(fèi)
- 4丹佛斯2800系列變頻器說(shuō)明書(shū)
- 8.00 MB | 1次下載 | 5 積分
- 5PC8011同步開(kāi)關(guān)型降壓3.5A單節(jié)鋰電池充電管理電路技術(shù)手冊(cè)
- 0.74 MB | 1次下載 | 免費(fèi)
- 6ES7243E+ES8311音頻錄制與播放電路資料
- 0.06 MB | 1次下載 | 5 積分
- 7SDM02 激光測(cè)距模塊產(chǎn)品手冊(cè)
- 0.43 MB | 1次下載 | 免費(fèi)
- 8SDFM 激光測(cè)距模塊模組手冊(cè)
- 0.54 MB | 1次下載 | 免費(fèi)
本月
- 1CH341編程器軟件NeoProgrammer_2.2.0.10
- 20.47 MB | 170次下載 | 1 積分
- 22025智能家居傳感器市場(chǎng)分析及創(chuàng)新應(yīng)用
- 3.11 MB | 43次下載 | 免費(fèi)
- 3RV1126B系列開(kāi)發(fā)板產(chǎn)品資料
- 4.19 MB | 18次下載 | 免費(fèi)
- 4CH341編程軟件下載
- 2.50 MB | 16次下載 | 5 積分
- 5全志系列-米爾基于T153核心板開(kāi)發(fā)板 四核異構(gòu)、3路千兆網(wǎng),賦能多元化工業(yè)場(chǎng)景
- 3.05 MB | 12次下載 | 免費(fèi)
- 6【開(kāi)源】60余套STM32單片機(jī)、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項(xiàng)目案例及入門學(xué)習(xí)資源包
- 10.55 MB | 8次下載 | 免費(fèi)
- 7冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 8特斯拉MODEL S車載充電機(jī)主電路回路原理圖
- 0.81 MB | 4次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191448次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183356次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81604次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73824次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問(wèn)
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論