顏樂鳴
(中國電子科技集團公司第七研究所,廣州 510310)
0 引言
軟件測試是保證軟件質量保證的重要手段,J.Myers認為軟件測試的目的是以最少人力、物力和時間投入,盡可能多地找出軟件中潛在的各種錯誤和缺陷。統計資料表明,軟件測試的工作量占軟件開發總工作量的40%以上,軟件測試的開銷占總成本開銷的30%~50%[1],而成功的軟件測試離不開對測試的組織與過程的管理,一項軟件測試工作,絕不是簡單的測試活動,而應和軟件開發一樣,遵循軟件工程原理[2]。近年來,人們對軟件質量的要求越來越高,軟件測試也越來越受到人們的重視,許多軟件企業已成立獨立的軟件測試機構,但隨著軟件復雜度的日益增高和軟件規模的不斷增大,軟件測試管理的難度和成本也隨之加大,傳統的軟件過程模型和手工管理模式已無法適應現代軟件開發模式的需要。
軟件測試過程模型是用于指導軟件測試實施的理論模型,模型的優劣直接影響軟件測試的進度和質量,因此,軟件測試過程模型是測試管理的重要參考依據,是保證測試質量和有效性的重要保證。工作流可解決在多個參與者之間利用計算機按某種預定規則實現自動傳遞文檔、信息或任務,以達到任務目標,可實現部分業務過程在計算機支持下的全自動或半自動化。為了提高測試管理的效率,本文對典型的軟件測試過程模型進行分析,在此基礎上應用工作流技術,對測試管理的整個流程進行形式化和規范化的建模,從而有效地控制和管理參與到測試活動中各種測試要素,更好的達到測試管理的目的。
軟件測試過程模型是在測試實踐的基礎上,有機結合相應的軟件開發活動所總結和抽象出的一系列測試活動規律[1-5]。該模型是對測試過程的抽象,它和軟件開發一樣,用于定義軟件測試的活動和流程,指導測試組織按照測試任務所要求的進度和質量實施測試活動。理想的軟件測試過程模型應能對軟件測試過程起到指導作用,在提高軟件測試效率的同時降低測試成本。
1.2.1 V模型

圖1 軟件測試V模型Fig.1 Softw are testing V-model
V模型是最具有代表意義的測試模式,如圖 1所示。V模型最早是Paul Rook于20世紀80年代提出,它是軟件開發瀑布模型的擴展[4]。V模型從左到右描述了基本的開發過程和測試行為,反映了測試活動與分析設計的關系。其優點在于明確表明了軟件測試的不同級別及其和開發過程各階段的對應關系。但是,V模型把測試作為編碼之后的階段,產生軟件是軟件開發最后一項活動的誤導,從而導致需求分析、軟件設計等軟件開發前期產生的軟件問題隨著過程的進展流轉至最后的驗收測試才被發現。該模型還認為軟件測試等同于測試執行,并未明確劃分軟件測試各活動之間的關系。
1.2.2 W模型
W模型由Evolutif公司提出,是V模型的發展,其強調的是軟件測試伴隨著整個軟件開發周期,并穿于整個軟件周期,而且測試對象不僅僅是程序,需求、設計及相關的文檔同樣要測試[5]。相對于 V模型,圖2所示的W模型更具可操作性,體現了測試與開發的同步性,從而有利于盡早發現軟件問題。
但是,W模型也有一定的局限性,和V模型一樣,它把軟件開發和軟件測試視為一種線性的前后關系,在如今需求不明確、變更頻繁、開發周期短等軟件開發特點下,W模型已無法支持迭代并快速響應變化。
1.3.3 H模型
為了解決 V模型和W模型的局限性,學者提出了H模型,如圖3所示。它將測試活動完全獨立出來,形成一個完全獨立的流程,將測試準備活動和測試執行活動清晰的體現出來[6]。在H模型中,軟件測試過程活動貫穿于整個產品的周期,與其他流程并發的進行,某個測試點準備就緒時,即只要測試條件成熟,測試準備活動完成,就可以從測試準備階段進行到測試執行階段。
與V模型和W模型相比,H模型的特點在于:
(1)軟件測試不再是指測試的執行,還包括諸如軟件測試需求分析、測試策劃、測試設計、數據準備、環境搭建等其他活動;
(2)軟件測試是一個獨立的過程,它貫穿于整個軟件生命周期,與其他開發階段保持并行的關系,應盡早開始和準備;
(3)根據被測軟件的特點,軟件測試是分級分層開展的。不同級別的測試活動可以是順序進行,也可迭代開展。

圖2 軟件測試W模型Fig.2 Softw are testing W-model

