摘 要: 在深入研究軟件測試過程和技術實踐的基礎上,提出了軟件測試力概念,構建了軟件測試力系統(STPS)體系結構。以此為基礎,通過分析STPS關鍵需求,確立系統的質量因素,構架了基于質量屬性的STPS結構模型。從而實踐了構架技術與行業實際的有效結合,促進了軟件構架技術在軟硬件融合的系統構架中的應用,為進一步研究STPS高效的運行機理奠定了基礎。
關鍵詞: 軟件測試;軟件構架;軟件質量;質量屬性;軟件測試力系統;構件
在測試技術發展的同時,測試全過程的行為和管理顯得尤為重要。一個成功的測試項目,離不開對測試過程科學的組織和監控,高質量的過程體系已成為測試成功的重要保證。但是,就目前軟件工程發展的狀況而言,普遍存在測試活動組織性、計劃性不強,測試管理不完善,測試流程不標準,測試過程失控,測試效率低下,以致影響整個軟件工程質量的現象。為此,本文分析和研究軟件測試全過程活動,以可管理性、高效率、可擴充性等質量需求為核心,以最終的“規劃與準備”、“測試執行”、“監督與度量”、“分析與表達”、“結果與反饋”的功能集成為主線,構造了STPS管理軟件構架,以實現領域構架到軟件構架的映射[1],促進軟件測試理論的進一步研究和軟件測試體系的建構。
軟件測試力是指圍繞軟件產品測試所擁有的獨特測試資源和整合這些資源所形成的高效持續的測試能力。軟件測試力系統STPS(Software Testing Power System)是包括測試工程管理和測試工程技術的一個完整實體,是測試全過程活動的集成體系,是包括軟件系統的測試系統。STPS內涵豐富,影響要素眾多,且各要素間存在著復雜的多層次、非線性相互作用,是一個開放式、可集成的復合系統[2]。
測試力的概念是針對測試系統效力提出來的,其目的是整合測試所涉及的所有軟硬件資源,用系統工程觀點來研究測試全過程活動,以提高測試系統的效能。
軟件構架是對系統整體組織結構和控制結構的刻畫,它包括系統中各計算單元構件的功能分配、各單元之間的高層交互連接器說明以及軟件構架的約束[3]。
軟件構架體現在系統高層次的抽象,著重解決軟件系統的結構和需求向實現平坦過渡的問題[4]。研究軟件體系結構的目的是為軟件系統提供合理的構架,重點解決應用系統開發中的總體結構問題,用以實現既定的商業目標和系統的質量屬性。
軟件構架是軟件開發領域的一門新興學科,是軟件業的一個重要的研究領域,正受到越來越多的關注。但目前構架技術及應用還處于研究發展階段,存在很多不足:(1)無論從技術角度還是從管理角度,針對實際軟件開發組織的、有關如何管理軟件構架的實用研究文獻十分缺乏。(2)現有的構架多側重于軟件構架,對于軟件、硬件、過程、管理及目標相結合的系統構架研究較為少見,更是很少有關于如何把系統構架與行業或組織的實際情況結合起來的探討。(3)現有構架只依據靜態的系統目標來設計,沒有考慮動態的過程,如人力資源、進度要求以及開發環境的滿足情況等。
因此,在分析測試活動全過程的基礎上,提出測試力及其系統概念,分析和研究軟件測試的體系結構,并用STPS來描述全過程活動,用全過程構架建立STPS結構模型,將有助于測試全過程的行為管理,提高STPS的質量。同時,通過構架實踐,實現了軟件構架技術在結合了環境、過程、管理和目標的系統構架中的應用,推動了領域構架轉化為軟件構架的進一步研究,為促進測試領域向系統化、專業化、高效化方向發展。
1 STPS結構與目標
STPS涉及到環境、過程、管理、軟硬件和目標等因素,是技術、商業和社會等諸多因素作用的結果。STPS結構不同于一般的系統管理結構,它是系統中的系統,是靜態和動態結合的過程管理。
1.1 STPS結構
根據測試力的定義及參考相關文獻,可將測試力分為硬力和軟力兩大部分[5]。硬力由環境力、設施力、科技力、勞動力、結構力和聚集力組成;軟力由文化力、制度力、管理力、發展力和秩序力組成。硬力為弓,軟力為弦,測試力為箭,三方共同作用形成測試力的“弓弦箭”模型。“弓弦箭”模型的關注點是“能力”、“效力”問題,這正好體現了STPS的本質要求。
STPS由基礎環境要素、測試要素和目標要素構成。測試要素又由5個相互關聯、相互作用的測試執行過程組成。具體來說,STPS包括人員、設施環境、物資技術、管理制度、測試執行全過程以及系統目標等元素,并由數據、行動、設備、事件和線索來構造[6]。為方便分析,將STPS的結構按工程的思想物化為測試輸入、測試生產和測試輸出等工程行為過程,與之對應,系統分為如圖1所示的三個作用組件。
(1)輸入組件:是STPS起到保障作用的條件域,包括人員、設施環境、管理制度、激勵機制,產業發展水平、學科體系狀況以及測試在軟件開發過程中的地位等因素,其數據的表現形式是人力、資源力、技術力、管理力與領域狀況力。輸入域是實現系統需求的條件和基礎。
(2)測試組件:是決定STPS成效的關鍵過程域,包括測試規劃和準備、測試執行、監測和度量、分析和表達、結果反饋五個階段[7-8],這五個階段階段相互聯系又相互影響,在域內部形成一個行為閉合回路。另外,此域也有一些內部的作用子要素在起作用,如測試行為中各階段的技術、方法的使用和過程設計;軟件開發模式下對測試模型和評估測量方式的選擇等。測試生產域是主要實現系統需求的關鍵域。
(3)輸出組件:是STPS自身質量的保證體系,也是STPS的目標域,包括:實現對業務和系統進行正確測試、分析和報告的功能因素;可管理、高效率、正確性、可更改的系統質量因素;測試的質量、效率、進度和成本收益等測試商業因素;改革、創新和發展目標因素。每一個因素又由多個屬性來刻畫。追求質量更好、效率更高、進度更快和低成本、高效益以及實現商業目的是STPS的最終目標,也是其自身功能完善和可持續發展的內在驅動力。
1.2 STPS目標
STPS的作用:一是完成具體軟件項目的測試,實現其功能目標;二是在不斷提高系統質量目標的同時,以實現其商業目標。STPS需求可由以下四方面來描述:
(1)功能目標:STPS要實現的功能是要在各子系統及組件的共同作用下,有效地完成項目業務的測試過程,實現對軟件制品所期望的各項測試,以實現自己的功能目標(測試、分析和報告)。
(2)質量目標:STPS對軟件制品進行測試時整體所表現出來的性能和能力,它用質量屬性來度量,用構架來實現。STPS質量目標包括可管理性、高效率和正確性、可擴充性、可更改性等質量屬性。
(3)商業目標:STPS商業目標需求要用對某具體業務項目測試來衡量,即希望測試某具體項目時測試的質量、進度和效率要好,以此實現SPTS系統的整體工作質量、效力和效益。
(4)發展目標:STPS的改革、創新和發展。
2 STPS構架因素
2.1 構架商業周期
構架是技術、商業和社會等諸多因素作用的結果,而構架又能返回并影響到開發環境,這種相互影響的周期,稱為構架商業周期(ABC)[9]。ABC陳述了當設計師開始構建系統時的各種影響因素,并指出了特定的質量屬性需求通常產生于組織的業務目標。STPS系統根據涉眾及質量屬性所構架的商業周期如圖2所示。這里的最終用戶是測試人員,用戶則是測試組織。
2.2 需求與質量
2.2.1 STPS質量需求
軟件質量體現了所希望的各種屬性組合的程度[10-11],通過質量屬性來度量。質量屬性是系統在其生命周期過程中所表現出來的各種特征。在構架設計過程中應考慮質量屬性,并通過構架實現質量需求。質量需求是系統對軟件制品進行測試時整體所表現出來的性能。
本文樹立了一個重要的理念:商業目標決定質量目標。提高系統質量的最終目的是為了贏利,而不是創造完美無缺的產品。因此對于普通商業軟件而言,并不是“質量越高越好”,而是恰好讓廣大用戶滿意,并且將提高質量所付出的代價控制在預算之內。因此,STPS質量屬性通過以下順序獲得:商業目標->用戶需求->構架需求->質量屬性。STPS系統的四個最重要質量屬性需求是:
(1)可管理性:通常是指各組件的工作協調和通信的有效管理。它要求測試工作便于人員分工(模塊獨立性、測試工作的負載均衡、進度安排優化、預防人員流動對測試的影響等);測試過程便于資源的配置管理,便于控制系統運行、監視系統狀態、錯誤處理及使模塊間通信的簡單等;測試結構要求模塊要大小合理和適度的復雜等。
(2)高效率:效率包括時間效率與空間效率。在時間效率方面,用戶的響應時間要小、吞吐量要大;空間效率方面,運行過程中占用資源要少[12]。高效率通常是指系統的響應能力,即對外部刺激(事件)做出反應時所需要的時間或在某段時間內所處理的事件個數。這是一個關鍵的質量目標,是通過更小的成本實現更有效測試來度量的。
(3)正確性:是指系統按照需求正確執行任務的能力。正確性的語義涵蓋了精確性,正確性無疑是很重要的軟件質量屬性。
(4)可更改(可維護)性:它不僅反映了系統適應變化的能力,即要求進行快速修改系統并使修改代價盡可能低的能力;而且也反映了系統進行擴展的能力,即它能適應更多的測試環境要求并使結構重新調整操作的能力。
2.2.2 STPS功能性需求
功能是指系統所能完成的業務工作。功能性需求是指系統能夠完成所期望的工作的能力。功能需求往往通過技術需求分析得到,并由用例來規范、檢驗和驅動,由開發過程及軟件設計來實現。STPS要實現的功能是要在各子系統及組件的共同作用下,有效地完成測試過程,實現對軟件制品進行所期望的測試。通過分析,STPS必須完成以下功能:
(1)按規格說明書,完成對軟件制品進行所期望的測試。
(2)對業務測試過程進行監督、測試結果進行分析并輸出測試報告。
(3)反饋業務的測試結果,提出改進建議。
質量需求與功能需求是正交的,質量需求高于功能需求,即質量屬性要求高于系統功能(系統能力、服務和行為)的基本要求。兩者的共同作用實現STPS的目標需求并完成其商業目標。
3 構架解決方案
構架是從系統的總體結構入手,是系統整體組織結構和控制結構的刻畫,能最終實現對不同質量屬性的滿足。
3.1 參考模型
通過分析STPS組成、工作過程和質量需求,可知系統應由環境組件、測試組件和管理控制組件三個相互獨立又相互聯系的組件(角色)構成。每個組件都要被分配功能責任,并使用其他組件的運行結果。圖3為STPS參考模型,展示了組件與測試人員和測試過程的交互以及系統的目標構成。
3.2 構架結構
構架由構件組成,是多種結構的體現。結構是系統構架從不同角度觀察所產生的視圖。通過圖3的STPS參考模型,結合其工作過程,可分析出STPS構架應由下列結構來體現。
(1)結構化模型。STPS結構化展示了軟件元素與外部環境中的元素之間的關系,它是一種調用和返回的體系結構[13]。其中,測試結構由多個子模塊和子過程組成,各個部分是一種使用、依賴的過程關系;環境與管理控制結構,由多個要素組成,各要素也必須相互協調并共同作用。
(2)使用結構。使用結構的思想是:如果過程A的運行必須以過程B的正確運行為前提,則認為是過程A使用過程B。使用結構是模塊中的過程,描述了各組件之間在運行時使用關系,展示了各組件在運行過程中是如何交互來完成任務的。通過對STPS測試行為過程分析,可知STPS是一種順序批處理構架,構件及各子組件存在著明顯的使用關系。
從整體來說,STPS中的測試結構模型是一種分區結構,是對構架的縱向劃分;環境與目標結構模型是分層結構,是對構架的橫向劃分。因此,在物理上,STPS是一種“分層+分區+分層”結構;在邏輯上,STPS又是一種結構化下的使用關系。
3.3 系統構架
3.3.1 STPS管理模塊和應用模塊
結構化模型就是構架模式。STPS可通過二個相互關聯但又不相同的結構進行描述,以滿足其質量屬性要求。在粗粒度上,可以把STPS結構化模型架構樣式分成管理和應用兩大部分[14],如圖4所示。
管理部分:用以處理協調問題,包括組件的實時調度、組件之間的同步、從指揮控制臺上對事件進行管理、數據共享、數據完整性等。管理模塊類型中的時間管理是調度機制的基礎,它負責同步、提供時鐘;事件處理器負責協調模塊及子系統工作;控制管理則負責測試全過程質量管理;環境管理則負責資源的調度。
應用部分:處理各個系統的運算,對測試系統建模等。其功能由各個子系統和構件完成。應用模塊類型中的子系統控制器用以將相關子模塊的一組功能聯系起來,實現對子系統整體的控制、邏輯交互和通信。子系統控制器必須完成如下的功能:
(1)按照某個事件的響應,根據一組初始化條件,完成自身及各個組件的初始化。
(2)按照對各組件功能的了解,把對故障及參數的請求路由給各個組件。
3.3.2 組群劃分及分解
將STPS建模問題劃分成更易管理的單位的過程中,測試結構系統成為問題的焦點。由于測試系統受到多個組群的影響,通過做最粗粒度的分解,可將STPS劃分為環境組群、測試組群、管理組群和控制組群等具體組群,然后再進一步將組群分解為系統,以滿足其質量要求。例如通過STPS的結構組成和參考模型,可將測試組群進一步分解成如下的系統:規劃與準備系統、測試執行系統、監督與度量系統、分析與表達系統、結果與反饋系統。
3.3.3 系統分解為子系統
最后,可再將系統分解為子系統,以滿足其功能要求,實現STPS。例如測試執行系統到子系統的進一步的分解如圖5所示。
通過上面的構架過程,已經確定了功能的劃分、子系統到子系統之間的控制分配,也確定了子系統之間的聯系。要完成STPS框架,還需要做如下的工作:
(1)確定測試執行系統的組件實例。
(2)采用類似的方法對其他組群、系統和子系統進行分解。
本文定義了軟件測試力概念,提出和分析了STPS體系結構。在軟件過程理論和構架技術的指導下,從質量屬性的角度出發,結合STPS項目實際,探討了STPS的過程構架和軟件構架,實現了軟件構架技術在涉及環境、過程、管理和目標等軟硬件結合系統領域構架中的具體應用,推動了軟件測試過程及其研究方法的創新實踐。
對STPS進行全面、系統的分析是一個十分復雜的問題,模型的構架也因為涉及到軟硬件結合的復雜環境和較多的目標需求而變得困難。因此,本文的研究也顯露了一定的局限性,比如未能構架STPS體系中除測試系統以外的其他部分組件及它們之間的聯系成分;未能對系統構架在實現系統質量、進度、成本和效率等方面的現實意義作出論證等。但是,通過建立STPS構架模型,促進了軟件測試全過程活動的實際研究,為測試過程向系統化、專業化、高效化方向發展奠定了基礎。
參考文獻
[1] 徐銘,萬麟瑞.基于多Agent的JIT軟件構架研究[J].計算機工程與設計,2006,27(21):4052-4053.
[2] 鄭睿,李漢鈴.基于多屬性的城市競爭力系統結構分析[J].系統工程理論方法應用,2006,15(2):170-171.
[3] 何堅,覃征.軟件構架動態行為建模與檢測[J].計算機研究與發展,2005,42(11):2018-2024.
[4] 卓家靖,孟晨,方丹.并行自動測試系統軟件體系結構建模[J].計算機工程,2009,35(18):72-78.
[5] 鄭睿,朱清香,李漢鈴.城市競爭力系統構成要素的定量化解析[J].燕山大學學報,2004(5):58-64.
[6] JORGENSEN P C. Software testing: a craftsman′s approach(Second Edition)[M].韓柯,杜旭濤譯.北京:機械工業出版社,2005.
[7] 陸永忠,宋駿禮,谷希謙.基于行為的軟件測試過程模型及研究[J].計算機應用,2007,27(5):1239-1240.
[8] 樊慶林,吳建國.提高軟件測試效率的方法研究[J].計算機技術與發展,2006,16(10):52-54.
[9] BASS L, CLEMENTS P, KAZMAN R. Software architecture in practice[M].孫學濤譯.北京:清華大學出版社,2004.
[10] 李慶義,岳俊梅,王愛樂.軟件測試技術[M].北京:中國鐵道出版社,2006.
[11] 杜文浩.軟件測試教程[M].北京:清華大學出版社,2008.
[12] 梅宏,王千祥,張路.軟件分析技術進展[J].計算機學報,2009,32(9):1704-1706.
[13] PRESSMAN R S. Software engineering a practitioner′s Approach[M].梅宏譯.北京:機械工業出版社, 2005.
[14] 謝新華.軟件架構設計的思想與模式[EB/OL].http://wenku.baidu.com/view/,2010.
[15] Mei Hong,Zhang Lu,Yang Fuqing. Acomponent-based software configuration management model and its supporting system[J].Computer Science and Technology,2002, 17(4):432-441.