過程。作為測試人員,由于測試需要接觸軟件開發(fā)的所有方面,他們對問題有更加徹底深入的理解。
正是這一對問題的深入認識并將這一問題明確有力地向開發(fā)人員指出推動了軟件開發(fā)文化的迅速改變。隨著改進的開發(fā)和測試技術(shù)的應(yīng)用,IBM的OS操作系統(tǒng)的缺陷率在下一個發(fā)布降低了1/10。這確實是在短時間內(nèi)產(chǎn)生的重要的文化變革,特別是這涉及到了分布在不同地域的近千名軟件開發(fā)人員。
這種變化的加速除了對問題的重視的直接推動外,另一個推動因素是與測試有關(guān)的一些因素,即在測試過程和開發(fā)過程集成中的反饋環(huán)。隨著開發(fā)過程的不斷改進,評價和測試過程并行地改進以反映新的成功準則。隨著開發(fā)不斷使用新技術(shù),他們直接從測試人員那里得到及時的反饋即他們究竟做的怎么樣,因為測試人員就是專門基于新的尺度對交付產(chǎn)品進行確認的。
一個具體的例子是需求撰寫改進技術(shù)的應(yīng)用,需求必須是明確的、確定的、邏輯上是一致的、完備的、正確的。有關(guān)結(jié)構(gòu)化分析方法和面向?qū)ο蟮姆椒ǖ呐嘤?xùn)課教系統(tǒng)分析員如何來寫一個好的需求。如果在他們剛剛寫完第一個功能描述時就進行模糊性評審,那么他們寫的下一個功能就會更加清晰明確。這種緊湊的反饋環(huán)—寫一個功能、評價一個功能,有效地加速了其學(xué)習(xí)曲線。這樣的話,過程從缺陷檢測到缺陷預(yù)防轉(zhuǎn)移的相當快速----他們正在寫著清晰、不模糊的規(guī)格。
將這些經(jīng)驗與我們的整個軟件工業(yè)做一個對比,結(jié)構(gòu)化設(shè)計技術(shù)和面向?qū)ο蟮募夹g(shù)已經(jīng)在25年前就可以應(yīng)用了(是的,OO確實已經(jīng)那么老了),然而我們的時間的情況卻遠遠落后于這些方法的最新技術(shù)發(fā)展水平。問題是除非組織理解了正在解決的問題,否則它不會全面接受或者全面理解一個解決方案(如:軟件工程方法和技術(shù)),而集成的評價和測試正是問題理解的杠桿和關(guān)鍵。這里“集成評價和測試”被定義為將測試集成到軟件過程的每一步中,它也是為掌握一個技術(shù)所需的必要的反饋環(huán)的關(guān)鍵部分。任何沒有緊密反饋環(huán)的過程是具有致命缺陷的過程,因此評價和測量是加速文化改變的關(guān)鍵。
一個項目計劃一般包含任務(wù)、關(guān)聯(lián)、資源、進度、預(yù)算和假設(shè)等等。每個任務(wù)都應(yīng)當輸出一個良好定義的交付,且必須對交付產(chǎn)品進行驗證以證明該交付產(chǎn)品是確實是完備的。如果你對任務(wù)輸出的完備性進行評價和測試,那么你不可能準確地跟蹤項目的真實的狀態(tài)。
在決定一項實踐應(yīng)不應(yīng)當是獨立的KPA時,一個重要的實效因素是它在軟件開發(fā)活動的預(yù)算和人員投入中所占的比重。如果在這方面越顯著,那么它應(yīng)當受到的關(guān)注應(yīng)當越多。而軟件測試在整個軟件開發(fā)中所占的比重在一半左右。
集成評價和測試可以支持更多的活動并發(fā)從而進一步縮短進度。如果需求沒有得到正式評價,就常會導(dǎo)致設(shè)計和編碼活動產(chǎn)生對早期提交的功能范圍和定義的大量修改。正是基于這一原因,用戶手冊和培訓(xùn)手冊等工作直到對代碼的測試都差不多了的時候才能開始。到那時,幾乎沒有人會對早期的系統(tǒng)定義有什么信任。
同樣,沒有很好定義的需求也不能提供足夠的信息來支持測試腳本的設(shè)計,因此測試用例的設(shè)計和構(gòu)建也只能等到編碼做得差不多的時候才能開始。
根據(jù)這兩種情況,可以得出目前開發(fā)過程是線性的:先需求、然后是設(shè)計、編碼、接著是測試、編寫用戶手冊。如果寫的需求規(guī)格能夠達到一個確定級的詳程度(即:給定一個輸入集和一個系統(tǒng)初始狀態(tài),你應(yīng)當能夠按照規(guī)格中的規(guī)則準確地確定輸出和新系統(tǒng)的狀態(tài)),那么測試用例的設(shè)計以及用戶手冊的編寫就可以和系統(tǒng)設(shè)計并行執(zhí)行。這樣同時也就縮短了系統(tǒng)交付時間。關(guān)鍵是要對規(guī)格需求進行正式的評價活動。
從中我們看到在CMM中加入這個獨立的KPA是很有必要的。
三、結(jié)束語
通過以上的論述我們看到,
評價是對軟件開發(fā)過程中所產(chǎn)生的各種系統(tǒng)規(guī)格和模型的集成性進行保證的活動,測試則是基于機器的對代碼進行測試的活動。軟件評價和測試的目的是確認(即:判斷這是我們所要的嗎?)和驗證(即:這是不是正確?)每一個軟件項目交付產(chǎn)品,并及時發(fā)現(xiàn)這些產(chǎn)品中的任何缺陷。
軟件評價和測試包括識別需進行評價和測試的交付產(chǎn)品;確定需要執(zhí)行的評價和測試類型;定義每個評價和測試的成功準則;設(shè)計、構(gòu)建、執(zhí)行所需的評價和測試;驗證評價和測試結(jié)果;驗證測試集全面覆蓋既定的評價和測試準則;創(chuàng)建和執(zhí)行回歸庫以用于在交付產(chǎn)品發(fā)生修改后進行重新驗證;登記、匯報、跟蹤發(fā)現(xiàn)的缺陷。
最開始進行評價的交付產(chǎn)品是軟件需求,隨后,大部分評價和測試是基于被確認的軟件需求。