圖3 軟件測試H模型Fig.3 Softw are testing H-model
工作流技術是進入20世紀90年代以后計算機應用領域的一個新的研究熱點,它為工作流程自動化和構建流程應用提供基礎平臺,實現了流程邏輯與業務邏輯的分離,支持業務流程的分析和規范化定義以及業務單元的自動組裝,降低了復雜流程應用的開發難度,提高了應用系統的管理效率。
工作流管理聯盟(WfMC:Workflow Management Coalition)為工作流提供了一個標準定義:工作流是指整個或部分業務過程在計算機支持下的全自動或半自動化[7]。
由工作流的定義可以看出,工作流的主體是過程,它使多個參與者之間按照某種預定義的規則傳遞文檔、信息或任務的過程自動進行,從而實現某個預期的業務目標或促使此目標實現。簡而言之,工作流技術是在適當的時間將適當的信息傳遞給適當的人用并適當的工具進行處理。
工作流技術解決了人、組織、系統間的協作問題,通過工作流管理系統完成對工作流實例的執行。WfMC對工作流管理系統的定義為:工作流管理系統是一個完全定義、管理和執行工作流的系統,它通過計算機表示的工作流邏輯來驅動軟件有序的進行[7]。
工作流管理系統是一個軟件系統,它能夠完成業務流程的定義和管理,按照預先定義的執行步驟和業務規則調度流程示例,在業務活動或任務之間合理的分配資源,通過管理工作活動序列,調用與各種活動步驟相關的人員、資源,對業務過程提供自動化處理[8~9],它最大優點是將應用邏輯與過程邏輯分離,在不修改具體功能的情況下,通過修改過程模型改變系統功能,完成對生產經營部分過程或全過程的集成管理,可有效地把人、信息和應用工具合理地組織在一起,發揮系統的最大效能。
圖4所示為工作流參考模型,該模型中,工作流執行服務是整個工作流管理系統的核心,它為過程實例和活動提供運行環境,負責解釋和激活過程定義,并與過程所需的外部資源進行交互。工作流執行服務周圍的五個接口用以支持工作流管理的功能,通過交叉使用這五個接口,可以訪問工作流系統的服務,還控制工作流控制軟件與其他系統組件間的交互[10]。
工作流執行服務由一個或多個創建、管理和執行工作流實例化的工作流引擎(Workflow Engine)組成,通過工作流應用程序接口來訪問這些服務。工作流引擎為工作流實例提供運行時期的執行環境,可以將其看作是一個狀態變遷機器,過程或活動的實例在響應外部事件或工作流引擎的控制來改變狀態。

圖4 工作流參考模型Fig.4 W orkflow reference model
軟件測試管理是指管理者按照與被測軟件相適應的測試過程和測試方法,通過管理參與到測試活動中的對象來達到管理的目的,這些對象包括人員、測試工作產品、設施和環境條件等。在三種典型的軟件測試過程模型中,H模型充分體現了盡早測試、全程測試、獨立測試等原則,它提高了測試效率,并具有一定的靈活性,但是并沒有提出具體的應用模型。本文基于軟件測試過程H模型,結合工作流技術,建立基于工作流的軟件測試過程模型,如圖5所示。
基于圖5所示的軟件測試過程模型,在基于工作流的軟件測試過程模型中,“任務分配”相當于工作流引擎,所有的測試任務通過工作流引擎進行分配。根據工作分解結構(WBS,Work Break Structure)的思想,測試任務被分解為不同的子任務,從而形成具有多層次的樹狀結構,既包含如需求分析、用例設計等技術層面的任務,也包含項目監控、配置管理等管理層面的任務,通過人員配置和進度控制完成工作流引擎的功能。基本的測試過程如下:
(1)測試申請:由軟件開發人員或開發團隊提出測試申請,同時提供測試依據;
(2)測試策劃:由測試負責人組織進行測試策劃(含測試需求分析)和測試設計,通過工作流引擎進行任務分配;
(3)測試設計:由測試負責人組織進行分解測試需求,開展測試設計并編寫測試用例;
(4)測試執行:測試人員執行測試用例,若無缺陷,則進行測試總結,相關測試用例關閉;若發現缺陷,則由測試人員填寫缺陷報告單;
(5)確認缺陷:缺陷報告經測試負責人和軟件負責人確認后,重新回到工作流引擎,缺陷處理將作為一個新任務由工作流引擎再次進行分配;
(6)缺陷修復:由開發人員進行缺陷定位及分析,并修復缺陷;
(7)回歸測試:經修復的缺陷進入回歸測試流程,成為新任務被工作流引擎分配,重復步驟2),直至所有缺陷被正確有效的處理。
(8)資產庫:在進行測試策劃時,根據測試需求分析的結果,測試人員可使用資產庫中的測試用例資產,進行測試用例的復用。
不管是何種級別的軟件測試,在測試開始之前,都需要進行測試策劃,以確定用于測試的資源要求,包括軟硬件設備、環境條件、人員數量和技能要求等,并根據測試資源和測試項,確定進度,在此基礎上進行人員安排和任務分派。伴隨著測試的進展,不斷演化的測試用例是測試人員設計和執行的主要工作,在工作流引擎中,測試策劃、測試設計和測試執行是一個迭代的過程,通過測試負責人進行任務分配,在不影響測試任務目標的同時,實現快速響應變化,隨時調整測試策略。

