Linux內(nèi)核函數(shù)魯棒性關(guān)聯(lián)測(cè)試研究
在進(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的所有組合。若有失效,必定是一維失效或者三維失效。在對(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ù)代碼。
通過對(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ù).所以,在覆蓋率不變的情況下,若采用魯棒性關(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)行分析,通過分析可以得知它的三個(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í)例可見,傳統(tǒng)組合測(cè)試法需要125個(gè)用例,而關(guān)聯(lián)測(cè)試只需要30個(gè)用例,兩者最終完成的函數(shù)測(cè)試覆蓋率相同。由此可見,關(guān)聯(lián)測(cè)試是對(duì)傳統(tǒng)的組合測(cè)試的一種有效改進(jìn)。采用關(guān)聯(lián)測(cè)試可以避免上述問題的產(chǎn)生。使用關(guān)聯(lián)測(cè)試時(shí)對(duì)參數(shù)之間關(guān)系進(jìn)行分析,還有可能發(fā)現(xiàn)傳統(tǒng)的組合測(cè)試沒有測(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à)值。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂) 光電開關(guān)相關(guān)文章:光電開關(guān)原理
評(píng)論