軟件測(cè)試(四):如何使開發(fā)文檔臻于完善 [轉(zhuǎn)貼 2005-06-27 16:43:52 ] 發(fā)表者: yonnie   

  開發(fā)文檔遺漏了某些重要內(nèi)容或某些設(shè)計(jì),不能全部滿足既定的技術(shù)指標(biāo); 或存在邏輯錯(cuò)誤、引用錯(cuò)誤; 再或者引入了不必要的風(fēng)險(xiǎn)。這些問題在軟件開發(fā)文檔中屢見不鮮,而軟件驗(yàn)證技術(shù)就是著力于解決這些問題,力爭(zhēng)使開發(fā)文檔臻于完善。

  通過圖1可以發(fā)現(xiàn),軟件缺陷錯(cuò)誤絕大多數(shù)是在需求和設(shè)計(jì)階段引入的,不清晰的需求分析、不合理的系統(tǒng)設(shè)計(jì)常常導(dǎo)致后續(xù)的開發(fā)活動(dòng)困難重重。因此,需求驗(yàn)證和設(shè)計(jì)驗(yàn)證是軟件驗(yàn)證的重點(diǎn),對(duì)于排除軟件缺陷而言是非常關(guān)鍵的。

  軟件需求驗(yàn)證

  一份未經(jīng)驗(yàn)證的《軟件需求規(guī)格說明》(以下簡(jiǎn)稱《需求說明》),極可能是包含著種種隱藏的軟件缺陷,這些缺陷如果被帶入到后續(xù)的開發(fā)階段或當(dāng)系統(tǒng)投入使用時(shí)才被發(fā)現(xiàn),將會(huì)導(dǎo)致較高代價(jià)的返工,因?yàn)樾枨蟮淖兓?huì)導(dǎo)致系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)的相應(yīng)變化,從而使系統(tǒng)重新經(jīng)歷編碼、集成、系統(tǒng)測(cè)試、交付等階段。需求的驗(yàn)證過程主要是檢查需求規(guī)格說明,對(duì)該文檔中定義的各需求項(xiàng)執(zhí)行多種類型的驗(yàn)證。一般來說,需求驗(yàn)證主要包括以下內(nèi)容:

  1.有效性驗(yàn)證

  有效性驗(yàn)證是指開發(fā)人員和用戶應(yīng)該對(duì)需求規(guī)格說明中各用戶需求項(xiàng)進(jìn)行認(rèn)真地審核,以確保用戶的需求被充分、正確地表達(dá)了出來,并且對(duì)于規(guī)格說明中提出的各項(xiàng)軟件需求,必須保證它確實(shí)能夠滿足用戶的相關(guān)需要、解決用戶的問題。

  2.一致性驗(yàn)證

  一致性是指各需求項(xiàng)之間以及需求項(xiàng)和相應(yīng)的規(guī)范或標(biāo)準(zhǔn)之間沒有沖突,對(duì)同一個(gè)系統(tǒng)功能不應(yīng)出現(xiàn)不同的描述或矛盾的約束。一致性驗(yàn)證主要包括四方面內(nèi)容:一是驗(yàn)證各個(gè)需求項(xiàng)之間是否一致; 二是驗(yàn)證《需求說明》中規(guī)定的模型、算法和數(shù)值方法相互是否兼容; 三是驗(yàn)證《需求說明》中所采用的技術(shù)和方法是否與用戶要求的技術(shù)及方法保持一致; 四是驗(yàn)證各需求項(xiàng)中涉及到的軟硬件接口是否具有兼容性。

  3.完備性驗(yàn)證

  完備性驗(yàn)證是指檢查需求文檔是否包括用戶需要的所有的功能、性能和約束,是否滿足用戶的所有要求。一個(gè)完備的需求文檔應(yīng)該對(duì)所有可能的狀態(tài)、狀態(tài)變化、轉(zhuǎn)入條件、相關(guān)約束等都進(jìn)行了完整、準(zhǔn)確的描述。

  完備性驗(yàn)證主要包括對(duì)《需求說明》六個(gè)方面的驗(yàn)證:是否包括了所有有意義的需求,并按優(yōu)先級(jí)排序; 是否明確規(guī)定了哪些是絕對(duì)不能發(fā)生的故障或設(shè)計(jì)缺陷; 所有的需求項(xiàng)是否都被列入需求描述表,并被編號(hào),能支持索引或回溯; 各圖表、表格是否都有標(biāo)號(hào),各類專業(yè)術(shù)語(yǔ)及測(cè)量單位是否都給出相應(yīng)的定義或引用的標(biāo)準(zhǔn)化文件; 時(shí)間關(guān)鍵性功能是否都被清晰地標(biāo)識(shí)出來,對(duì)時(shí)間的具體要求是否作了規(guī)定; 是否包括了對(duì)所有異常的響應(yīng),尤其是對(duì)各種有效的、無效的輸入值的響應(yīng)規(guī)定,對(duì)各種操作模式下的環(huán)境條件、系統(tǒng)響應(yīng)時(shí)間等是否都作了相應(yīng)的規(guī)定。

  4.可行性驗(yàn)證

  可行性驗(yàn)證是指根據(jù)現(xiàn)有的軟硬件技術(shù)水平和系統(tǒng)的開發(fā)預(yù)算、進(jìn)度安排,對(duì)需求的可行性進(jìn)行驗(yàn)證,以保證所有的需求都能實(shí)現(xiàn)。包括驗(yàn)證《需求說明》中定義的需求對(duì)軟件的設(shè)計(jì)、實(shí)現(xiàn)、運(yùn)行和維護(hù)而言是否是可行的,驗(yàn)證其規(guī)定的模型、算法和數(shù)值方法對(duì)于要解決的問題而言是否合適,驗(yàn)證約束性需求中所規(guī)定的質(zhì)量屬性是個(gè)別地還是成組地可以達(dá)到。

  5.可驗(yàn)證性驗(yàn)證

  可驗(yàn)證性是指為了減少客戶和開發(fā)商之間可能產(chǎn)生的爭(zhēng)議,系統(tǒng)需求應(yīng)該能夠通過一系列檢查方法來進(jìn)行驗(yàn)證,以確定交付的系統(tǒng)是否滿足需要。它包括驗(yàn)證各個(gè)需求項(xiàng)是否能夠通過測(cè)試軟件產(chǎn)品和軟件開發(fā)文檔來證明這些需求項(xiàng)已經(jīng)被實(shí)現(xiàn); 各個(gè)需求項(xiàng)描述是否清楚、最好能量化; 每一個(gè)需求是否都對(duì)應(yīng)于一個(gè)驗(yàn)證方法。

  6.可跟蹤性驗(yàn)證

  可跟蹤性是指需求的出處應(yīng)該被清晰地記錄,如每一項(xiàng)功能都能夠追溯到要求它的用戶需求或相關(guān)文件。主要驗(yàn)證每個(gè)需求項(xiàng)是否都具有惟一性并且被惟一標(biāo)識(shí),需求項(xiàng)定義描述中是否都明確地注明了該項(xiàng)需求源于上一階段中哪個(gè)文檔,以及是否可以從上一階段的文檔中找到需求定義中的相應(yīng)內(nèi)容。

  7.可調(diào)節(jié)性驗(yàn)證

  可調(diào)節(jié)性是指需求的變更不會(huì)對(duì)其他系統(tǒng)帶來大規(guī)模的影響,主要驗(yàn)證需求項(xiàng)是否被組織成可以允許修改的結(jié)構(gòu),例如采用列表形式; 驗(yàn)證每個(gè)特定的需求的具體規(guī)定是否多于一次,有沒有出現(xiàn)冗余的說明; 以及是否有一套規(guī)則用來在后續(xù)的軟件生命周期里對(duì)《需求說明》進(jìn)行維護(hù)。

  8.其他方面的驗(yàn)證

  另外,對(duì)《需求說明》的驗(yàn)證還包括編寫格式是否符合相應(yīng)的規(guī)范或標(biāo)準(zhǔn)(如GB 8567-88、或GJB1091-91),需求中提出的算法和方法方面的需求項(xiàng)是否有科技文獻(xiàn)或其他文獻(xiàn)作為基礎(chǔ),以及是否出現(xiàn)“待定”之類的不確定性詞匯,如果出現(xiàn),是否注明是何種原因?qū)е碌牟淮_定性。

  對(duì)于一個(gè)中型軟件項(xiàng)目而言,以上驗(yàn)證項(xiàng)絕大多數(shù)是必須的,各測(cè)試團(tuán)隊(duì)可以根據(jù)項(xiàng)目的實(shí)際工程環(huán)境對(duì)此做裁減和細(xì)化。需求驗(yàn)證的執(zhí)行應(yīng)該遵循“策劃→執(zhí)行→檢查→評(píng)估”的順序完成。驗(yàn)證采取的形式可以是走查、審查、會(huì)議評(píng)審以及用戶正式、非正式會(huì)議。不管采用哪種形式,上述驗(yàn)證的內(nèi)容應(yīng)該盡量覆蓋到。

  概要設(shè)計(jì)驗(yàn)證


