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