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