顏樂鳴
(中國電子科技集團公司第七研究所,廣州 510310)
0 引言
軟件測試是保證軟件質(zhì)量保證的重要手段,J.Myers認(rèn)為軟件測試的目的是以最少人力、物力和時間投入,盡可能多地找出軟件中潛在的各種錯誤和缺陷。統(tǒng)計資料表明,軟件測試的工作量占軟件開發(fā)總工作量的40%以上,軟件測試的開銷占總成本開銷的30%~50%[1],而成功的軟件測試離不開對測試的組織與過程的管理,一項軟件測試工作,絕不是簡單的測試活動,而應(yīng)和軟件開發(fā)一樣,遵循軟件工程原理[2]。近年來,人們對軟件質(zhì)量的要求越來越高,軟件測試也越來越受到人們的重視,許多軟件企業(yè)已成立獨立的軟件測試機構(gòu),但隨著軟件復(fù)雜度的日益增高和軟件規(guī)模的不斷增大,軟件測試管理的難度和成本也隨之加大,傳統(tǒng)的軟件過程模型和手工管理模式已無法適應(yīng)現(xiàn)代軟件開發(fā)模式的需要。
軟件測試過程模型是用于指導(dǎo)軟件測試實施的理論模型,模型的優(yōu)劣直接影響軟件測試的進(jìn)度和質(zhì)量,因此,軟件測試過程模型是測試管理的重要參考依據(jù),是保證測試質(zhì)量和有效性的重要保證。工作流可解決在多個參與者之間利用計算機按某種預(yù)定規(guī)則實現(xiàn)自動傳遞文檔、信息或任務(wù),以達(dá)到任務(wù)目標(biāo),可實現(xiàn)部分業(yè)務(wù)過程在計算機支持下的全自動或半自動化。為了提高測試管理的效率,本文對典型的軟件測試過程模型進(jìn)行分析,在此基礎(chǔ)上應(yīng)用工作流技術(shù),對測試管理的整個流程進(jìn)行形式化和規(guī)范化的建模,從而有效地控制和管理參與到測試活動中各種測試要素,更好的達(dá)到測試管理的目的。
軟件測試過程模型是在測試實踐的基礎(chǔ)上,有機結(jié)合相應(yīng)的軟件開發(fā)活動所總結(jié)和抽象出的一系列測試活動規(guī)律[1-5]。該模型是對測試過程的抽象,它和軟件開發(fā)一樣,用于定義軟件測試的活動和流程,指導(dǎo)測試組織按照測試任務(wù)所要求的進(jìn)度和質(zhì)量實施測試活動。理想的軟件測試過程模型應(yīng)能對軟件測試過程起到指導(dǎo)作用,在提高軟件測試效率的同時降低測試成本。
1.2.1 V模型
圖1 軟件測試V模型Fig.1 Softw are testing V-model
V模型是最具有代表意義的測試模式,如圖 1所示。V模型最早是Paul Rook于20世紀(jì)80年代提出,它是軟件開發(fā)瀑布模型的擴展[4]。V模型從左到右描述了基本的開發(fā)過程和測試行為,反映了測試活動與分析設(shè)計的關(guān)系。其優(yōu)點在于明確表明了軟件測試的不同級別及其和開發(fā)過程各階段的對應(yīng)關(guān)系。但是,V模型把測試作為編碼之后的階段,產(chǎn)生軟件是軟件開發(fā)最后一項活動的誤導(dǎo),從而導(dǎo)致需求分析、軟件設(shè)計等軟件開發(fā)前期產(chǎn)生的軟件問題隨著過程的進(jìn)展流轉(zhuǎn)至最后的驗收測試才被發(fā)現(xiàn)。該模型還認(rèn)為軟件測試等同于測試執(zhí)行,并未明確劃分軟件測試各活動之間的關(guān)系。
1.2.2 W模型
W模型由Evolutif公司提出,是V模型的發(fā)展,其強調(diào)的是軟件測試伴隨著整個軟件開發(fā)周期,并穿于整個軟件周期,而且測試對象不僅僅是程序,需求、設(shè)計及相關(guān)的文檔同樣要測試[5]。相對于 V模型,圖2所示的W模型更具可操作性,體現(xiàn)了測試與開發(fā)的同步性,從而有利于盡早發(fā)現(xiàn)軟件問題。
但是,W模型也有一定的局限性,和V模型一樣,它把軟件開發(fā)和軟件測試視為一種線性的前后關(guān)系,在如今需求不明確、變更頻繁、開發(fā)周期短等軟件開發(fā)特點下,W模型已無法支持迭代并快速響應(yīng)變化。
1.3.3 H模型
為了解決 V模型和W模型的局限性,學(xué)者提出了H模型,如圖3所示。它將測試活動完全獨立出來,形成一個完全獨立的流程,將測試準(zhǔn)備活動和測試執(zhí)行活動清晰的體現(xiàn)出來[6]。在H模型中,軟件測試過程活動貫穿于整個產(chǎn)品的周期,與其他流程并發(fā)的進(jìn)行,某個測試點準(zhǔn)備就緒時,即只要測試條件成熟,測試準(zhǔn)備活動完成,就可以從測試準(zhǔn)備階段進(jìn)行到測試執(zhí)行階段。
與V模型和W模型相比,H模型的特點在于:
(1)軟件測試不再是指測試的執(zhí)行,還包括諸如軟件測試需求分析、測試策劃、測試設(shè)計、數(shù)據(jù)準(zhǔn)備、環(huán)境搭建等其他活動;
(2)軟件測試是一個獨立的過程,它貫穿于整個軟件生命周期,與其他開發(fā)階段保持并行的關(guān)系,應(yīng)盡早開始和準(zhǔn)備;
(3)根據(jù)被測軟件的特點,軟件測試是分級分層開展的。不同級別的測試活動可以是順序進(jìn)行,也可迭代開展。
圖2 軟件測試W模型Fig.2 Softw are testing W-model
圖3 軟件測試H模型Fig.3 Softw are testing H-model
工作流技術(shù)是進(jìn)入20世紀(jì)90年代以后計算機應(yīng)用領(lǐng)域的一個新的研究熱點,它為工作流程自動化和構(gòu)建流程應(yīng)用提供基礎(chǔ)平臺,實現(xiàn)了流程邏輯與業(yè)務(wù)邏輯的分離,支持業(yè)務(wù)流程的分析和規(guī)范化定義以及業(yè)務(wù)單元的自動組裝,降低了復(fù)雜流程應(yīng)用的開發(fā)難度,提高了應(yīng)用系統(tǒng)的管理效率。
工作流管理聯(lián)盟(WfMC:Workflow Management Coalition)為工作流提供了一個標(biāo)準(zhǔn)定義:工作流是指整個或部分業(yè)務(wù)過程在計算機支持下的全自動或半自動化[7]。
由工作流的定義可以看出,工作流的主體是過程,它使多個參與者之間按照某種預(yù)定義的規(guī)則傳遞文檔、信息或任務(wù)的過程自動進(jìn)行,從而實現(xiàn)某個預(yù)期的業(yè)務(wù)目標(biāo)或促使此目標(biāo)實現(xiàn)。簡而言之,工作流技術(shù)是在適當(dāng)?shù)臅r間將適當(dāng)?shù)男畔鬟f給適當(dāng)?shù)娜擞貌⑦m當(dāng)?shù)墓ぞ哌M(jìn)行處理。
工作流技術(shù)解決了人、組織、系統(tǒng)間的協(xié)作問題,通過工作流管理系統(tǒng)完成對工作流實例的執(zhí)行。WfMC對工作流管理系統(tǒng)的定義為:工作流管理系統(tǒng)是一個完全定義、管理和執(zhí)行工作流的系統(tǒng),它通過計算機表示的工作流邏輯來驅(qū)動軟件有序的進(jìn)行[7]。
工作流管理系統(tǒng)是一個軟件系統(tǒng),它能夠完成業(yè)務(wù)流程的定義和管理,按照預(yù)先定義的執(zhí)行步驟和業(yè)務(wù)規(guī)則調(diào)度流程示例,在業(yè)務(wù)活動或任務(wù)之間合理的分配資源,通過管理工作活動序列,調(diào)用與各種活動步驟相關(guān)的人員、資源,對業(yè)務(wù)過程提供自動化處理[8~9],它最大優(yōu)點是將應(yīng)用邏輯與過程邏輯分離,在不修改具體功能的情況下,通過修改過程模型改變系統(tǒng)功能,完成對生產(chǎn)經(jīng)營部分過程或全過程的集成管理,可有效地把人、信息和應(yīng)用工具合理地組織在一起,發(fā)揮系統(tǒng)的最大效能。
圖4所示為工作流參考模型,該模型中,工作流執(zhí)行服務(wù)是整個工作流管理系統(tǒng)的核心,它為過程實例和活動提供運行環(huán)境,負(fù)責(zé)解釋和激活過程定義,并與過程所需的外部資源進(jìn)行交互。工作流執(zhí)行服務(wù)周圍的五個接口用以支持工作流管理的功能,通過交叉使用這五個接口,可以訪問工作流系統(tǒng)的服務(wù),還控制工作流控制軟件與其他系統(tǒng)組件間的交互[10]。
工作流執(zhí)行服務(wù)由一個或多個創(chuàng)建、管理和執(zhí)行工作流實例化的工作流引擎(Workflow Engine)組成,通過工作流應(yīng)用程序接口來訪問這些服務(wù)。工作流引擎為工作流實例提供運行時期的執(zhí)行環(huán)境,可以將其看作是一個狀態(tài)變遷機器,過程或活動的實例在響應(yīng)外部事件或工作流引擎的控制來改變狀態(tài)。
圖4 工作流參考模型Fig.4 W orkflow reference model
軟件測試管理是指管理者按照與被測軟件相適應(yīng)的測試過程和測試方法,通過管理參與到測試活動中的對象來達(dá)到管理的目的,這些對象包括人員、測試工作產(chǎn)品、設(shè)施和環(huán)境條件等。在三種典型的軟件測試過程模型中,H模型充分體現(xiàn)了盡早測試、全程測試、獨立測試等原則,它提高了測試效率,并具有一定的靈活性,但是并沒有提出具體的應(yīng)用模型。本文基于軟件測試過程H模型,結(jié)合工作流技術(shù),建立基于工作流的軟件測試過程模型,如圖5所示。
基于圖5所示的軟件測試過程模型,在基于工作流的軟件測試過程模型中,“任務(wù)分配”相當(dāng)于工作流引擎,所有的測試任務(wù)通過工作流引擎進(jìn)行分配。根據(jù)工作分解結(jié)構(gòu)(WBS,Work Break Structure)的思想,測試任務(wù)被分解為不同的子任務(wù),從而形成具有多層次的樹狀結(jié)構(gòu),既包含如需求分析、用例設(shè)計等技術(shù)層面的任務(wù),也包含項目監(jiān)控、配置管理等管理層面的任務(wù),通過人員配置和進(jìn)度控制完成工作流引擎的功能。基本的測試過程如下:
(1)測試申請:由軟件開發(fā)人員或開發(fā)團隊提出測試申請,同時提供測試依據(jù);
(2)測試策劃:由測試負(fù)責(zé)人組織進(jìn)行測試策劃(含測試需求分析)和測試設(shè)計,通過工作流引擎進(jìn)行任務(wù)分配;
(3)測試設(shè)計:由測試負(fù)責(zé)人組織進(jìn)行分解測試需求,開展測試設(shè)計并編寫測試用例;
(4)測試執(zhí)行:測試人員執(zhí)行測試用例,若無缺陷,則進(jìn)行測試總結(jié),相關(guān)測試用例關(guān)閉;若發(fā)現(xiàn)缺陷,則由測試人員填寫缺陷報告單;
(5)確認(rèn)缺陷:缺陷報告經(jīng)測試負(fù)責(zé)人和軟件負(fù)責(zé)人確認(rèn)后,重新回到工作流引擎,缺陷處理將作為一個新任務(wù)由工作流引擎再次進(jìn)行分配;
(6)缺陷修復(fù):由開發(fā)人員進(jìn)行缺陷定位及分析,并修復(fù)缺陷;
(7)回歸測試:經(jīng)修復(fù)的缺陷進(jìn)入回歸測試流程,成為新任務(wù)被工作流引擎分配,重復(fù)步驟2),直至所有缺陷被正確有效的處理。
(8)資產(chǎn)庫:在進(jìn)行測試策劃時,根據(jù)測試需求分析的結(jié)果,測試人員可使用資產(chǎn)庫中的測試用例資產(chǎn),進(jìn)行測試用例的復(fù)用。
不管是何種級別的軟件測試,在測試開始之前,都需要進(jìn)行測試策劃,以確定用于測試的資源要求,包括軟硬件設(shè)備、環(huán)境條件、人員數(shù)量和技能要求等,并根據(jù)測試資源和測試項,確定進(jìn)度,在此基礎(chǔ)上進(jìn)行人員安排和任務(wù)分派。伴隨著測試的進(jìn)展,不斷演化的測試用例是測試人員設(shè)計和執(zhí)行的主要工作,在工作流引擎中,測試策劃、測試設(shè)計和測試執(zhí)行是一個迭代的過程,通過測試負(fù)責(zé)人進(jìn)行任務(wù)分配,在不影響測試任務(wù)目標(biāo)的同時,實現(xiàn)快速響應(yīng)變化,隨時調(diào)整測試策略。
圖5 基于工作流的軟件測試過程模型Fig.5 Software testing management model based on workflow
在測試執(zhí)行時,測試人員通過工作流引擎對測試過程產(chǎn)生的軟件缺陷進(jìn)行跟蹤,使缺陷得到了有效的管理,缺陷狀態(tài)的流轉(zhuǎn)如圖6所示,缺陷狀態(tài)如下:
(1)新建:經(jīng)確認(rèn)的缺陷,等待開發(fā)人員處理;
(2)處理中:缺陷正在被開發(fā)人員修復(fù)處理;
(3)已處理:缺陷已被修復(fù)處理,等待向測試人員發(fā)布軟件的新版本;
(4)發(fā)布:缺陷已修復(fù)處理,且軟件新版本已向測試人員發(fā)布,等待回歸測試;
(5)已修復(fù):缺陷已被責(zé)任人修復(fù)處理,且通過回歸測試;
(6)尚未修復(fù):缺陷已被責(zé)任人修復(fù)處理,但未通過回歸測試,等待重新處理。
(7)延期解決:開發(fā)人員判定不在當(dāng)前版本進(jìn)行修復(fù)的缺陷;
(8)無需解決:開發(fā)人員判定無需解決的缺陷;
(9)關(guān)閉:無需解決、或已修復(fù)并通過回歸測試的缺陷。
圖6 缺陷狀態(tài)流轉(zhuǎn)圖Fig.6 Defect state flow diagram
基于工作流的軟件測試過程模型以任務(wù)分配為核心,測試用例作為過程資產(chǎn)被存儲在資產(chǎn)庫中,可被反復(fù)分配到不同測試階段或不同的任務(wù)中,從而實現(xiàn)測試用例的復(fù)用,進(jìn)而節(jié)約了測試時間,降低了軟件測試的成本,大大提高了軟件測試的效率。
標(biāo)準(zhǔn)測試項目通常包括項目建立、測試需求分析、測試策劃、測試設(shè)計、測試執(zhí)行和測試總結(jié)六個階段的工作內(nèi)容,理想的測試過程應(yīng)按測試的進(jìn)展順序開展各階段的工作,但在工程實踐中,軟件測試的周期短,任務(wù)緊,測試依據(jù)文檔不齊套或文實不一致等問題,導(dǎo)致測試質(zhì)量降低,測試成功升高?;诠ぷ髁鞯能浖y試過程模型建立測試管理系統(tǒng),可提升如下測試管理工作的效率:
(1)測試項目建立:創(chuàng)建項目名稱及標(biāo)識、狀態(tài)測試資源信息,確定與被測對象有關(guān)的信息,如被測軟件規(guī)模、類型、編程語言、開發(fā)方等信息,便于測試負(fù)責(zé)人對測試項目的跟蹤及測試質(zhì)量評估;
(2)測試需求分析:確定測試需求及其標(biāo)識、需求優(yōu)先級、需求追蹤關(guān)系等,執(zhí)行測試需求評審流程;
(3)測試策劃:確定測試策略、測試組成員、資源、進(jìn)度、風(fēng)險分析等,同時進(jìn)行任務(wù)的人員配置,執(zhí)行測試計劃的評審流程;
(4)測試設(shè)計:設(shè)計測試用例并確定其標(biāo)識,確定用例執(zhí)行順序,執(zhí)行測試說明評審流程;
(5)測試執(zhí)行:記錄測試執(zhí)行數(shù)據(jù)、缺陷數(shù)據(jù),執(zhí)行缺陷處理流程;
(6)測試總結(jié):整理和分析測試數(shù)據(jù),執(zhí)行測試報告評審流程。
該模型同樣適用于更改驗證類型的項目,即當(dāng)某一被測軟件對于之前已結(jié)束測試的版本更改不大時進(jìn)行的軟件測試??赏ㄟ^基于工作流的軟件測試過程模型建立測試管理系統(tǒng),在其資產(chǎn)庫提取被測軟件的項目數(shù)據(jù)和信息,同時可進(jìn)行變更比對,為測試人員提供驗證的測試用例。
在基于工作流的軟件測試過程模型中,很好的解決了人、組織、系統(tǒng)間的協(xié)同關(guān)系,使得任務(wù)分配、測試人員配置、進(jìn)度控制可協(xié)調(diào)的工作,從而更好的發(fā)揮人員的能動性,使測試工作更有效,測試工作質(zhì)量更高。
本文對典型的軟件測試過程模型進(jìn)行分析,結(jié)合工作流技術(shù),給出了一種基于工作流的軟件測試過程模型,該模型以任務(wù)分配為核心,使測試過程更符合工程實踐,在保證測試質(zhì)量的同時縮短了測試周期,為深入探討和改進(jìn)軟件測試過程的管理提供了基礎(chǔ)研究。結(jié)合工作流技術(shù),測試組織在使用工具進(jìn)行測試管理時,可獲得整個測試周期內(nèi)任務(wù)執(zhí)行的過程數(shù)據(jù),從這些任務(wù)數(shù)據(jù)出發(fā),不斷分析當(dāng)前過程執(zhí)行的有效性和效率。對工作流數(shù)據(jù)進(jìn)行挖掘,將分析結(jié)果用于指導(dǎo)模型的調(diào)整和改進(jìn),使模型更具可操作性和指導(dǎo)性,實現(xiàn)測試過程持續(xù)改進(jìn),是本文下一步研究重點。
[1] 夏世峰. 工作流軟件測試技術(shù)的研究與實踐[D]. 北京: 北京郵電大學(xué), 2006.
[2] 蔡建平, 王安生, 修佳鵬. 軟件測試方法與技術(shù)[M]. 北京:清華大學(xué)出版社, 2014.
[3] 余久久, 張佑生. 軟件測試過程模型研究綜述[J]. 人類工效學(xué), 2012, 18(1): 91-95.
[4] 張俊萍, 朱小冬, 王毅剛, 等. 對軟件測試過程模型的思考[J]. 微計算機信息, 2006, 27(3): 22-24.
[5] 胡瑋. 軟件測試過程模型的改進(jìn)與應(yīng)用[D]. 杭州: 浙江大學(xué), 2006.
[6] 吳慧韞, 李卓群. 基于H模型的軟件測試管理應(yīng)用模型研究[J]. 計算機工程與設(shè)計, 2006. 27(11): 1993-1995.
[7] David Hollingsworth, TC00-1003-1995. The workflow reference model[S]. UK: Workflow Management Coalition,1995.
[8] 李妍, 方少波, 么強. 一種基于工作流的軟件可靠性評估方法[J]. 計算機技術(shù)與發(fā)展, 2014. 24(3): 34-38.
[9] 陳亮, 高建民, 陳富民等. 基于工作流挖掘的質(zhì)量管理過程改進(jìn)研究[J]. 計算機集成制造系統(tǒng), 2006, 12(4): 603-608.
[10] Wil van der Aalst, Kees van Hee. 工作流管理: 模型、方法和系統(tǒng)[M]. 王建民等譯. 北京: 清華大學(xué)出版社, 2004.