圖5 基于工作流的軟件測試過程模型Fig.5 Software testing management model based on workflow
在測試執行時,測試人員通過工作流引擎對測試過程產生的軟件缺陷進行跟蹤,使缺陷得到了有效的管理,缺陷狀態的流轉如圖6所示,缺陷狀態如下:
(1)新建:經確認的缺陷,等待開發人員處理;
(2)處理中:缺陷正在被開發人員修復處理;
(3)已處理:缺陷已被修復處理,等待向測試人員發布軟件的新版本;
(4)發布:缺陷已修復處理,且軟件新版本已向測試人員發布,等待回歸測試;
(5)已修復:缺陷已被責任人修復處理,且通過回歸測試;
(6)尚未修復:缺陷已被責任人修復處理,但未通過回歸測試,等待重新處理。
(7)延期解決:開發人員判定不在當前版本進行修復的缺陷;
(8)無需解決:開發人員判定無需解決的缺陷;
(9)關閉:無需解決、或已修復并通過回歸測試的缺陷。

圖6 缺陷狀態流轉圖Fig.6 Defect state flow diagram
基于工作流的軟件測試過程模型以任務分配為核心,測試用例作為過程資產被存儲在資產庫中,可被反復分配到不同測試階段或不同的任務中,從而實現測試用例的復用,進而節約了測試時間,降低了軟件測試的成本,大大提高了軟件測試的效率。
標準測試項目通常包括項目建立、測試需求分析、測試策劃、測試設計、測試執行和測試總結六個階段的工作內容,理想的測試過程應按測試的進展順序開展各階段的工作,但在工程實踐中,軟件測試的周期短,任務緊,測試依據文檔不齊套或文實不一致等問題,導致測試質量降低,測試成功升高。基于工作流的軟件測試過程模型建立測試管理系統,可提升如下測試管理工作的效率:
(1)測試項目建立:創建項目名稱及標識、狀態測試資源信息,確定與被測對象有關的信息,如被測軟件規模、類型、編程語言、開發方等信息,便于測試負責人對測試項目的跟蹤及測試質量評估;
(2)測試需求分析:確定測試需求及其標識、需求優先級、需求追蹤關系等,執行測試需求評審流程;
(3)測試策劃:確定測試策略、測試組成員、資源、進度、風險分析等,同時進行任務的人員配置,執行測試計劃的評審流程;
(4)測試設計:設計測試用例并確定其標識,確定用例執行順序,執行測試說明評審流程;
(5)測試執行:記錄測試執行數據、缺陷數據,執行缺陷處理流程;
(6)測試總結:整理和分析測試數據,執行測試報告評審流程。
該模型同樣適用于更改驗證類型的項目,即當某一被測軟件對于之前已結束測試的版本更改不大時進行的軟件測試。可通過基于工作流的軟件測試過程模型建立測試管理系統,在其資產庫提取被測軟件的項目數據和信息,同時可進行變更比對,為測試人員提供驗證的測試用例。
在基于工作流的軟件測試過程模型中,很好的解決了人、組織、系統間的協同關系,使得任務分配、測試人員配置、進度控制可協調的工作,從而更好的發揮人員的能動性,使測試工作更有效,測試工作質量更高。
本文對典型的軟件測試過程模型進行分析,結合工作流技術,給出了一種基于工作流的軟件測試過程模型,該模型以任務分配為核心,使測試過程更符合工程實踐,在保證測試質量的同時縮短了測試周期,為深入探討和改進軟件測試過程的管理提供了基礎研究。結合工作流技術,測試組織在使用工具進行測試管理時,可獲得整個測試周期內任務執行的過程數據,從這些任務數據出發,不斷分析當前過程執行的有效性和效率。對工作流數據進行挖掘,將分析結果用于指導模型的調整和改進,使模型更具可操作性和指導性,實現測試過程持續改進,是本文下一步研究重點。
[1] 夏世峰. 工作流軟件測試技術的研究與實踐[D]. 北京: 北京郵電大學, 2006.
[2] 蔡建平, 王安生, 修佳鵬. 軟件測試方法與技術[M]. 北京:清華大學出版社, 2014.
[3] 余久久, 張佑生. 軟件測試過程模型研究綜述[J]. 人類工效學, 2012, 18(1): 91-95.
[4] 張俊萍, 朱小冬, 王毅剛, 等. 對軟件測試過程模型的思考[J]. 微計算機信息, 2006, 27(3): 22-24.
[5] 胡瑋. 軟件測試過程模型的改進與應用[D]. 杭州: 浙江大學, 2006.
[6] 吳慧韞, 李卓群. 基于H模型的軟件測試管理應用模型研究[J]. 計算機工程與設計, 2006. 27(11): 1993-1995.
[7] David Hollingsworth, TC00-1003-1995. The workflow reference model[S]. UK: Workflow Management Coalition,1995.
[8] 李妍, 方少波, 么強. 一種基于工作流的軟件可靠性評估方法[J]. 計算機技術與發展, 2014. 24(3): 34-38.
[9] 陳亮, 高建民, 陳富民等. 基于工作流挖掘的質量管理過程改進研究[J]. 計算機集成制造系統, 2006, 12(4): 603-608.
[10] Wil van der Aalst, Kees van Hee. 工作流管理: 模型、方法和系統[M]. 王建民等譯. 北京: 清華大學出版社, 2004.