軟件測(cè)試(二):追蹤每一個(gè)軟件缺陷 [轉(zhuǎn)貼 2005-06-27 16:36:47 ] 發(fā)表者: yonnie   

  本文討論了在一個(gè)軟件企業(yè)內(nèi)部如何描述軟件缺陷信息,如何實(shí)施缺陷跟蹤管理,以及缺陷跟蹤管理工具的實(shí)現(xiàn)原理及設(shè)計(jì)要領(lǐng)。

  考察一個(gè)典型的軟件開(kāi)發(fā)流程:需求分析→概要設(shè)計(jì)→詳細(xì)設(shè)計(jì)→程序編碼→系統(tǒng)集成→交付與維護(hù),你會(huì)發(fā)現(xiàn)此流程中各階段之間的依賴(lài)與繼承關(guān)系是相當(dāng)密切的。前一階段形成的方案或產(chǎn)品中正確的部分固然會(huì)被后一階段繼承和細(xì)化,然而,如果前一階段的方案中出現(xiàn)了錯(cuò)誤,而測(cè)試人員沒(méi)有及時(shí)介入此階段的質(zhì)量控制,那么該錯(cuò)誤也會(huì)被后一階段繼承和放大,并順序傳遞下去。如果等到交付與維護(hù)階段,錯(cuò)誤才被發(fā)現(xiàn),那么相關(guān)的糾錯(cuò)工作將成為一件成本高昂而又收效甚微的事情,在某些情況下,甚至?xí)?dǎo)致整個(gè)開(kāi)發(fā)工作的失敗。這并不是危言聳聽(tīng)。據(jù)美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究院的一份報(bào)告顯示,占據(jù)世界軟件銷(xiāo)售額85%的大型專(zhuān)用軟件,其開(kāi)發(fā)的失敗率高達(dá)70%。

  因此,在軟件開(kāi)發(fā)流程的每個(gè)階段都必須引入軟件測(cè)試技術(shù),及早測(cè)試,杜絕錯(cuò)誤的蔓延。然而,測(cè)試工作的天性決定了測(cè)試人員可能是開(kāi)發(fā)人員總想回避的角色。在測(cè)試實(shí)踐的早期,當(dāng)測(cè)試人員查出某個(gè)缺陷,報(bào)告給開(kāi)發(fā)人員時(shí),多數(shù)情況下開(kāi)發(fā)人員會(huì)象征性表示一下感謝,然后把測(cè)試報(bào)告撂在一邊,繼續(xù)忙手頭的工作。事后到底有沒(méi)有修改,誰(shuí)也不知道。如果測(cè)試人員頻繁給同一開(kāi)發(fā)人員報(bào)錯(cuò)或不停地追問(wèn)缺陷的修改情況,開(kāi)發(fā)人員或許會(huì)逐漸喪失好脾氣,出于維護(hù)技術(shù)權(quán)威或其他目的,他會(huì)狡辯:這不是錯(cuò)誤,這是軟件的一個(gè)特殊功能。或者說(shuō):這不是什么大問(wèn)題,現(xiàn)在開(kāi)發(fā)進(jìn)度緊,而且糾正起來(lái)也挺麻煩的,等有時(shí)間再說(shuō)吧。于是,不了了之,問(wèn)題依舊存在。

  為了規(guī)避這種情況的發(fā)生,軟件企業(yè)必須引入軟件缺陷跟蹤管理機(jī)制。測(cè)試人員不再需要直接與開(kāi)發(fā)人員接觸,甚至不需要知道開(kāi)發(fā)者是誰(shuí),查出錯(cuò)誤以后,直接報(bào)到缺陷跟蹤管理系統(tǒng)就可以了(有些測(cè)試團(tuán)隊(duì)是有寫(xiě)入權(quán)限控制的),開(kāi)發(fā)人員做不做修改以及什么時(shí)間之前必須完成修改是項(xiàng)目管理部門(mén)的事情(當(dāng)然測(cè)試團(tuán)隊(duì)也可以提相關(guān)建議)。引入缺陷跟蹤管理機(jī)制一方面劃清了各個(gè)角色的職責(zé),避免了不必要爭(zhēng)執(zhí),另一方面也有助于項(xiàng)目管理部門(mén)及時(shí)了解軟件產(chǎn)品在生產(chǎn)過(guò)程中所處的質(zhì)量狀況,從而更好地控制產(chǎn)品的質(zhì)量。

  軟件缺陷的描述

  這里首先對(duì)“缺陷”和“錯(cuò)誤”兩個(gè)概念做一下區(qū)分:缺陷指軟件文檔或程序代碼中存在的數(shù)據(jù)錯(cuò)誤、邏輯錯(cuò)誤、內(nèi)容遺漏以及內(nèi)容上的不一致等。缺陷包括錯(cuò)誤,與bug是同義詞(注:鑒于這是一篇實(shí)用性文章,筆者不打算對(duì)缺陷、錯(cuò)誤、bug進(jìn)行更細(xì)致的理論討論)。既然在軟件開(kāi)發(fā)流程的每個(gè)階段開(kāi)發(fā)人員都有可能引入缺陷,那么如何來(lái)描述一個(gè)缺陷呢?下面筆者談?wù)勛约旱目捶ā?

  首先,對(duì)缺陷的描述應(yīng)該包含可追蹤信息,如給每個(gè)缺陷分配一個(gè)缺陷號(hào),每個(gè)編號(hào)必須是惟一的,可以根據(jù)該編號(hào)搜索、查看該缺陷的處理情況。

  其次,對(duì)缺陷的描述應(yīng)該包含缺陷的基本信息。通常缺陷的基本信息包括缺陷狀態(tài)、缺陷標(biāo)題、缺陷嚴(yán)重程度、缺陷緊急程度、缺陷提交人、缺陷提交日期、缺陷所屬、缺陷解決人、缺陷解決時(shí)間、缺陷解決結(jié)果、缺陷處理人、缺陷處理最終時(shí)間、缺陷處理結(jié)果、缺陷確認(rèn)人、缺陷確認(rèn)時(shí)間、缺陷確認(rèn)結(jié)果等等。

  下面筆者簡(jiǎn)單解釋一下:缺陷狀態(tài)標(biāo)注了缺陷的待修正、待評(píng)審、待驗(yàn)證、關(guān)閉等狀態(tài)信息;缺陷標(biāo)題則簡(jiǎn)要地說(shuō)明缺陷的類(lèi)型及內(nèi)容;缺陷嚴(yán)重程度是測(cè)試人員給出的缺陷嚴(yán)重程度估計(jì),可以是致命的、嚴(yán)重的、一般的、建議的等; 缺陷緊急程度是測(cè)試人員給出的測(cè)試處理優(yōu)先級(jí);缺陷提交人是指發(fā)現(xiàn)此缺陷的測(cè)試人員,最好附有聯(lián)系方式,以方便缺陷處理人員進(jìn)行確認(rèn);缺陷所屬指缺陷所在的模塊或者是缺陷所屬的開(kāi)發(fā)文檔的名稱(chēng);缺陷解決人則是指由誰(shuí)來(lái)進(jìn)行缺陷的解決,明確是需求分析人員、設(shè)計(jì)人員還是程序編碼人員;缺陷解決時(shí)間是項(xiàng)目組負(fù)責(zé)人返回的缺陷預(yù)計(jì)處理的時(shí)間;缺陷解決結(jié)果標(biāo)明預(yù)計(jì)缺陷修改后能達(dá)到的結(jié)果;缺陷確認(rèn)人是指由誰(shuí)來(lái)確認(rèn)缺陷已經(jīng)得到了修正;缺陷確認(rèn)時(shí)間是指缺陷修復(fù)的確認(rèn)工作完成的時(shí)間;缺陷確認(rèn)結(jié)果指確認(rèn)軟件缺陷的修正工作是否有效。

  以上列出的條目不是必須的,讀者可以根據(jù)項(xiàng)目的實(shí)際情況進(jìn)行實(shí)施軟件跟蹤管理技術(shù)對(duì)于企業(yè)而言,它的意義在于確保每個(gè)被發(fā)現(xiàn)的缺陷都能被解決。這里,解決可能是指缺陷被修正,也可能是指項(xiàng)目組成員達(dá)成一致的處理意見(jiàn)(如不做處理)。軟件缺陷跟蹤管理過(guò)程中所收集到的缺陷數(shù)據(jù)對(duì)評(píng)估軟件系統(tǒng)的質(zhì)量、測(cè)試人員的業(yè)績(jī)、開(kāi)發(fā)人員的業(yè)績(jī)等提供了量化的參考指標(biāo),也為軟件企業(yè)進(jìn)行軟件過(guò)程改進(jìn)提供了必要的案例積累。另外,有些軟件企業(yè)還根據(jù)缺陷跟蹤管理過(guò)程中所獲得的缺陷數(shù)目分布趨勢(shì)來(lái)決定軟件產(chǎn)品的最佳發(fā)布時(shí)機(jī)。

  剪裁。另外,要引起注意的是上述部分條目不是由測(cè)試人員來(lái)填寫(xiě)的,如缺陷解決時(shí)間、缺陷解決結(jié)果、缺陷處理人等,應(yīng)該由項(xiàng)目管理人員統(tǒng)籌成本、進(jìn)度等因素后決定。

  另外,對(duì)缺陷的描述還應(yīng)該包含缺陷的詳細(xì)描述,也就是要對(duì)缺陷的特征做出詳細(xì)的描述,例如程序代碼中的錯(cuò)誤,應(yīng)詳細(xì)描述錯(cuò)誤發(fā)生的軟硬件環(huán)境,相關(guān)輸入輸出數(shù)據(jù),出錯(cuò)時(shí)程序的狀態(tài)等,以方便編碼人員進(jìn)行錯(cuò)誤復(fù)現(xiàn)和錯(cuò)誤定位。又如設(shè)計(jì)規(guī)格說(shuō)明中的錯(cuò)誤,則應(yīng)指明它與高層軟件開(kāi)發(fā)文檔(如需求規(guī)格說(shuō)明)中哪些條款相違背,為什么判為違背,都需要描述清楚,以方便設(shè)計(jì)人員進(jìn)一步核實(shí)。

  除此之外,對(duì)某些缺陷的描述應(yīng)該包含必要的附件。有時(shí),某些缺陷可能無(wú)法用語(yǔ)言文字表達(dá)清楚,如用戶(hù)界面出現(xiàn)的一些缺陷。這時(shí),就需要借助于屏幕拷貝等方式來(lái)進(jìn)一步描述缺陷。

  缺陷跟蹤管理的一般流程

  缺陷跟蹤管理系統(tǒng)( Defect Tracking System)是用于集中管理軟件測(cè)試過(guò)程中所發(fā)現(xiàn)缺陷的數(shù)據(jù)庫(kù)程序。利用它便于查找和跟蹤缺陷,因?yàn)閷?duì)于大中型軟件的測(cè)試過(guò)程而言,報(bào)告的缺陷總數(shù)可能會(huì)有成千上萬(wàn)個(gè),如果沒(méi)有缺陷跟蹤管理系統(tǒng)的支持,要求查找某個(gè)錯(cuò)誤,其難度和效率可想而知。另外,利用該系統(tǒng)還有利于項(xiàng)目組成員間協(xié)同工作,缺陷跟蹤管理系統(tǒng)可以作為測(cè)試人員、開(kāi)發(fā)人員、項(xiàng)目負(fù)責(zé)人、缺陷評(píng)審人員協(xié)同工作的平臺(tái),同時(shí)也能保證測(cè)試工作的有效性,避免測(cè)試人員重復(fù)報(bào)錯(cuò),也便于及時(shí)掌握各缺陷的當(dāng)前狀態(tài),進(jìn)而完成對(duì)應(yīng)狀態(tài)的測(cè)試工作。最后它還有利于跟蹤和監(jiān)控錯(cuò)誤的處理過(guò)程和方法,可以方便地檢查處理方法是否正確,跟蹤處理者的姓名和處理時(shí)間,作為工作量的統(tǒng)計(jì)和業(yè)績(jī)考核的參考。

  其簡(jiǎn)單流程如圖所示,該流程涉及測(cè)試人員、項(xiàng)目負(fù)責(zé)人、開(kāi)發(fā)人員、評(píng)審員等角色,這些角色的描述以及職責(zé)如表所示。圖中提到軟件缺陷的幾個(gè)狀態(tài)有:初始狀態(tài)、待分配狀態(tài)、待修正狀態(tài)、待驗(yàn)證狀態(tài)、待評(píng)審狀態(tài)以及最后的關(guān)閉狀態(tài)。讀者可以根據(jù)企業(yè)的實(shí)際情況,適當(dāng)調(diào)整該流程以取得更高的效率。

  缺陷跟蹤管理的實(shí)現(xiàn)原理

  軟件缺陷跟蹤管理系統(tǒng)可以通過(guò)添加、修改、排序、查尋、存儲(chǔ)操作來(lái)管理軟件缺陷。目前市場(chǎng)上已經(jīng)出現(xiàn)了一些通用缺陷跟蹤管理軟件,這些軟件在功能上各有特點(diǎn),可以根據(jù)實(shí)際情況直接購(gòu)買(mǎi)使用; 也可以根據(jù)測(cè)試項(xiàng)目的實(shí)際需要,開(kāi)發(fā)專(zhuān)用的缺陷跟蹤系統(tǒng),例如基于Lotus Notes 開(kāi)發(fā)。

  缺陷跟蹤管理系統(tǒng)在實(shí)現(xiàn)技術(shù)層面上來(lái)看是一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序。它包括前臺(tái)用戶(hù)界面、后臺(tái)缺陷數(shù)據(jù)庫(kù)以及中間數(shù)據(jù)處理層。目前,不少缺陷跟蹤管理系統(tǒng)是采用B/S結(jié)構(gòu)來(lái)實(shí)現(xiàn)的,相應(yīng)地,采用的編程語(yǔ)言是ASP或JSP。讀者可以根據(jù)需要選擇購(gòu)買(mǎi)商品化的缺陷跟蹤管理工具,或者選擇自行研發(fā)軟件缺陷跟蹤管理工具。這類(lèi)系統(tǒng)的用戶(hù)界面所顯示的信息一般應(yīng)根據(jù)用戶(hù)的角色不同而略有差異,因?yàn)楦鱾€(gè)角色使用該系統(tǒng)完成的任務(wù)各不相同。如測(cè)試人員用于報(bào)告缺陷或確認(rèn)缺陷是否可以關(guān)閉;開(kāi)發(fā)人員用于了解哪些缺陷需要他去處理以及缺陷經(jīng)過(guò)處理后是否被關(guān)閉;而項(xiàng)目負(fù)責(zé)人需要及時(shí)了解當(dāng)前有哪些新的缺陷,哪些必須及時(shí)修正等。另外,不同角色所擁有的數(shù)據(jù)操作權(quán)限也不盡相同。例如開(kāi)發(fā)人員無(wú)權(quán)通過(guò)其用戶(hù)界面往數(shù)據(jù)庫(kù)中填寫(xiě)新的缺陷信息,也無(wú)權(quán)關(guān)閉某個(gè)已知缺陷; 而測(cè)試人員無(wú)權(quán)決定分配誰(shuí)去修正某已知缺陷也無(wú)權(quán)決定是否要修正某個(gè)缺陷。

  缺陷跟蹤管理系統(tǒng)后臺(tái)數(shù)據(jù)庫(kù)的設(shè)計(jì)建議盡量考慮到不同角色的應(yīng)用需要,如測(cè)試人員可能需要對(duì)相關(guān)數(shù)據(jù)表做頻繁的記錄的插入、查詢(xún)等操作,軟件開(kāi)發(fā)人員可能對(duì)與他相關(guān)的記錄非常重視,而對(duì)其他記錄不感興趣,而項(xiàng)目負(fù)責(zé)人員可能對(duì)新發(fā)現(xiàn)的缺陷數(shù)據(jù)需要做到及時(shí)掌握,這些需求對(duì)于數(shù)據(jù)庫(kù)的建表、建立索引都有很大的指導(dǎo)性意義。