構件可測試性挑戰

發表于:2009-04-16來源:作者:點擊數: 標簽:挑戰構件
構件的可測試性是設計和測試軟件程序及構件的重要概念之一。運用具有良好的可測試性的程序和構件來構建軟件,可以簡化測試操作、減少測試開銷、提高軟件 質量 。 James Bach曾指出,有一些程序特性可以用于可測試的軟件,包括可操作性、可觀察性、可控制性、
構件的可測試性是設計和測試軟件程序及構件的重要概念之一。運用具有良好的可測試性的程序和構件來構建軟件,可以簡化測試操作、減少測試開銷、提高軟件質量。
James Bach曾指出,有一些程序特性可以用于可測試的軟件,包括可操作性、可觀察性、可控制性、易理解性等等。Jeffrey M.Voas和Keith W. Miller將軟件可測試性看成是可靠性的三個難題之一。他們指出軟件可測試性分析對于檢測和評估一個使用經驗主義(empirical)分析方法的軟件測試是很有用的。
然而,在構件工程、基于構件的軟件開發中,開發者對構件的可測試性仍然存在一些疑惑。什么是構件的可測試性?它的相關要素是什么?怎樣檢查、測量或評價軟件構件的可測試性?怎樣設計和開發可測試的構件來達到良好的可測試性?
構件可測試性是什么?
在構件工程中,有幾種不同的構件可測試性的觀點,包括構件可觀察性(observability)、構件可跟蹤性(traceability)、構件可控制性(controllability)和構件易理解性(understandability)。
構件可觀察性和可跟蹤性
根據Roy S. Freedman的觀點,軟件可觀察性是指根據一個程序的操作行為、輸入參數及輸出結果,來察看觀察這個程序的簡單程度。這也暗指了設計和定義一個構件的接口(例如輸入、輸出接口)將會影響到它的可觀察性??梢允褂肦oy S. Freedman提出的方法來檢測一個構件的接口,相對于它的輸入,來評價觀察它的操作和輸出的簡單程度。應用到構件工程中,構件可跟蹤性是另一個影響構件可觀察性的要素。
軟件構件的可跟蹤性是指跟蹤構件屬性和構件行為的嵌入能力的范圍。它有兩方面:行為跟蹤(behavior traceability)和跟蹤可控制性(trace controllability)。行為跟蹤指構件跟蹤它的內部和外部行為的便利的程度?,F實世界中,構件工程可以通過在軟件中增加一個程序跟蹤機制來檢查和監視軟件構件的內部和外部行為。
共計有六種類型的構件跟蹤,它們是操作、性能、錯誤、狀態、GUI事件和通訊跟蹤??梢允褂貌煌姆椒▽⒏櫩煽刂菩蕴砑拥杰浖嫾?。為了支持嵌入功能的訪問,必須在構件中定義一個標準跟蹤接口。構件跟蹤接口的標準化和跟蹤格式對一個基于構件的程序建立系統化的跟蹤解決方法很重要。
構件可控制性
一個程序(或構件)的可控制性是一個重要的特性,它表明了控制一個程序(或構件)的輸入/輸出、操作和行為的簡單程度。構件開發者從三個方面察看軟件構件的“可控制性”:行為控制,特性定制和安裝布置。第一個方面與構件的行為和輸出結果(相應于操作和輸入數據)的能力有關,第二個方面指支持構件內部特性的定制和配置的嵌入能力,最后一個方面是指構件安裝和配置的控制能力。
構件可理解性
構件可理解性依賴于構件信息提供的多少以及它們表述的好壞。構件文檔的表述是第一要素。
構件可理解性的第二要素是構件程序資源表述,包括構件源代碼及其支持元素,例如安裝代碼和測試驅動等。
最后一個要素是構件質量信息的表述,包括構件驗收的測試計劃和測試套件,構件測試度量和質量報告。
雖然看上去構件供應商隱藏了詳細的測試信息和問題信息也挺合理的,但是用戶還是希望在不久的將來他們能夠提供構件的質量信息、驗收的測試計劃,甚至是測試套件。
測試軟件構件的挑戰
在構件工程范例中,主要目標之一是產生可復用的軟件構件作為軟件產品。第三方工程師根據用戶給出的需求,使用構件作為構建軟件系統的部件。所以,程序的可測試性很大程度上依賴于相關構件及其集成的可測試性。構建軟件構件的測試要考慮如下幾點:
怎樣復用構件測試?
考慮軟件構件的演化,必須注意構件測試的可復用性。復用構件測試的關鍵是開發一些系統化方法和工具,來建立可復用的構件測試套件,管理和存儲各種測試自愿,包括測試案例、測試數據和測試腳本。對于工程師來說,使用ad-hoc方法,用相同的測試套件技術來處理與當前軟件不同的軟件構件(例如,第三方構件)很難。在構件驗收測試和構件集成中,這個問題就會影響構件測試的復用。
解決這個問題有兩個可選擇的方法。第一是為構件建立新的plug-in-and-test的測試套件技術;另一個方法是在構件內部建立測試,也就是嵌入式測試。第一種方法是在構件外部的測試套件中建立和維護構件測試,第二個方法是在構件內部建立構件測試。顯然,如果一個友好的測試操作接口可行的話,這種方法簡化了構件測試,減少了用戶方的構件測試開銷。要執行嵌入式構件測試,我們需要其他功能工具來執行測試、測試報告和測試結果檢查。所以,需要標準化測試訪問接口,來支持構件、測試套件和嵌入式測試的交互。
如何構建可測試的構件?
一個理想的可測試軟件構件不僅是可配置可執行的,而且在標準化構件測試工具的支持下也是可測試的。與普通構件不同的是,可測試構件有以下一些特性:
可測試構件一定可跟蹤;可測試構件一定有一些很好定義的測試工具的嵌入接口;具有嵌入式測試的可測試構件必須使用標準化機制;
關于可測試構件的設計有三個問題。第一個問題是對可測試構件,怎樣設計和定義通用架構和測試接口,第二個問題是怎樣用系統化方法產生可測試構件,最后一個問題是為了支持測試和可測試構件,怎樣控制和最小化程序的費用和資源。
如何構建構件測試驅動和存根?
在設計應用中,工程師基于給定的需求和設計說明書,使用ad-hoc方法來開發特定模塊或特定產品的測試驅動和存根。這種方法的主要缺點是產生的測試驅動和存根只對特定的項目(或產品)有用。
很明顯,傳統方法會導致在構件測試驅動和存根構建上的更高的開銷。
顯然,需要新的系統的方法來為不同的構建和各種定制服務構建測試驅動和存根。這其中的關鍵就是為構件產生可復用的、可配置的(或可定制的)、可管理的測試驅動和存根。
構件測試驅動必須是基于腳本的程序,只使用它的黑盒功能。這有兩組,第一組包括特定功能測試驅動,每一個都使用了一個構件的特定產生功能(或操作);第二組包括特定情形的測試驅動,每一個都使用了一個構件黑盒操作(或功能)的特定順序。
在構建構件框架時需要構件測試存根。每一個測試存根模擬構件的一個黑盒功能和/或行為。有兩種方法產生測試存根。第一種是基于模型的;第二種方法是操作化的基于腳本的。然而,怎樣用系統化的方法產生這些特定功能的測試存根是一大挑戰。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97