在CMM的發(fā)展進(jìn)程中,曾經(jīng)提議將軟件評(píng)價(jià)與測(cè)試(Evaluation and Test)作為CMM的一個(gè)KPA加入到CMM中,雖然這一提議最終未獲通過,但通過對(duì)這一提議的討論,我們可以得到很多與軟件測(cè)試相關(guān)的一些有益的東西。
一、軟件評(píng)價(jià)與測(cè)試在整個(gè)軟件生命周期中的作用
評(píng)價(jià)是對(duì)軟件開發(fā)過程中產(chǎn)生的各種系統(tǒng)規(guī)格和模型進(jìn)行的驗(yàn)證活動(dòng)。測(cè)試則是一種基于機(jī)器的對(duì)代碼執(zhí)行、確認(rèn)的活動(dòng)。大部分組織對(duì)評(píng)價(jià)和測(cè)試的定義都相對(duì)狹義,一般是指對(duì)代碼執(zhí)行物理測(cè)試用例的活動(dòng)。事實(shí)上,很多公司甚至直到編碼已經(jīng)開始時(shí)才指定或安排測(cè)試人員。更有甚者,他們將這一活動(dòng)的范圍僅僅限于功能測(cè)試,也許有時(shí)做一下性能測(cè)試。這種觀點(diǎn)在目前的CMM有關(guān)評(píng)價(jià)與測(cè)試的描述中被進(jìn)一步強(qiáng)調(diào),這就是SPE,軟件產(chǎn)品工程KPA。在SPE KPA活動(dòng)中,活動(dòng)5、6、7,僅僅用了基于代碼的測(cè)試作為例子,只明確地提到了功能測(cè)試。其他類型的測(cè)試只是用一句非常含糊的話來指代:“保證軟件滿足軟件需求 ”。
另一方面,建造摩天大廈的人們,則遠(yuǎn)在砌第一塊磚之前就將評(píng)價(jià)和測(cè)試集成到了開發(fā)過程之中。通過建模來驗(yàn)證穩(wěn)定性、防水性、照明布置以及電源的需求等等,從而實(shí)施評(píng)價(jià)。而目前,組織所使用軟件評(píng)價(jià)和測(cè)試方法就像是設(shè)計(jì)師一直等到大樓已經(jīng)建成才進(jìn)行測(cè)試,而此時(shí)的測(cè)試只是能保證給水和照明可以工作而已。
CMM只是進(jìn)一步將評(píng)價(jià)和測(cè)試的部分思想進(jìn)行融合,用一個(gè)特殊的評(píng)價(jià)技術(shù)來代替,這個(gè)技術(shù)就是CMM中的一個(gè)KPA,同行評(píng)審。這也意味著,在提交代碼之前,唯一可干的評(píng)價(jià)就是同行評(píng)審,且已經(jīng)足夠了。事實(shí)上,對(duì)于一件事情的評(píng)價(jià)和測(cè)試的步驟包括:
(1)定義成功準(zhǔn)則;
(2)涉及覆蓋這些準(zhǔn)則的用例;
(3)執(zhí)行用例;
(4)驗(yàn)證結(jié)果,驗(yàn)證所有的內(nèi)容都已覆蓋。同行評(píng)審只是提供了一個(gè)基于紙面的測(cè)試機(jī)制。它既不能從根本上提供成功準(zhǔn)則,也不能提供任何正式的機(jī)制以支持用例定義以用于同行評(píng)審中。同行評(píng)審本質(zhì)是主觀的,因此,基于誤解使程序員將缺陷引入產(chǎn)品,而到同行評(píng)審時(shí),基于同樣的誤解,也使得人們無法發(fā)現(xiàn)這些缺陷。
評(píng)價(jià)和測(cè)試的一個(gè)相對(duì)堅(jiān)固的內(nèi)涵范圍必須包括項(xiàng)目在開發(fā)周期每一個(gè)階段的每一個(gè)交付產(chǎn)品。它也必須考慮每個(gè)交付產(chǎn)品的每一個(gè)預(yù)期特性。而且必須包括每一個(gè)評(píng)價(jià)/測(cè)試步驟。下面我們看兩個(gè)例子:評(píng)價(jià)需求和對(duì)一個(gè)設(shè)計(jì)的評(píng)價(jià)。
一個(gè)需求文檔必須是完備的、一致的、正確的和清晰的。那么第一步就是基于項(xiàng)目/產(chǎn)品目標(biāo)(即為什么要做這個(gè)項(xiàng)目的說明)對(duì)需求進(jìn)行確認(rèn)。這能夠保證我們定義了正確的功能集。下一步評(píng)價(jià)就是遍歷use-case腳本走查各功能規(guī)則,如果可能的話,最好用一些原型工具(screen prototype)作為輔助工具。第三步評(píng)價(jià)是有領(lǐng)域?qū)<疫M(jìn)行的對(duì)文檔的同行評(píng)審。第四步是由非領(lǐng)域?qū)<疫M(jìn)行的正式的含糊性評(píng)審(他們無法讀懂文檔里的功能知識(shí),這將幫助確保各種規(guī)則是明確定義的,而不是隱含定義)。第五步評(píng)價(jià)是將需求轉(zhuǎn)換為布爾邏輯圖。這可以鑒別規(guī)則之間的順序問題,同時(shí)也能發(fā)現(xiàn)漏掉的用例(cases)。第五步評(píng)價(jià)是在CASE工具的輔助下進(jìn)行的邏輯一致性檢查。第七步評(píng)價(jià)是由領(lǐng)域?qū)<疫M(jìn)行的對(duì)測(cè)試腳本的評(píng)審,這些腳本是從需求導(dǎo)出來的。
對(duì)設(shè)計(jì)的評(píng)價(jià)一樣可以進(jìn)行一系列補(bǔ)救。一個(gè)是對(duì)照需求對(duì)設(shè)計(jì)文檔進(jìn)行走查。另一評(píng)價(jià)是構(gòu)建一個(gè)模型來驗(yàn)證設(shè)計(jì)的完整性(例如構(gòu)造一個(gè)操作系統(tǒng)的資源分配模式來保證不會(huì)發(fā)生死鎖)。第三種評(píng)價(jià)是建立模型來驗(yàn)證性能特征。第四種是將形成的設(shè)計(jì)與其他公司的現(xiàn)成系統(tǒng)進(jìn)行對(duì)比,以確保所設(shè)計(jì)的配置能夠處理預(yù)期的處理規(guī)模和數(shù)據(jù)規(guī)模。
上面的評(píng)價(jià)只有一部分