www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 在簡(jiǎn)要介紹軟件魯棒性基準(zhǔn)程序測(cè)試方法的基礎(chǔ)上,以Linux操作系統(tǒng)內(nèi)核函數(shù)為例,通過(guò)對(duì)用于分析測(cè)試結(jié)果的維度模型進(jìn)行分析,提出了軟件魯棒性的關(guān)聯(lián)測(cè)試方法,并給出了相應(yīng)的測(cè)試實(shí)例及測(cè)試結(jié)果,為L(zhǎng)inux操作系統(tǒng)內(nèi)核函數(shù)魯棒性測(cè)試提供了更為直觀、有效的方法。

軟件(或軟件構(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)寫保護(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)。

3 魯棒性關(guān)聯(lián)測(cè)試

當(dāng)參數(shù)維度等于失效維度時(shí),很容易看出是哪些參數(shù)失效。而測(cè)試時(shí)維度的跳變,會(huì)給魯棒性測(cè)試的分析帶來(lái)困難,會(huì)影響測(cè)試覆蓋率的問(wèn)題,還牽扯到測(cè)試用例的增加[4]。在魯棒性測(cè)試中可以利用參數(shù)的關(guān)聯(lián)性進(jìn)行測(cè)試。將傳統(tǒng)的組合測(cè)試法分為兩步:關(guān)聯(lián)性測(cè)試和非關(guān)聯(lián)性測(cè)試。魯棒性關(guān)聯(lián)測(cè)試的流程如圖2所示。

在進(jìn)行魯棒性關(guān)聯(lián)測(cè)試時(shí),首先進(jìn)行參數(shù)關(guān)聯(lián)性測(cè)試,先把待測(cè)函數(shù)中有互相作用的參數(shù)進(jìn)行包裝,在測(cè)試中人為構(gòu)造參數(shù)維度等于失效維度的情況。例如,函數(shù)f(A,B,C,D,E)中,參數(shù)A、B、C有關(guān)聯(lián)。首先將參數(shù)E和參數(shù)F取合法輸入值,然后測(cè)試參數(shù)A、B、C的所有組合。若有失效,必定是一維失效或者三維失效。由于參數(shù)維度等于失效維度,通過(guò)分析測(cè)試結(jié)果就可以寫出保護(hù)代碼。在對(duì)函數(shù)進(jìn)行了充分的關(guān)聯(lián)測(cè)試后,再進(jìn)行參數(shù)非關(guān)聯(lián)性測(cè)試。取出上例中參數(shù)A、B、C的一個(gè)合法組合,對(duì)參數(shù)E和參數(shù)F的所有用例分別進(jìn)行測(cè)試。若有失效,必定是一維失效,這樣也很容易分析測(cè)試結(jié)果和寫出保護(hù)代碼。

通過(guò)對(duì)函數(shù)的參數(shù)關(guān)聯(lián)性進(jìn)行測(cè)試可得出結(jié)論,只有當(dāng)函數(shù)所有參數(shù)都發(fā)生關(guān)聯(lián)作用時(shí),魯棒性關(guān)聯(lián)測(cè)試所需用例的個(gè)數(shù)才會(huì)等于傳統(tǒng)組合測(cè)試所需的用例個(gè)數(shù)[5]。所以,在覆蓋率不變的情況下,若采用魯棒性關(guān)聯(lián)測(cè)試法,可以有效減少測(cè)試用例個(gè)數(shù),并且還能夠消除維度失效跳變帶來(lái)的影響。

4 測(cè)試實(shí)例

實(shí)際測(cè)試中測(cè)試環(huán)境為DELL的DIMENSION 4700,操作系統(tǒng)為Redhat Linux 8.0,系統(tǒng)內(nèi)核為2.2.24。實(shí)測(cè)以read()函數(shù)參數(shù)組合表為例,其表中組合測(cè)試用例的個(gè)數(shù)為5×5×5=125個(gè)。進(jìn)行關(guān)聯(lián)測(cè)試時(shí)先對(duì)其參數(shù)的關(guān)聯(lián)性進(jìn)行分析,通過(guò)分析可以得知它的三個(gè)參數(shù)中只有buf和count有關(guān)聯(lián)。

實(shí)測(cè)中首先進(jìn)行關(guān)聯(lián)性測(cè)試,對(duì)read()函數(shù)的參數(shù)fd取正常值,測(cè)試參數(shù)buf和count的所有組合,測(cè)試結(jié)果如表2所示。共使用了25個(gè)測(cè)試用例。

在對(duì)上述測(cè)試結(jié)果進(jìn)行屏蔽失效后,轉(zhuǎn)入第二步,對(duì)參數(shù)fd進(jìn)行非關(guān)聯(lián)性測(cè)試,即針對(duì)fd與(buf+count)的組合進(jìn)行測(cè)試。對(duì)buf與count的組合取合法值后,針對(duì)參數(shù)fd的所有取值分別測(cè)試,這時(shí)只會(huì)發(fā)生一維失效,測(cè)試用例個(gè)數(shù)是5個(gè),其結(jié)果如表3所示。

由上述測(cè)試實(shí)例可見(jiàn),傳統(tǒng)組合測(cè)試法需要125個(gè)用例,而關(guān)聯(lián)測(cè)試只需要30個(gè)用例,兩者最終完成的函數(shù)測(cè)試覆蓋率相同。由此可見(jiàn),關(guān)聯(lián)測(cè)試是對(duì)傳統(tǒng)的組合測(cè)試的一種有效改進(jìn)。傳統(tǒng)的參數(shù)組合測(cè)試忽略了參數(shù)之間的關(guān)系,結(jié)果導(dǎo)致測(cè)試用例大量增加,覆蓋率卻有可能降低,同時(shí)還由于產(chǎn)生了維度跳轉(zhuǎn)而給測(cè)試增加了困難[6]。采用關(guān)聯(lián)測(cè)試可以避免上述問(wèn)題的產(chǎn)生。使用關(guān)聯(lián)測(cè)試時(shí)對(duì)參數(shù)之間關(guān)系進(jìn)行分析,還有可能發(fā)現(xiàn)傳統(tǒng)的組合測(cè)試沒(méi)有測(cè)到的失效用例,這樣關(guān)聯(lián)測(cè)試的覆蓋率相對(duì)于傳統(tǒng)組合測(cè)試來(lái)說(shuō),只會(huì)提高而不會(huì)降低,這對(duì)于Linux內(nèi)核函數(shù)的魯棒性提升十分有效。

理論分析和實(shí)例應(yīng)用的結(jié)果表明,在Linux內(nèi)核函數(shù)的魯棒性測(cè)試中采用關(guān)聯(lián)測(cè)試來(lái)代替?zhèn)鹘y(tǒng)的組合測(cè)試,可以在保證測(cè)試覆蓋率的同時(shí),使所需的測(cè)試用例大大減少,而且函數(shù)中相關(guān)聯(lián)的參數(shù)個(gè)數(shù)越少優(yōu)勢(shì)越明顯?,F(xiàn)實(shí)中Linux內(nèi)核函數(shù)的參數(shù)之間關(guān)聯(lián)性較少,因此在其魯棒性測(cè)試中關(guān)聯(lián)測(cè)試方法具有很好的實(shí)際應(yīng)用價(jià)值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