Linux內(nèi)核函數(shù)魯棒性關(guān)聯(lián)測試研究
在進(jìn)行魯棒性關(guān)聯(lián)測試時,首先進(jìn)行參數(shù)關(guān)聯(lián)性測試,先把待測函數(shù)中有互相作用的參數(shù)進(jìn)行包裝,在測試中人為構(gòu)造參數(shù)維度等于失效維度的情況。例如,函數(shù)f(A,B,C,D,E)中,參數(shù)A、B、C有關(guān)聯(lián)。首先將參數(shù)E和參數(shù)F取合法輸入值,然后測試參數(shù)A、B、C的所有組合。若有失效,必定是一維失效或者三維失效。在對函數(shù)進(jìn)行了充分的關(guān)聯(lián)測試后,再進(jìn)行參數(shù)非關(guān)聯(lián)性測試。取出上例中參數(shù)A、B、C的一個合法組合,對參數(shù)E和參數(shù)F的所有用例分別進(jìn)行測試。若有失效,必定是一維失效,這樣也很容易分析測試結(jié)果和寫出保護(hù)代碼。
通過對函數(shù)的參數(shù)關(guān)聯(lián)性進(jìn)行測試可得出結(jié)論,只有當(dāng)函數(shù)所有參數(shù)都發(fā)生關(guān)聯(lián)作用時,魯棒性關(guān)聯(lián)測試所需用例的個數(shù)才會等于傳統(tǒng)組合測試所需的用例個數(shù).所以,在覆蓋率不變的情況下,若采用魯棒性關(guān)聯(lián)測試法,可以有效減少測試用例個數(shù),并且還能夠消除維度失效跳變帶來的影響。
4 測試實例
實際測試中測試環(huán)境為DELL的DIMENSION 4700,操作系統(tǒng)為Redhat Linux 8.0,系統(tǒng)內(nèi)核為2.2.24.實測以read()函數(shù)參數(shù)組合表為例,其表中組合測試用例的個數(shù)為5×5×5=125個。進(jìn)行關(guān)聯(lián)測試時先對其參數(shù)的關(guān)聯(lián)性進(jìn)行分析,通過分析可以得知它的三個參數(shù)中只有buf和count有關(guān)聯(lián)。
實測中首先進(jìn)行關(guān)聯(lián)性測試,對read()函數(shù)的參數(shù)fd取正常值,測試參數(shù)buf和count的所有組合,測試結(jié)果如表2所示。共使用了25個測試用例。
在對上述測試結(jié)果進(jìn)行屏蔽失效后,轉(zhuǎn)入第二步,對參數(shù)fd進(jìn)行非關(guān)聯(lián)性測試,即針對fd與(buf+count)的組合進(jìn)行測試。對buf與count的組合取合法值后,針對參數(shù)fd的所有取值分別測試,這時只會發(fā)生一維失效,測試用例個數(shù)是5個,其結(jié)果如表3所示。
由上述測試實例可見,傳統(tǒng)組合測試法需要125個用例,而關(guān)聯(lián)測試只需要30個用例,兩者最終完成的函數(shù)測試覆蓋率相同。由此可見,關(guān)聯(lián)測試是對傳統(tǒng)的組合測試的一種有效改進(jìn)。采用關(guān)聯(lián)測試可以避免上述問題的產(chǎn)生。使用關(guān)聯(lián)測試時對參數(shù)之間關(guān)系進(jìn)行分析,還有可能發(fā)現(xiàn)傳統(tǒng)的組合測試沒有測到的失效用例,這樣關(guān)聯(lián)測試的覆蓋率相對于傳統(tǒng)組合測試來說,只會提高而不會降低,這對于Linux內(nèi)核函數(shù)的魯棒性提升十分有效。
理論分析和實例應(yīng)用的結(jié)果表明,在Linux內(nèi)核函數(shù)的魯棒性測試中采用關(guān)聯(lián)測試來代替?zhèn)鹘y(tǒng)的組合測試,可以在保證測試覆蓋率的同時,使所需的測試用例大大減少,而且函數(shù)中相關(guān)聯(lián)的參數(shù)個數(shù)越少優(yōu)勢越明顯?,F(xiàn)實中Linux內(nèi)核函數(shù)的參數(shù)之間關(guān)聯(lián)性較少,因此在其魯棒性測試中關(guān)聯(lián)測試方法具有很好的實際應(yīng)用價值。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂) 光電開關(guān)相關(guān)文章:光電開關(guān)原理
評論