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