圖2 某桌面程序的開發(fā)流程

  從圖2可以看出,概要設(shè)計(jì)是軟件開發(fā)過程中決定軟件產(chǎn)品質(zhì)量的關(guān)鍵階段。這個(gè)階段設(shè)計(jì)人員需要站在全局的高度,在比較抽象的層次上分析、對(duì)比多種可能的系統(tǒng)實(shí)現(xiàn)方案和多種可能的軟件體系結(jié)構(gòu),從中選出最佳的方案和最合理的軟件結(jié)構(gòu)。概要設(shè)計(jì)驗(yàn)證可以確保《概要設(shè)計(jì)說明書》(以下簡(jiǎn)稱《設(shè)計(jì)說明》)中所描述的軟件概要設(shè)計(jì)在總體結(jié)構(gòu)、外部接口、主要部件功能分配、全局?jǐn)?shù)據(jù)結(jié)構(gòu)以及各主要部件之間的接口等方面的合適性、完整性,從而以保證用較低的成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。

  1.驗(yàn)證設(shè)計(jì)系統(tǒng)在項(xiàng)目軟件中所處的層次結(jié)構(gòu)描述是否準(zhǔn)確以及在后續(xù)設(shè)計(jì)階段中的指導(dǎo)性作用

  這里主要是驗(yàn)證《設(shè)計(jì)說明》中對(duì)所要設(shè)計(jì)的系統(tǒng)在整個(gè)項(xiàng)目軟件中所處的地位、作用,及其與同級(jí)、上級(jí)系統(tǒng)之間的關(guān)系描述是否準(zhǔn)確; 以及是否可以作為《詳細(xì)設(shè)計(jì)規(guī)格說明》撰寫的基礎(chǔ)性文檔。

  2.驗(yàn)證系統(tǒng)描述是否具有可追溯性

  重點(diǎn)對(duì)《設(shè)計(jì)說明》做以下驗(yàn)證:每一部分的設(shè)計(jì)是否都可以追溯到《需求說明》、《接口設(shè)計(jì)說明書》或其他開發(fā)文檔; 非功能需求項(xiàng)(如接口需求等)是否已經(jīng)分配到《概要設(shè)計(jì)規(guī)格說明》中; 不完整、易變動(dòng)或潛在的需求項(xiàng)是否都進(jìn)行了相應(yīng)的設(shè)計(jì)分析,對(duì)各種設(shè)計(jì)限制是否做了全面的考慮; 模塊的規(guī)格及大小劃分是否和《需求說明》中的功能需求項(xiàng)以及約束性需求項(xiàng)之間保持一致。

  3.驗(yàn)證總體設(shè)計(jì)是否合理

  重點(diǎn)對(duì)《設(shè)計(jì)說明》進(jìn)行以下驗(yàn)證: 設(shè)計(jì)目標(biāo)描述是否明確清晰; 是否闡述了設(shè)計(jì)所依賴的運(yùn)行環(huán)境,核對(duì)是否和《需求說明》中規(guī)定的運(yùn)行環(huán)境一致; 業(yè)務(wù)邏輯是否準(zhǔn)確、完備; 是否對(duì)不同的設(shè)計(jì)方案作了介紹并比較,是否有選擇方案的結(jié)論,是否清楚闡述了方案選擇的理由; 是否合理地劃分了模塊并對(duì)各模塊之間的關(guān)系作了清晰的闡述; 系統(tǒng)設(shè)計(jì)結(jié)構(gòu)和數(shù)據(jù)處理流程是否能滿足軟件需求規(guī)格說明中所要求的全部功能性需求。

  4.接口設(shè)計(jì)是否合理

  這方面主要是驗(yàn)證《設(shè)計(jì)說明》中用戶接口設(shè)計(jì)是否正確全面,是否有單獨(dú)的用戶界面設(shè)計(jì)文檔,是否包括硬件接口、軟件接口、通信接口等的設(shè)計(jì),以及是否描述了各類接口的功能、各接口與其他接口或模塊之間的關(guān)系以及接口的設(shè)計(jì)是否具有可測(cè)試性。

  5.驗(yàn)證模塊及模塊內(nèi)部的設(shè)計(jì)是否合理

  主要驗(yàn)證模塊的劃分是合適、模塊與模塊之間是否具有一定的獨(dú)立性; 每個(gè)模塊的功能和接口定義是否正確; 數(shù)據(jù)結(jié)構(gòu)的定義是否正確,比如面向?qū)ο缶幊讨械臄?shù)據(jù)封裝是否適當(dāng)?shù)? 模塊內(nèi)的數(shù)據(jù)流和控制流的定義是否正確。

  6.驗(yàn)證概要設(shè)計(jì)是否包含相關(guān)屬性設(shè)計(jì)

  驗(yàn)證《設(shè)計(jì)說明》中是否有可靠性、安全性、可維護(hù)性、可移植性、可測(cè)試性等方面的設(shè)計(jì),并且是否合理、有效。

  7.驗(yàn)證計(jì)算機(jī)資源的利用和余量設(shè)計(jì)是否合理

  這里考察《設(shè)計(jì)說明》是否對(duì)余量設(shè)計(jì)做了相應(yīng)考慮。包括CPU的處理能力要求、內(nèi)存的容量要求、外存儲(chǔ)設(shè)備的容量要求等是否留有余量; 外存儲(chǔ)設(shè)備的容量要求是否留有余量; 算法的效率是否可接受; 關(guān)鍵軟件部件發(fā)生故障時(shí)是否有快速恢復(fù)能力等等。

  各測(cè)試團(tuán)隊(duì)可以根據(jù)待測(cè)項(xiàng)目的規(guī)模進(jìn)行裁減和細(xì)化。對(duì)于沒有概要設(shè)計(jì)階段的軟件開發(fā)項(xiàng)目,此階段的驗(yàn)證活動(dòng)可以相應(yīng)地略去。概要設(shè)計(jì)在執(zhí)行中采取的形式以評(píng)審會(huì)為多,也可以采用非正式內(nèi)部審查或?qū)n}會(huì)議的形式進(jìn)行。由于概要設(shè)計(jì)的驗(yàn)證在很大程度上與軟件需求規(guī)格說明的內(nèi)容有關(guān),建議聘請(qǐng)軟件需求規(guī)格說明的起草人員和驗(yàn)證人員參與到概要設(shè)計(jì)的驗(yàn)證活動(dòng)中來。