軟件測試項目的啟動、規(guī)劃與需求分析
軟件測試項目的啟動、規(guī)劃以及測試項目需求分析往往是很多軟件服務(wù)型企業(yè)的薄弱環(huán)節(jié)所在。本文圍繞該難點問題,重點討論了這兩個階段所應(yīng)進行的項目活動以及相關(guān)工作流程。
一、軟件測試項目啟動與規(guī)劃
一般地,項目啟動過程組包括兩個過程[參見PMBOK2004版]:即制定項目章程和制定項目初步范圍說明書;而項目規(guī)劃過程組則會綜合項目的成本、范圍、時間、質(zhì)量、風(fēng)險、人力、溝通、采購等因素制定項目計劃,該項目計劃將用于指導(dǎo)項目的實際執(zhí)行。
對任一項目而言,有三個文件是非常重要的。即:項目章程、項目范圍說明書,項目管理計劃。這三個文件均產(chǎn)生于項目啟動階段和項目規(guī)劃階段。其中項目章程被認為是三大文件之首(項目章程、項目范圍說明書,項目管理計劃)。一個項目,不論大小,都應(yīng)該有項目章程。一個典型的項目章程包括如下內(nèi)容:
1)項目名稱及背景描述;
2)項目經(jīng)理任命及職責(zé)范圍界定;
3)項目業(yè)務(wù)需求描述;
4)項目發(fā)起的原因;
5)主要項目干系人及其初步需求;
6)產(chǎn)品及預(yù)期交付成果描述;
7)項目假設(shè)和約束條件。項目章程由項目發(fā)起人(Sponsor)簽發(fā),自簽發(fā)之日起,項目經(jīng)理即獲得法定權(quán)力。
項目經(jīng)理在獲得法定權(quán)力之后的第一動作是制定項目初步范圍說明書。為了制定這份文檔,他/她將廣泛地收集來自項目發(fā)起人的需求,以便在項目計劃正式編制之前,與項目發(fā)起人在項目范圍的理解上達成一致。項目初步范圍說明書還將在后續(xù)項目范圍規(guī)劃過程中進一步細化,并融入項目客戶、執(zhí)行組織、項目干系人等各方面需求,進而形成完整的項目范圍說明書。項目初步范圍說明書編制完成以后,項目經(jīng)理將進入項目計劃編制階段。
這個階段將會涉及項目管理方方面面的規(guī)劃、計劃。比較典型的有項目范圍基線、項目成本基線、項目進度計劃、項目質(zhì)量計劃、項目風(fēng)險分析及應(yīng)對計劃、人力資源計劃、項目溝通計劃以及項目采購計劃。這些計劃、規(guī)劃經(jīng)過權(quán)衡、調(diào)整,最終將集成為一個完整的項目管理計劃。項目管理計劃經(jīng)由項目發(fā)起人、高級管理層審批以后,即可生效。此后,項目經(jīng)理將召開項目開工會議(Kickoff meeting),宣布項目正式開始進入執(zhí)行階段。
項目啟動階段的項目章程和項目初步范圍說明書(或SOW),也可以體現(xiàn)在分包或采購合同中。這在軟件外包服務(wù)型企業(yè)中最為常見。通常,伴隨合同到達項目經(jīng)理手中的還有項目建議書(Project Proposal),項目建議書由項目發(fā)起人制定,內(nèi)容和項目章程中有關(guān)產(chǎn)品、可交付成果的描述大致類似,此外,還應(yīng)包括對項目經(jīng)理成功完成此項目的一些指導(dǎo)性建議。項目經(jīng)理根據(jù)合同、SOW以及Project Proposal進行綜合考慮,與相關(guān)干系人磋商,在項目團隊相關(guān)專家的幫助下,制定出合適的項目管理計劃。
上面討論的是一般項目啟動過程組與規(guī)劃過程組。具體到測試項目的啟動與規(guī)劃,工作內(nèi)容也是類似的。讀者朋友請根據(jù)所在測試項目的特點做適當調(diào)整。需要交待清楚的是測試項目啟動與規(guī)劃過程組有可能與其他六個過程組有重疊。比如,規(guī)劃過程組有可能在整個項目生命期內(nèi)都有更新和完善(典型的有滾動波浪式規(guī)劃)。
對于整周期軟件開發(fā)項目的測試而言,上述過程組的內(nèi)容會有較大的差異。
比如:項目章程將重點關(guān)注開發(fā),而不會過多討論測試相關(guān)的工作。對于這一類型的軟件測試,筆者建議在任命開發(fā)項目經(jīng)理的同時,由項目經(jīng)理[適用于項目型或強矩陣組織]或高層經(jīng)理[適用于弱矩陣或職能型組織]指定項目測試經(jīng)理。測試經(jīng)理應(yīng)根據(jù)項目章程、項目初步范圍說明書和項目建議書盡早開始軟件測試相關(guān)規(guī)劃和設(shè)計(即會先粗略地進行軟件測試需求分析和軟件測試設(shè)計,以后再進一步細化),并和項目經(jīng)理溝通、協(xié)調(diào),以將一些重要的信息及時反映給項目經(jīng)理,從而使項目計劃能較好地支持測試工作的開展。
二、軟件測試項目需求分析
理論上,軟件測試需求是源于軟件需求的,而軟件需求又是源于用戶需求的。然而,有些時候在分析軟件測試需求時并不存在已經(jīng)文檔化的軟件需求規(guī)格說明。
在這種情況下,要分析軟件測試需求分析可能仍然需要追溯到用戶需求(當發(fā)生這種情況時,普通測試工程師會很吃驚地發(fā)現(xiàn)自己原來還肩負著需求開發(fā)工程師的部分職責(zé)。是的,事實上,資深的軟件測試工程師會發(fā)現(xiàn)軟件測試這個職位幾乎涉及所有的開發(fā)技能和部分管理技能。)由于后者涉及需求工程的專門知識,本文略過不做細述;這里重點討論前者。在一個規(guī)范化的軟件需求規(guī)格說明中,用戶需求是由更高層次的業(yè)務(wù)需求(體現(xiàn)在項目章程、SOW、項目建議書等文檔中)細化而成,它通常描述了用戶使用該軟件系統(tǒng)會涉及到的不同的執(zhí)行路徑、工作邏輯以及所預(yù)期的處理結(jié)果。
在UML表示方法中,用戶需求通常通過Use Case來進行刻畫。接下來,用戶需求將進一步轉(zhuǎn)化為三類需求項,即功能需求項、性能需求項以及約束性需求項。這三類需求項就是通常意義上的軟件需求項。管理這三類需求項的矩陣被稱為需求矩陣。
理論上,在測試資源許可并且確有必要的前提下,測試的使命將是驗證和確認待開發(fā)的軟件及其中間產(chǎn)品滿足需求矩陣各個需求項。(注意:為了簡化討論,這里筆者沒有把需求的驗證與確認納入進來,實際上這部分工作也是軟件測試工作的重要組成部分。詳細論述請參閱拙文《試論軟件測試學(xué)科架構(gòu)建設(shè)》)然而,幾乎沒有幾個公司或開發(fā)團隊能夠提供這類測試所需的諸多的資源,此時,一種可行的策略是將待測試的軟件需求項按照優(yōu)先關(guān)系進行排序,以幫助測試經(jīng)理決策在既定資源的情況下,應(yīng)該如何統(tǒng)籌安排測試工作。
軟件需求項是測試需求分析的起點,這一點在工程實踐中并不絕對。
對于不同階段的測試(這里主要指單元測試、集成測試、系統(tǒng)測試和驗收測試,暫不考慮驗證技術(shù)和需求設(shè)計確認),測試需求開發(fā)所涉及的工作內(nèi)容和方法都會略有差異。例如,如果是一個驗收測試,那么,除了個別的需求需要做進一步明確外,幾乎可以將測試需求等同于用戶需求和業(yè)務(wù)需求(由于該類測試是以客戶為主體,因此并不需要向下追溯到軟件需求);
又如,如果是系統(tǒng)測試,除了需要對不具備可測試性的軟件需求項進一步開發(fā)外,幾乎可以對軟件需求和測試需求不做區(qū)分。再如,如果是集成測試,測試需求應(yīng)該從概要設(shè)計規(guī)格說明中導(dǎo)出。如果尚不存在概要設(shè)計規(guī)格說明,就需要從軟件需求規(guī)格說明出發(fā),與軟件設(shè)計人員協(xié)同工作,具體定出構(gòu)成系統(tǒng)的各個模塊、子系統(tǒng)、分系統(tǒng)的功能、性能、約束性條件以及相互接口關(guān)系。根據(jù)協(xié)同工作的結(jié)果,開發(fā)出對應(yīng)的測試需求。最后,如果是單元測試,測試需求應(yīng)該從詳細設(shè)計規(guī)格說明中導(dǎo)出。如果項目不存在概要設(shè)計規(guī)格說明,就需要從概要設(shè)計規(guī)格說明出發(fā),與軟件設(shè)計人員明確每個模塊內(nèi)部的對象屬性與方法以及對象與對象間的通信關(guān)系。根據(jù)此結(jié)果,進一步開發(fā)相應(yīng)的測試需求。相應(yīng)地,上一節(jié)所說的對軟件需求項進行優(yōu)先關(guān)系排序在實踐中要變通地理解為對測試需求項進行優(yōu)先關(guān)系排序。
讀者朋友可能會問,對于整周期的開發(fā)項目,以上論述是否意味著測試需求開發(fā)的依據(jù)文檔是否要根據(jù)測試所處的階段而不斷調(diào)整呢?是的,筆者認為這也是完全必要的。我們不能指望軟件需求項能夠描述清楚集成或單元測試階段的測試需求。測試需求的開發(fā)總是有賴于相應(yīng)層次的軟件規(guī)格說明書(只有在開發(fā)團隊不能提供的情況下才確有必要循著“詳細設(shè)計規(guī)格說明->概要設(shè)計規(guī)格說明->軟件需求規(guī)格說明->用戶需求規(guī)格說明->項目章程、合同、項目建議書、工作說明書等”的順序往前追溯)。通常相關(guān)依據(jù)文檔的可測試性越好,測試需求開發(fā)所需要的工作量越少。
除了對軟件需求分析、測試需求項做優(yōu)先關(guān)系排序、對不具備可測試性或不確定的需求進一步細化、明確化之外,測試需求開發(fā)階段的工作還包括分析各測試需求項之間可能的時間關(guān)系排序。哪些測試需求項應(yīng)該先測,哪些可以延后,那些是可以并行等等,都需要在測試需求開發(fā)階段一并分析清楚。
【編輯推薦】