王銀娟 臺(tái)憲青 馬治杰
(江蘇物聯(lián)網(wǎng)研究發(fā)展中心數(shù)據(jù)與服務(wù)研發(fā)中心 江蘇省無(wú)錫市 214135)
計(jì)算機(jī)軟件是由專(zhuān)業(yè)人員開(kāi)發(fā)并長(zhǎng)期維護(hù)的軟件產(chǎn)品[1]。一套完美的軟件產(chǎn)品離不開(kāi)軟件測(cè)試人員的支持,軟件產(chǎn)品在長(zhǎng)期運(yùn)行中,不可避免會(huì)出現(xiàn)軟件故障,阻礙產(chǎn)品正常使用,因此,在軟件產(chǎn)品上線前,需軟件測(cè)試人員進(jìn)行一系列的測(cè)試工作,發(fā)現(xiàn)缺陷,并由開(kāi)發(fā)人員及時(shí)修復(fù)。為此,有必要做軟件測(cè)試的缺陷進(jìn)行分析和度量的研究,并最終形成測(cè)試報(bào)告,以便產(chǎn)品相關(guān)人員查閱,以作依據(jù)。
軟件缺陷,是指計(jì)算機(jī)軟件或程序中存在的某種破壞正常運(yùn)行能力的錯(cuò)誤、隱藏的功能缺陷等[2]。缺陷的存在會(huì)導(dǎo)致軟件產(chǎn)品在某種程度上不能滿(mǎn)足使用者的需要。在IEEE729-1983中對(duì)缺陷有一個(gè)標(biāo)準(zhǔn)的定義:從產(chǎn)品內(nèi)部看,缺陷是軟件產(chǎn)品開(kāi)發(fā)或維護(hù)過(guò)程中存在的錯(cuò)誤、毛病等各種問(wèn)題;從產(chǎn)品外部看,缺陷是系統(tǒng)所需要實(shí)現(xiàn)的某種功能的失效或違背。
一個(gè)完整的軟件缺陷,主要的組成元素有:缺陷的編號(hào)、標(biāo)題、基本信息、測(cè)試軟硬件環(huán)境、測(cè)試軟件版本、缺陷類(lèi)型、嚴(yán)重程度、缺陷等級(jí)、復(fù)現(xiàn)步驟、實(shí)際結(jié)果描述、期望結(jié)果、截取缺陷的圖像、備注信息等,確保每個(gè)缺陷是準(zhǔn)確、清晰、簡(jiǎn)潔、完整、一致。
通過(guò)分析軟件缺陷,可幫助公司獲取更多的產(chǎn)品價(jià)值,主要有:分析測(cè)試活動(dòng)工作量及輸出價(jià)值、提供素材,供測(cè)試或開(kāi)發(fā)過(guò)程進(jìn)行改進(jìn)、歸納統(tǒng)計(jì),反映內(nèi)在問(wèn)題、幫助測(cè)試人員確定一個(gè)測(cè)試缺陷基線,方便未來(lái)測(cè)試目標(biāo)的選定等。也許,各個(gè)公司或測(cè)試人員對(duì)缺陷的分析理解都不一樣,但大體方向都是為了以后工作做的更好,為我們最終的產(chǎn)品服務(wù)。
在測(cè)試過(guò)程中發(fā)現(xiàn)的缺陷,一般可分為如下幾類(lèi),分別為:
(1)代碼錯(cuò)誤:不滿(mǎn)足需求、功能實(shí)現(xiàn)有誤等;
(2)設(shè)計(jì)缺陷:頁(yè)面美觀性、協(xié)調(diào)性、錯(cuò)別字等;
(3)用戶(hù)體驗(yàn):對(duì)產(chǎn)品、項(xiàng)目的建議性意見(jiàn)等;
(4)性能問(wèn)題:性能測(cè)試時(shí)使用,如:網(wǎng)絡(luò)延時(shí)、內(nèi)存問(wèn)題等;
(5)安全問(wèn)題:業(yè)務(wù)功能存在的安全問(wèn)題;
(6)接口問(wèn)題:涉及有模塊間數(shù)據(jù)傳遞時(shí)使用;
(7)配置問(wèn)題:由于提供的配置不當(dāng)或者配置不能夠滿(mǎn)足實(shí)際要求而出現(xiàn)的問(wèn)題。
上述缺陷分類(lèi)表中的說(shuō)明內(nèi)容,也是測(cè)試人員在測(cè)試過(guò)程中,以此作為判斷問(wèn)題是否為缺陷的依據(jù),除此之外,測(cè)試人員還需要結(jié)合軟件測(cè)試準(zhǔn)則、產(chǎn)品需求說(shuō)明書(shū)、產(chǎn)品原型圖等多方面的資料進(jìn)行參考驗(yàn)證。
在測(cè)試過(guò)程中,除了進(jìn)行缺陷分類(lèi),同時(shí),還需要對(duì)缺陷進(jìn)行嚴(yán)重等級(jí)選擇,其嚴(yán)重等級(jí)常規(guī)有如下幾種,分別為:
(1)建議缺陷:5級(jí),測(cè)試人員對(duì)測(cè)試對(duì)象的改進(jìn)意見(jiàn)、建議、質(zhì)疑等;
(2)微小缺陷:4級(jí),操作者不方便,但又不影響功能的操作和執(zhí)行,如:界面不規(guī)范;
(3)一般缺陷:3級(jí),次要功能沒(méi)有完全實(shí)現(xiàn)但不影響使用,如:提示信息不太準(zhǔn)確;
(4)嚴(yán)重缺陷:2級(jí),系統(tǒng)的主要功能部分喪失、數(shù)據(jù)不能正確保存,系統(tǒng)的次要功能完全喪失;
(5)致命缺陷:1級(jí),造成系統(tǒng)或應(yīng)用程序崩潰、死機(jī)等,主要功能完全喪失。
軟件測(cè)試缺陷優(yōu)先級(jí)表示在開(kāi)發(fā)進(jìn)行缺陷修復(fù)過(guò)程中,以供開(kāi)發(fā)參考進(jìn)行缺陷修復(fù)順序,這既是確保測(cè)試工作的順利進(jìn)行,也是保證軟件質(zhì)量的重要環(huán)節(jié),分別為:
(1)Low:嚴(yán)重等級(jí)5,使用率低,且非主要流程;
(2)Medium:嚴(yán)重等級(jí)為4,使用率中等,主要是從用戶(hù)體驗(yàn)角度出發(fā);
(3)High:嚴(yán)重等級(jí)為3,使用率高,主要是系統(tǒng)常規(guī)功能錯(cuò)誤等;
(4)Very high:嚴(yán)重等級(jí)為2,使用率偏高,主要是系統(tǒng)業(yè)務(wù)邏輯錯(cuò)誤等;
(5)Urgent:嚴(yán)重等級(jí)為1,使用率低,主要是系統(tǒng)崩潰等異常。
生命周期的概念是一個(gè)物種從誕生到消亡經(jīng)歷了不同的生命階段,那么,在測(cè)試過(guò)程中,軟件缺陷生命周期并非測(cè)試人員提出后,就一直處于激活狀態(tài),應(yīng)該指的是一個(gè)軟件缺陷被發(fā)現(xiàn)、報(bào)告到這個(gè)缺陷被修復(fù)、驗(yàn)證直至最后關(guān)閉的完整過(guò)程。在整個(gè)軟件缺陷生命周期中,通常是以改變軟件缺陷的狀態(tài)來(lái)體現(xiàn)不同的生命階段。因此,對(duì)于一個(gè)軟件測(cè)試人員來(lái)講,需要關(guān)注軟件缺陷在生命周期中的狀態(tài)的變化,來(lái)跟蹤項(xiàng)目進(jìn)度和軟件質(zhì)量。一個(gè)簡(jiǎn)單、優(yōu)化的軟件缺陷生命周期狀態(tài),分別為:
(1)New:新建,測(cè)試人員初始提單;
(2)Assign:指派,產(chǎn)品負(fù)責(zé)人指派給相應(yīng)開(kāi)發(fā)人員;
(3)Verified:確認(rèn),開(kāi)發(fā)修復(fù)后產(chǎn)品負(fù)責(zé)人進(jìn)行確認(rèn);
(4)Open:打開(kāi),開(kāi)發(fā)人員已修復(fù),產(chǎn)品負(fù)責(zé)人未確認(rèn);
(5)Duplicate:重復(fù),開(kāi)發(fā)人員確認(rèn)已存在重復(fù)BUG;
(6)Deferred:延期,個(gè)別異常缺陷經(jīng)產(chǎn)品負(fù)責(zé)人確認(rèn)延期處理;
(7)Reopened:激活,測(cè)試人員進(jìn)行回歸驗(yàn)證未通過(guò)缺陷;
(8)Rejected:拒絕,開(kāi)發(fā)人員經(jīng)確認(rèn)非缺陷;
(9)Closed:關(guān)閉,測(cè)試人員經(jīng)回歸通過(guò)后關(guān)閉。
在實(shí)際的工作過(guò)程中,軟件缺陷的生命周期基本上是不可能為:新建→指派→確認(rèn)→關(guān)閉的簡(jiǎn)單流程,因此,需要考慮到其他各種可能發(fā)生的情況,現(xiàn)整理出如圖1所示的一個(gè)較為復(fù)雜的軟件缺陷生命周期流轉(zhuǎn)圖。
圖1:生命周期流程圖
綜上所述,軟件缺陷在生命周期中經(jīng)歷了數(shù)次的審閱和狀態(tài)變化,最終,測(cè)試人員會(huì)根據(jù)回歸測(cè)試結(jié)果來(lái)關(guān)閉軟件缺陷來(lái)結(jié)束軟件缺陷的生命周期。軟件缺陷生命周期中的不同階段是測(cè)試人員、開(kāi)發(fā)人員和負(fù)責(zé)人員一起參與、協(xié)同測(cè)試的過(guò)程。軟件缺陷一旦發(fā)現(xiàn),便進(jìn)入測(cè)試人員、開(kāi)發(fā)人員、負(fù)責(zé)人員的嚴(yán)密監(jiān)控之中,直至軟件缺陷生命周期終結(jié),這樣即可保證在較短的時(shí)間內(nèi)高效率地關(guān)閉所有的缺陷,縮短軟件測(cè)試的進(jìn)程,提高軟件質(zhì)量,同時(shí)減少開(kāi)發(fā)、測(cè)試和維護(hù)成本。
缺陷分析是將軟件開(kāi)發(fā)、運(yùn)行過(guò)程中產(chǎn)生的缺陷進(jìn)行必要的收集,對(duì)缺陷的信息進(jìn)行分類(lèi)和匯總統(tǒng)計(jì),計(jì)算分析指標(biāo),編寫(xiě)分析報(bào)告的活動(dòng)。對(duì)泄漏的缺陷作回歸測(cè)試和回歸分析,可以完善單元測(cè)試和集成測(cè)試的設(shè)計(jì);缺陷分析方法有很多,常見(jiàn)的有單維度和多維度,即:?jiǎn)尉S度就是抽取一些像缺陷發(fā)現(xiàn)階段、來(lái)源、嚴(yán)重性、模塊、開(kāi)發(fā)人員等單一要素進(jìn)行分析;多維度是二者之間的結(jié)合,如:來(lái)源和開(kāi)發(fā)人員、模塊和開(kāi)發(fā)階段、激活和修復(fù)階段等多種組合方式,具體根據(jù)工作實(shí)際情況,進(jìn)行選擇組合。
在單維度分析法中,可采用折線圖、因果圖等方式進(jìn)行統(tǒng)計(jì)分析,本文采用餅圖進(jìn)行各項(xiàng)占比值進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析。軟件缺陷分類(lèi)能通過(guò)數(shù)據(jù)數(shù)值分析的主要有模塊缺陷分布、版本缺陷數(shù)量、缺陷嚴(yán)重程度統(tǒng)計(jì)、缺陷解決方案統(tǒng)計(jì)等,通過(guò)餅圖可以直觀統(tǒng)計(jì)出軟件的缺陷分布占比情況,見(jiàn)圖2。
圖2:?jiǎn)尉S度分析法示例
在多維度分析法中,可采用直方圖、散布圖等方式進(jìn)行統(tǒng)計(jì)分析[3],本文采用直方圖進(jìn)行統(tǒng)計(jì)分析,直方圖中的橫坐標(biāo)代表數(shù)據(jù)類(lèi)型,縱坐標(biāo)代表數(shù)據(jù)分析,通過(guò)直方圖可以進(jìn)行功能模塊與嚴(yán)重程度對(duì)比、解決與激活缺陷量對(duì)比等多種組合,通過(guò)直方圖可以直觀統(tǒng)計(jì)多維度缺陷關(guān)聯(lián)關(guān)系,見(jiàn)圖3。
圖3:多維度分析法示例
所謂軟件缺陷度量是軟件測(cè)試度量中的一個(gè)環(huán)節(jié),其本身并不能發(fā)現(xiàn)缺陷、剔除缺陷,但在實(shí)際工作過(guò)程中,有助于問(wèn)題的解決,除此之外,當(dāng)正確、持續(xù)的進(jìn)行缺陷度量時(shí),產(chǎn)品及過(guò)程中的質(zhì)量屬性的數(shù)據(jù)為實(shí)施和管理過(guò)程提供了有效的參考基礎(chǔ)。
在真實(shí)的工作過(guò)程中,發(fā)現(xiàn)軟件產(chǎn)品的質(zhì)量度量,主要集中在軟件的缺陷度量上,缺陷度量是對(duì)產(chǎn)品過(guò)程中產(chǎn)生的缺陷數(shù)據(jù)進(jìn)行采集、量化,將分散的缺陷數(shù)據(jù)進(jìn)行統(tǒng)一管理,使其變更的更加清晰,方便對(duì)缺陷數(shù)據(jù)進(jìn)行分析,從而提高產(chǎn)品質(zhì)量。
采取不同的軟件缺陷度量方法,其對(duì)應(yīng)目的也不盡相同,從不同的度量角度出發(fā),主要分為如下幾種:
(1)組織級(jí)缺陷度量,目的是了解組織的整體缺陷分布情況、客戶(hù)對(duì)組織的質(zhì)量滿(mǎn)意程度,建立組織基線,確定后續(xù)的改進(jìn)方向。
(2)項(xiàng)目級(jí)缺陷度量,目的是關(guān)注項(xiàng)目的實(shí)時(shí)質(zhì)量情況,因項(xiàng)目會(huì)有運(yùn)維期,故迭代次數(shù)可能較多,故需預(yù)測(cè)缺陷造成的發(fā)布后維護(hù)工作量。
(3)個(gè)體級(jí)缺陷度量,目的是了解個(gè)體缺陷產(chǎn)生的詳細(xì)原因,并為開(kāi)發(fā)提供一定的依據(jù),方便開(kāi)發(fā)進(jìn)行及時(shí)修復(fù)。
按上述缺陷度量方法,前兩者基本上是面對(duì)客戶(hù)的項(xiàng)目,也是實(shí)際工作中常用的方法,其測(cè)試覆蓋率偏低,其主要原因是面對(duì)客戶(hù)的項(xiàng)目,在運(yùn)維期,可能會(huì)出現(xiàn)需求的變更;對(duì)于第三種,基本上是針對(duì)公司自研產(chǎn)品,需通過(guò)不斷迭代開(kāi)發(fā)復(fù)測(cè)等流程循環(huán),耗費(fèi)一定的人力、精力,且在執(zhí)行過(guò)程中,需開(kāi)發(fā)組、測(cè)試組、需求組等多方面的工作協(xié)調(diào),使其測(cè)試周期相對(duì)較長(zhǎng),故在實(shí)際工作中,需根據(jù)不同的測(cè)試對(duì)象選擇不同的缺陷度量方法。
在實(shí)際工作中,根據(jù)測(cè)試對(duì)象確定好度量方法后,還需進(jìn)一步選擇相應(yīng)的缺陷度量元,所謂缺陷度量元是指缺陷度量的各個(gè)指標(biāo),通過(guò)度量指標(biāo)來(lái)進(jìn)行軟件缺陷度量。
(1)缺陷模塊分布:反映缺陷按類(lèi)型、優(yōu)先級(jí)、嚴(yán)重程度等因子,進(jìn)行缺陷量統(tǒng)計(jì)分析,獲取各模塊等下的缺陷數(shù)目。
(2)缺陷總體分布:反映缺陷整體上分布情況,通過(guò)總體分布圖可分析出軟件缺陷主要集中點(diǎn),可幫助開(kāi)發(fā)人員快速找出問(wèn)題根源,及時(shí)修復(fù),提高測(cè)試對(duì)象質(zhì)量。
(3)缺陷到達(dá)量:反映某一特定時(shí)間內(nèi)某類(lèi)缺陷出現(xiàn)次數(shù),產(chǎn)品發(fā)布后需對(duì)缺陷進(jìn)行跟蹤,在跟蹤缺陷過(guò)程中可對(duì)缺陷進(jìn)行分類(lèi)統(tǒng)計(jì),通過(guò)對(duì)缺陷到達(dá)量統(tǒng)計(jì)分析可有效提高產(chǎn)品質(zhì)量。
(4)缺陷修復(fù)率:反映測(cè)試人員提測(cè)質(zhì)量、開(kāi)發(fā)人員修復(fù)質(zhì)量,根據(jù)該指標(biāo)可間接反映測(cè)試對(duì)象功能平穩(wěn)性。
(5)缺陷移除率:反映在產(chǎn)品研發(fā)各個(gè)階段中,明確每個(gè)階段發(fā)現(xiàn)引入的缺陷及問(wèn)題的能力,在分析過(guò)程中,可與缺陷修復(fù)率結(jié)合統(tǒng)計(jì)分析。
(6)缺陷密度:反映產(chǎn)品每個(gè)功能點(diǎn)的缺陷數(shù),缺陷密度越低則產(chǎn)品質(zhì)量越高,缺陷密度與缺陷率有著一定關(guān)聯(lián)。
(7)缺陷總體趨勢(shì):反映新增缺陷數(shù)、被解決缺陷數(shù)、遺漏或激活缺陷數(shù)等各種缺陷狀態(tài)下變化趨勢(shì),從而了解缺陷是否被及時(shí)修復(fù)。
(8)測(cè)試用例執(zhí)行率:反映在測(cè)試過(guò)程中,測(cè)試人員依據(jù)測(cè)試用例對(duì)測(cè)試系統(tǒng)進(jìn)行測(cè)試驗(yàn)證對(duì)比,可判斷系統(tǒng)是否按需求進(jìn)行開(kāi)發(fā),同時(shí)反映需求變更情況。
一般來(lái)說(shuō),為了達(dá)到判斷出缺陷產(chǎn)生原因的目的,基本度量元可以選擇缺陷數(shù)量排行、缺陷發(fā)現(xiàn)時(shí)間、缺陷清除時(shí)間,派生度量元可選擇整體缺陷清除率、階段缺陷清除率等。
3.2.1 缺陷到達(dá)量分析法
缺陷到達(dá)量分析法是指在單位時(shí)間內(nèi),新建缺陷的數(shù)量。通過(guò)統(tǒng)計(jì)分類(lèi)進(jìn)行分析某一時(shí)間段內(nèi)測(cè)試引入的缺陷類(lèi)型、嚴(yán)重程度等缺陷,結(jié)合統(tǒng)計(jì)結(jié)果,可方便產(chǎn)品負(fù)責(zé)人與客戶(hù)進(jìn)行交流溝通,進(jìn)一步確認(rèn)解決方案,見(jiàn)圖4。
圖4:月度缺陷量統(tǒng)計(jì)分析圖
圖4中統(tǒng)計(jì)結(jié)果可分析得出:一是缺陷量在前四月內(nèi)是呈下降趨勢(shì);二是6月缺陷量有回升現(xiàn)象,主要體現(xiàn)在低嚴(yán)重等級(jí)上;三是缺陷數(shù)的嚴(yán)重級(jí)別呈正態(tài)分布等,具體可根據(jù)實(shí)際工作場(chǎng)景進(jìn)行詳細(xì)分析。
3.2.2 缺陷移除率分析法
缺陷移除率是指在產(chǎn)品研發(fā)各階段中,明確和解決本階段引入的缺陷的比例。依據(jù)軟件測(cè)試基礎(chǔ)理論,測(cè)試應(yīng)盡早介入到項(xiàng)目中,一般要求在需求分析階段,并且要通過(guò)靜態(tài)測(cè)試方法對(duì)各個(gè)階段的產(chǎn)出進(jìn)行驗(yàn)證,見(jiàn)圖5。
圖5:階段缺陷移除率統(tǒng)計(jì)分析圖
圖5中統(tǒng)計(jì)結(jié)果可分析得出:一是開(kāi)發(fā)階段缺陷移除率較低,說(shuō)明開(kāi)發(fā)過(guò)程中可能還存在較大問(wèn)題;二是驗(yàn)收冒煙階段,需求缺陷量為0,說(shuō)明需求團(tuán)隊(duì)與客戶(hù)的溝通順暢。
3.2.3 缺陷修復(fù)率分析法
缺陷修復(fù)率是指在一定單位時(shí)間內(nèi),提出的缺陷、被修復(fù)的缺陷、遺留的缺陷數(shù)量的對(duì)比,該方法是相對(duì)比較直觀的一種報(bào)表,見(jiàn)圖6。
圖6:缺陷修復(fù)率統(tǒng)計(jì)分析圖
圖6中統(tǒng)計(jì)結(jié)果可分析得出:一是缺陷提出數(shù)量在經(jīng)歷過(guò)穩(wěn)定下降后,在項(xiàng)目后期又出現(xiàn)了回升現(xiàn)象;二是開(kāi)發(fā)修復(fù)能力在5月出現(xiàn)下滑現(xiàn)象,說(shuō)明開(kāi)發(fā)人員的工作可能出現(xiàn)了變動(dòng)或抽調(diào);三是項(xiàng)目在進(jìn)行驗(yàn)收結(jié)尾階段,還存在缺陷遺留現(xiàn)象,根據(jù)圖表中的數(shù)據(jù)可以分析得出當(dāng)前產(chǎn)品整體缺陷量及開(kāi)發(fā)測(cè)試進(jìn)度等情況。
總之,軟件測(cè)試是軟件開(kāi)發(fā)過(guò)程中必不可少一環(huán)節(jié),其軟件產(chǎn)品質(zhì)量與產(chǎn)品運(yùn)行狀態(tài)是息息相關(guān)的[1]。因此,需重點(diǎn)掌握軟件缺陷分析及度量方法,它們是針對(duì)軟件開(kāi)發(fā)項(xiàng)目、過(guò)程及產(chǎn)品進(jìn)行數(shù)據(jù)定義、收集及分析的持續(xù)性定量化的過(guò)程。有效的分析及度量的作用在于能夠幫助團(tuán)隊(duì)認(rèn)清自身的能力,理解、評(píng)價(jià)、控制、預(yù)測(cè)和改進(jìn)軟件工作產(chǎn)品或軟件過(guò)程。