摘 要: 嵌入式軟件可靠性測試往往是基于運(yùn)行剖面的,,常用均勻分布或分段均勻分布的選取方式確定各個(gè)運(yùn)行剖面輸入變量的取值范圍,,這種選取方式使測試用例的生成和選擇是隨機(jī)的,不具備針對性,,使用質(zhì)量功能展開(QFD)方法能克服這種局限性,。將需求優(yōu)先級(jí)、測試成本,、業(yè)務(wù)重要性等因素作為權(quán)重分配給嵌入式軟件可靠性測試系統(tǒng)的運(yùn)行剖面的輸入變量,,可提高工作效率,并且達(dá)到以質(zhì)量為導(dǎo)向的測試目的,。
關(guān)鍵詞: 軟件可靠性測試,;質(zhì)量功能展開;運(yùn)行剖面
0 引言
相較于傳統(tǒng)的軟件應(yīng)用程序,,嵌入式軟件系統(tǒng)具有實(shí)時(shí)性要求高,、存儲(chǔ)器資源有限、I/O通道少,、使用相對昂貴的硬件,、涉及的CPU類型多等特性,因此與一般測試應(yīng)用軟件不同,,嵌入式軟件測試具有獨(dú)特性,。嵌入式軟件可靠性測試經(jīng)常用的一種方法是基于運(yùn)行剖面的可靠性測試。傳統(tǒng)方法中,,運(yùn)行剖面中輸入變量的取值區(qū)間通常是均勻分布或分段均勻分布,,這種取值方式導(dǎo)致測試用例的選取方式是隨機(jī)的,沒有針對性,。本文提出在確定輸入變量權(quán)重時(shí)應(yīng)用質(zhì)量功能展開(QFD)方法以提高工作效率和質(zhì)量,。
1 相關(guān)背景知識(shí)
1.1 嵌入式軟件測試的特點(diǎn)
在特定的硬件平臺(tái)進(jìn)行測試是嵌入式軟件測試的一個(gè)顯著特點(diǎn)。嵌入式軟件開發(fā)環(huán)境與運(yùn)行環(huán)境也有不一致的地方,,所以測試時(shí),,即使在主機(jī)環(huán)境或描述目標(biāo)環(huán)境中運(yùn)行時(shí)沒有發(fā)現(xiàn)軟件問題,也不能根據(jù)此判定嵌入式軟件是高可靠的,。嵌入式軟件的測試策略的開發(fā),,必須考慮到在主機(jī)環(huán)境分配給目標(biāo)環(huán)境中的資源問題和策略。嵌入式軟件開發(fā)測試時(shí)如果目標(biāo)機(jī)系統(tǒng)硬件不能方便地獲得,,這就使得最后確認(rèn)測試中提供目標(biāo)硬件設(shè)備上有了彈性,。成功進(jìn)行宿主機(jī)/目標(biāo)機(jī)測試的先決條件是軟件的可移植性,,采用宿主機(jī)/目標(biāo)機(jī)測試策略可提高工作效率并且能實(shí)現(xiàn)以質(zhì)量為導(dǎo)向[1],。
實(shí)時(shí)性是嵌入式軟件測試中的另一個(gè)重要特點(diǎn)。主要體現(xiàn)了嵌入式軟件的執(zhí)行需要對時(shí)間條件做一定約束,。
1.2 嵌入式軟件的可靠性測試
一般使用兩種方法來實(shí)現(xiàn)嵌入式軟件的可靠性測試[2],。
(1)從整個(gè)系統(tǒng)剝離出嵌入式軟件,然后進(jìn)行數(shù)學(xué)仿真平臺(tái)測試,。仿真平臺(tái)通過測量和測試的一個(gè)邏輯描述可以實(shí)現(xiàn)物理地連接到彼此的軟件系統(tǒng),,接著通過生成測試用例,通過仿真產(chǎn)生輸入,,最后,,被測目標(biāo)系統(tǒng)通過被調(diào)用來運(yùn)行,得到運(yùn)行的輸出結(jié)果,。
?。?)使所測試的整個(gè)系統(tǒng)建立一個(gè)封閉的環(huán)境來完成測試,也稱為交叉試驗(yàn)方法,。交叉試驗(yàn)的優(yōu)點(diǎn)是精度高,,操作相對簡單。交叉試驗(yàn)的一般步驟如下:首先完整地編寫在主機(jī)上的測試代碼,,通過編譯并下載到目標(biāo)計(jì)算機(jī),,然后通過測試代理進(jìn)行測試目標(biāo)代碼。由于測試工具部署在主機(jī)上,,所以在目標(biāo)計(jì)算機(jī)上的測試信息需要由主機(jī)和目標(biāo)機(jī)來測試,,然后再將信息上傳到主機(jī)并最終用主機(jī)分析工具來分析測試結(jié)果。通過這種交叉測試環(huán)境,,有時(shí)會(huì)大大增加測試費(fèi)用,。
1.3 質(zhì)量功能展開
質(zhì)量功能展開(QFD)是把客戶的原始需求轉(zhuǎn)化為產(chǎn)品的設(shè)計(jì)需求、功能部件需求,、工藝要求,、生產(chǎn)要求的質(zhì)量工具,對客戶的原始需求進(jìn)行多層次的演繹分析,。使用QFD可以幫助指導(dǎo)產(chǎn)品的健壯設(shè)計(jì)和質(zhì)量保證,。它主要的思想是通過“將客戶的需求質(zhì)量轉(zhuǎn)換成質(zhì)量特性”,確定產(chǎn)品的設(shè)計(jì)質(zhì)量,,通過確定各功能部件的質(zhì)量,,進(jìn)而確定每個(gè)過程的質(zhì)量和過程要素,系統(tǒng)地展開它們之間的關(guān)系,。在質(zhì)量功能展開中起重要作用的是由需求質(zhì)量和質(zhì)量特性構(gòu)成的二維表,。
QFD的基本原理是用“質(zhì)量屋”的形式,量化地分析客戶需求與質(zhì)量特性之間的關(guān)系影響程度,,經(jīng)數(shù)據(jù)分析處理后找出對滿足客戶需求影響最大的質(zhì)量特性因子,,指導(dǎo)人員抓住主要矛盾,開展穩(wěn)定性優(yōu)化設(shè)計(jì),,通過把最高的價(jià)值/費(fèi)用比率的特性設(shè)置為最高的優(yōu)先級(jí),,進(jìn)而開發(fā)出滿足客戶需求的產(chǎn)品,。
1.4 基于運(yùn)行剖面的可靠性測試
John Musa在19世紀(jì)30年代初提出了基于運(yùn)行剖面的方法,這種方法考察的對象就是運(yùn)行剖面,,因此稱為基于運(yùn)行剖面的可靠性測試,。運(yùn)行剖面是指對嵌入式系統(tǒng)使用條件的定義,即“嵌入式系統(tǒng)的輸入值用其按時(shí)間的分布或按它們在可能輸入范圍內(nèi)的出現(xiàn)概率的分布來定義”,,為了達(dá)到互通的目的,,連接軟件用戶以及軟件開發(fā)設(shè)計(jì)人員之間重要的橋梁即是運(yùn)行剖面[3]。
2 應(yīng)用QFD定義運(yùn)行剖面
2.1 通過質(zhì)量功能部署確定影響因素的優(yōu)先級(jí)
用QFD確定需求優(yōu)先級(jí)主要可分為5個(gè)步驟[4]:
?。?)對原始信息進(jìn)行收集并變換成語言信息,。通過原型、需求訪談等方式對對象系統(tǒng)和用戶進(jìn)行調(diào)查,,收集原始信息,。經(jīng)過一定的規(guī)則逐一對原始信息探討確認(rèn),并變換成只含有一個(gè)意思的具體表現(xiàn)的語言信息,。
?。?)對語言信息進(jìn)行分類。通過對語言信息的整理,,將用戶需求分類成功能需求,、質(zhì)量需求和其他需求。然后分析總體的功能需求,,逐次抽出下層子功能點(diǎn),。確定某一功能需要怎樣的輸入和輸出數(shù)據(jù),逐一抽出數(shù)據(jù)項(xiàng)或者數(shù)據(jù)字典,。
?。?)功能數(shù)據(jù)二維表的構(gòu)造。整理細(xì)化的功能點(diǎn)及其相應(yīng)的數(shù)據(jù),,把功能和數(shù)據(jù)分別作為二維表的X因素和Y因素,,探討兩者的關(guān)聯(lián),構(gòu)造功能數(shù)據(jù)二維表,。
?。?)從功能需求抽出質(zhì)量需求和質(zhì)量特性。以功能項(xiàng)目為基礎(chǔ),,從功能滿足性,、使用容易性、可靠性和適應(yīng)性4個(gè)方面抽出質(zhì)量需求,??梢詮墓δ苄浴⒖煽啃?、使用性,、效率性、維護(hù)性和移植性6個(gè)方面抽出質(zhì)量特性,。
?。?)質(zhì)量關(guān)聯(lián)表的構(gòu)造。把質(zhì)量需求項(xiàng)作為二維表的X因素,,質(zhì)量特性項(xiàng)作為Y因素,,探討兩者的關(guān)系,構(gòu)造二維表,。在構(gòu)造二維表時(shí)可以采用AHP方法對功能數(shù)據(jù)和質(zhì)量表進(jìn)行分層來構(gòu)造[5],。按其相互關(guān)系通過兩兩比較,通過行業(yè)專家對評價(jià)指標(biāo)的判斷來確定層次中各質(zhì)量特性因素的相對重要性,,進(jìn)而給出每個(gè)因素的權(quán)值,,在這個(gè)基礎(chǔ)上計(jì)算出方案的綜合排序,反復(fù)循環(huán)逐漸導(dǎo)出需求的層次結(jié)構(gòu),,這些層次關(guān)系可以作為對各個(gè)需求的優(yōu)先級(jí)的不同權(quán)重,。
2.2 運(yùn)行剖面構(gòu)建過程
嵌入式軟件的可靠性測試通常通過嵌入式用戶如何使用系統(tǒng)和使用頻率來確定運(yùn)行剖面[6]。運(yùn)行剖面描述了在實(shí)際運(yùn)行時(shí)嵌入式軟件的各項(xiàng)功能的使用概率,。它的主要任務(wù)是在嵌入式軟件可靠性試驗(yàn)中如何根據(jù)運(yùn)行剖面在運(yùn)行測試中的誤差數(shù)據(jù)來確定最適合嵌入式軟件可靠性的模型,,進(jìn)而使得得到的可靠性指標(biāo)更加準(zhǔn)確。在實(shí)際使用中運(yùn)行剖面取決于嵌入式軟件系統(tǒng)的機(jī)型,、功能,、需求和相應(yīng)的輸入,以及進(jìn)行分析的嵌入式軟件開發(fā)可靠性和附加的嵌入式系統(tǒng)開發(fā)人員對這些模型的概率,、功能,、任務(wù)的了解程度。測試,、分析的結(jié)果是否可信取決于運(yùn)行剖面構(gòu)造的質(zhì)量,。
2.3 傳統(tǒng)的運(yùn)行剖面輸入變量的取值
運(yùn)行剖面可以看成是二維向量的集合,定義如下:
OpProfile={(Element1,,W1),,(Element2,W2),,…,,
(Elementn,,Wn)}
其中,,Element表示運(yùn)行剖面中所包含的沒有交集的元素,W代表元素的權(quán)重或概率,。
運(yùn)行剖面允許使用不同的權(quán)重選擇運(yùn)行,,根據(jù)有關(guān)規(guī)則測試用例的選擇還必須確定輸入變量或者軟件運(yùn)行環(huán)境變量的值,。確定各個(gè)運(yùn)行剖面輸入變量的取值范圍的常用方法是采用均勻分布或分段均勻分布的選取方式,這種選取方式使測試用例的生成和選擇是隨機(jī)的,,不具備針對性[7-8],。
2.4 應(yīng)用QFD建立運(yùn)行剖面
嵌入式軟件可靠性測試的基本思想是將資源集中在使用最頻繁和最可能導(dǎo)致嚴(yán)重失效的功能上,并使測試盡可能按照實(shí)際進(jìn)行,,因此運(yùn)行剖面的選擇應(yīng)結(jié)合以下幾個(gè)方面來綜合考慮:
?。?)需求優(yōu)先級(jí)的高低
根據(jù)用戶對嵌入式軟件系統(tǒng)的需求的優(yōu)先級(jí)確定哪些測試是重要的或者優(yōu)先級(jí)別是比較高的,在測試時(shí)投入相對多的資源[9],。
?。?)日常使用頻率高、涉及用戶面廣的功能
用戶使用頻率高的功能點(diǎn)的測試更為重要,,所以需要投入更多的精力并且可以讓模擬環(huán)境更接近生產(chǎn)環(huán)境,,這樣可使測試效果更真實(shí)。
?。?)能反映業(yè)務(wù)重要性指標(biāo)的功能
根據(jù)業(yè)務(wù)重要程度和使用習(xí)慣對模塊的優(yōu)先級(jí)別進(jìn)行排序,,為了使用戶培訓(xùn)及用戶應(yīng)用的過程更加高效,需要把業(yè)務(wù)最重要和使用最多的模塊優(yōu)先級(jí)別排在最高,。
?。?)測試成本因素、測試實(shí)施過程的簡便性及可操作性
需要綜合考慮測試成本的因素,。測試用例選擇越多意味著測試過程的復(fù)雜度越高,、成本越大。從成本的角度分析,,可以只選擇其中的一種業(yè)務(wù)類型作為測試用例,。還需要考慮測試過程的可操作性。某些功能很難搭建模擬環(huán)境進(jìn)行測試,,對那些可操作性較差的功能點(diǎn)將作為測試優(yōu)先級(jí)較低的選項(xiàng),。
在每個(gè)層級(jí)的剖面都可以按照QFD的方法進(jìn)行上述影響因素分析并賦值,賦值后的數(shù)字代表針對嵌入式軟件執(zhí)行時(shí)間的權(quán)重或概率,。在運(yùn)行剖面給定的輸入變量的取值按照上述方法的權(quán)重代入公式,,根據(jù)運(yùn)行剖面生成測試用例的過程來實(shí)現(xiàn)對某一功能的測試。
3 結(jié)束語
本文提出基于QFD應(yīng)用到運(yùn)行剖面輸入變量的權(quán)重確定,,其通過QFD分析影響嵌入式軟件可靠性測試的因素,,建立需求優(yōu)先級(jí)、業(yè)務(wù)重要性,、測試成本等因素的二維表,,通過二維表中的這些因素作為嵌入式軟件可靠性測試系統(tǒng)的運(yùn)行剖面的輸入變量的權(quán)重或概率予以分配,來提高工作效率并且達(dá)到以質(zhì)量為導(dǎo)向的測試目的。
參考文獻(xiàn)
[1] 張廣梅,,李曉維.軟件可靠性測試方法探析[J].計(jì)算機(jī)應(yīng)用,,2004,24(4):28-30.
[2] 韓柯.軟件可靠性工程[M].北京:機(jī)械工業(yè)出版社,,2003.
[3] LYU M R. Handbook software reliability engineering [M]. New York: McGraw-Hill,, 1996.
[4] 李軍.CMMI實(shí)施過程中確定需求優(yōu)先級(jí)的幾種方法[J].軟件導(dǎo)刊,2010,,9(11):22-23.
[5] 湛浩旻,印桂生,,趙蘊(yùn)龍.基于ISM與AHP組合的需求優(yōu)先級(jí)排序方法[J].計(jì)算機(jī)科學(xué),,2013,40(3):225-227,,243.
[6] 艾駿,,陸民燕,阮鐮.面向軟件可靠性測試數(shù)據(jù)生成的剖面構(gòu)造技術(shù)[J].計(jì)算機(jī)工程,,2006,,32(22):7-9,45.
[7] 徐忠兵,,王大翊,,蕫威.嵌入式軟件可靠性測試用例自動(dòng)生成技術(shù)的研究[J].科技信息,2009(5):57,,48.
[8] 黃松,,端木怡婷,惠戰(zhàn)偉,,等.基于運(yùn)行剖面的測試用例選擇改進(jìn)算法[J].指揮信息系統(tǒng)與技術(shù),,2011,2(3):78-82.
[9] 熊偉.基于QFD的軟件需求分析法[J].計(jì)算機(jī)與現(xiàn)代化,,1998(5):1-4,,27.