目經(jīng)理溝通、協(xié)調(diào),以將一些重要的信息及時(shí)反映給項(xiàng)目經(jīng)理,從而使項(xiàng)目計(jì)劃能較好地支持測試工作的開展。
二、軟件測試需求分析
理論上,軟件測試需求是源于軟件需求的,而軟件需求又是源于用戶需求的。然而,有些時(shí)候在分析軟件測試需求時(shí)并不存在已經(jīng)文檔化的軟件需求規(guī)格說明。在這種情況下,要分析軟件測試需求可能仍然需要追溯到用戶需求(當(dāng)發(fā)生這種情況時(shí),普通測試工程師會很吃驚地發(fā)現(xiàn)自己原來還肩負(fù)著需求開發(fā)工程師的部分職責(zé)。是的,事實(shí)上,資深的軟件測試工程師會發(fā)現(xiàn)軟件測試這個職位幾乎涉及所有的開發(fā)技能和部分管理技能。)由于后者涉及需求工程的專門知識,本文略過不做細(xì)述;這里重點(diǎn)討論前者。在一個規(guī)范化的軟件需求規(guī)格說明中,用戶需求是由更高層次的業(yè)務(wù)需求(體現(xiàn)在項(xiàng)目章程、SOW、項(xiàng)目建議書等文檔中)細(xì)化而成,它通常描述了用戶使用該軟件系統(tǒng)會涉及到的不同的執(zhí)行路徑、工作邏輯以及所預(yù)期的處理結(jié)果。在UML表示方法中,用戶需求通常通過Use Case來進(jìn)行刻畫。接下來,用戶需求將進(jìn)一步轉(zhuǎn)化為三類需求項(xiàng),即功能需求項(xiàng)、性能需求項(xiàng)以及約束性需求項(xiàng)。這三類需求項(xiàng)就是通常意義上的軟件需求項(xiàng)。管理這三類需求項(xiàng)的矩陣被稱為需求矩陣。
理論上,在測試資源許可并且確有必要的前提下,測試的使命將是驗(yàn)證和確認(rèn)待開發(fā)的軟件及其中間產(chǎn)品滿足需求矩陣各個需求項(xiàng)。(注意:為了簡化討論,這里筆者沒有把需求的驗(yàn)證與確認(rèn)納入進(jìn)來,實(shí)際上這部分工作也是軟件測試工作的重要組成部分。詳細(xì)論述請參閱拙文《試論軟件測試學(xué)科架構(gòu)建設(shè)》)然而,幾乎沒有幾個公司或開發(fā)團(tuán)隊(duì)能夠提供這類測試所需的諸多的資源,此時(shí),一種可行的策略是將待測試的軟件需求項(xiàng)按照優(yōu)先關(guān)系進(jìn)行排序,以幫助測試經(jīng)理決策在既定資源的情況下,應(yīng)該如何統(tǒng)籌安排測試工作。
軟件需求項(xiàng)是測試需求分析的起點(diǎn),這一點(diǎn)在工程實(shí)踐中并不絕對。對于不同階段的測試(這里主要指單元測試、集成測試、系統(tǒng)測試和驗(yàn)收測試,暫不考慮驗(yàn)證技術(shù)和需求設(shè)計(jì)確認(rèn)),測試需求開發(fā)所涉及的工作內(nèi)容和方法都會略有差異。例如,如果是一個驗(yàn)收測試,那么,除了個別的需求需要做進(jìn)一步明確外,幾乎可以將測試需求等同于用戶需求和業(yè)務(wù)需求(由于該類測試是以客戶為主體,因此并不需要向下追溯到軟件需求);又如,如果是系統(tǒng)測試,除了需要對不具備可測試性的軟件需求項(xiàng)進(jìn)一步開發(fā)外,幾乎可以對軟件需求和測試需求不做區(qū)分。再如,如果是集成測試,測試需求應(yīng)該從概要設(shè)計(jì)規(guī)格說明中導(dǎo)出。如果尚不存在概要設(shè)計(jì)規(guī)格說明,就需要從軟件需求規(guī)格說明出發(fā),與軟件設(shè)計(jì)人員協(xié)同工作,具體定出構(gòu)成系統(tǒng)的各個模塊、子系統(tǒng)、分系統(tǒng)的功能、性能、約束性條件以及相互接口關(guān)系。根據(jù)協(xié)同工作的結(jié)果,開發(fā)出對應(yīng)的測試需求。最后,如果是單元測試,測試需求應(yīng)該從詳細(xì)設(shè)計(jì)規(guī)格說明中導(dǎo)出。如果項(xiàng)目不存在概要設(shè)計(jì)規(guī)格說明,就需要從概要設(shè)計(jì)規(guī)格說明出發(fā),與軟件設(shè)計(jì)人員明確每個模塊內(nèi)部的對象屬性與方法以及對象與對象間的通信關(guān)系。根據(jù)此結(jié)果,進(jìn)一步開發(fā)相應(yīng)的測試需求。相應(yīng)地,上一節(jié)所說的對軟件需求項(xiàng)進(jìn)行優(yōu)先關(guān)系排序在實(shí)踐中要變通地理解為對測試需求項(xiàng)進(jìn)行優(yōu)先關(guān)系排序。
讀者朋友可能會問,對于整周期的開發(fā)項(xiàng)目,以上論述是否意味著測試需求開發(fā)的依據(jù)文檔是否要根據(jù)測試所處的階段而不斷調(diào)整呢?是的,筆者認(rèn)為這也是完全必要的。我們不能指望軟件需求項(xiàng)能夠描述清楚集成或單元測試階段的測試需求。測試需求的開發(fā)總是有賴于相應(yīng)層次的軟件規(guī)格說明書(只有在開發(fā)團(tuán)隊(duì)不能提供的情況下才確有必要循著“詳細(xì)設(shè)計(jì)規(guī)格說明->概要設(shè)計(jì)規(guī)格說明->軟件需求規(guī)格說明->用戶需求規(guī)格說明->項(xiàng)目章程、合同、項(xiàng)目建議書、工作說明書等”的順序往前追溯)。通常相關(guān)依據(jù)文檔的可測試性越好,測試需求開發(fā)所需要的工作量越少。
除了對軟件需求項(xiàng)、測試需求項(xiàng)做優(yōu)先關(guān)系排序、對不具備可測試性或不確定的需求進(jìn)一步細(xì)化、明確化之外,測試需求開發(fā)階段的工作還包括分析各測試需求項(xiàng)之間可能的時(shí)間關(guān)系排序。哪些測試需求項(xiàng)應(yīng)該先測,哪些可以延后,那些是可以并行等等,都需要在測試需求開發(fā)階段一并分析清楚。