王 俐
(北京國鐵華晨通信信息技術(shù)有限公司, 北京 100070)
軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。軟件測試工作一般應(yīng)完成以下各層測試:軟件單元測試、軟件集成測試、軟件系統(tǒng)測試。如圖1所示。
軟件系統(tǒng)測試(以下簡稱系統(tǒng)測試)是將經(jīng)過集成測試后的軟件,作為計算機系統(tǒng)的部分,與計算機硬件、某些支持軟件、數(shù)據(jù)和人員等系統(tǒng)元素結(jié)合起來,在實際運行環(huán)境下對計算機系統(tǒng)進(jìn)行一系列的嚴(yán)格有效的測試來發(fā)現(xiàn)軟件的潛在缺陷,保證軟件/系統(tǒng)的質(zhì)量。
系統(tǒng)測試從軟件研發(fā)的需求階段就開始介入,系統(tǒng)測試的生命周期如下:需求獲取與評審,測試策略生成(決定風(fēng)險、環(huán)境、定義測試執(zhí)行流程及成果物),系統(tǒng)測試設(shè)計(包括確定系統(tǒng)測試方法、測試工具、系統(tǒng)識別測試項、計劃資源及工期、需求變更等),用例開發(fā)(用例規(guī)格化、前置條件、后置條件及接受標(biāo)準(zhǔn)),測試準(zhǔn)備(測試環(huán)境搭建、數(shù)據(jù)準(zhǔn)備),測試執(zhí)行(運行測試、確認(rèn)結(jié)果),發(fā)現(xiàn)及剔除缺陷周期(發(fā)現(xiàn)及記錄缺陷、缺陷跟蹤、缺陷分析、驗證缺陷),測試周期結(jié)束,缺陷分析和結(jié)果報告。
缺陷能夠引起軟件運行時產(chǎn)生一種不希望或不可接受的外部行為結(jié)果,對缺陷的跟蹤管理一般需要達(dá)到以下目標(biāo)。
1)確保每個被發(fā)現(xiàn)的缺陷都能夠被解決,這里的解決不一定是被修正,也可能是其他處理方式(例如,在下一個版本中修正或是不修正)。
2)收集缺陷數(shù)據(jù)并根據(jù)缺陷趨勢曲線識別測試過程的階段;決定測試過程是否結(jié)束有很多種方式,通過缺陷趨勢曲線來確定測試過程是否結(jié)束,是常用并且較為有效的一種方式。
3)收集缺陷數(shù)據(jù)并在其上進(jìn)行數(shù)據(jù)分析,作為組織的過程財富。
測試人員在嚴(yán)格按照測試用例執(zhí)行測試后,發(fā)現(xiàn)實際輸出與預(yù)期輸出不一致時,將發(fā)現(xiàn)的問題作為缺陷填寫到缺陷跟蹤表中,缺陷跟蹤如表1所示。
我們使用SIM卡管理系統(tǒng)在EXCEL表格中的缺陷跟蹤作為例子來看,缺陷跟蹤表中的每一條信息都詳細(xì)地記錄了缺陷的多個方面。跟蹤表中的各項內(nèi)容分別由測試人員項目經(jīng)理或開發(fā)人員、以及驗證人員來進(jìn)行填寫;跟蹤表的各缺陷屬性可以根據(jù)需要進(jìn)行調(diào)整。
表1 缺陷跟蹤表
我們可以根據(jù)缺陷狀態(tài)來判斷測試進(jìn)展情況,開發(fā)人員的編程質(zhì)量,修正缺陷的進(jìn)度。通過缺陷的分析,可以完成產(chǎn)品質(zhì)量的評估,確定測試是否達(dá)到結(jié)束的標(biāo)準(zhǔn),也就是判定測試是否已滿足規(guī)定的需求。通過缺陷的分析,還可以發(fā)現(xiàn)開發(fā)過程中存在的問題;無論對測試人員,還是開發(fā)人員或管理人員,缺陷分析都是一項必不可少的工作。
缺陷分析分兩種:缺陷趨勢分析、缺陷分布分析。
系統(tǒng)測試完成后,測試工程師對系統(tǒng)測試結(jié)果要進(jìn)行統(tǒng)計分析,其中包括系統(tǒng)測試用例執(zhí)行情況,缺陷各屬性等數(shù)據(jù);并生成統(tǒng)計圖表,比如缺陷嚴(yán)重程度的餅圖、缺陷原因分析的柱狀圖等,這些都屬于缺陷的分布分析。
缺陷趨勢分析,也就是看軟件/系統(tǒng)缺陷有多嚴(yán)重,缺陷的影響有多大。缺陷趨勢分析從記錄所有發(fā)現(xiàn)的缺陷,為每個缺陷標(biāo)識屬性,定義缺陷相關(guān)度量,應(yīng)用統(tǒng)計方法/工具進(jìn)行分析開始;缺陷趨勢分析的內(nèi)容,主要是缺陷密度、缺陷重現(xiàn)率和缺陷周期。
下面以最基礎(chǔ)的統(tǒng)計工具EXCEL表格為例,來看一下SIM卡管理系統(tǒng)軟件項目的系統(tǒng)測試缺陷分析,統(tǒng)計數(shù)據(jù)主要來源于《缺陷跟蹤表》,主要從缺陷的嚴(yán)重程度、缺陷來源和缺陷在各模塊中的分布3方面來分析缺陷。缺陷嚴(yán)重程度分析和缺陷來源分析如圖2所示,缺陷按模塊分布如圖3所示。
由各個統(tǒng)計表格,可以得出嚴(yán)重的缺陷占所有缺陷的比例;哪些模塊中存在的缺陷比較多等信息。當(dāng)然還可以分析缺陷的類型,比如功能上的缺陷、性能上的缺陷、文檔缺陷等;或按照修復(fù)狀態(tài)來分析每輪回歸測試中,已經(jīng)修復(fù)的缺陷數(shù)、新發(fā)現(xiàn)的缺陷數(shù)、重新打開的缺陷數(shù)等信息。缺陷的分析統(tǒng)計,按照軟件/系統(tǒng)的需要,可以制定各種類型的統(tǒng)計分析圖表模式,充分使用測試過程中采集的基礎(chǔ)缺陷數(shù)據(jù),為下一步的度量工作打下良好的基礎(chǔ)。
軟件度量是對軟件開發(fā)項目、過程及其產(chǎn)品進(jìn)行數(shù)據(jù)定義、收集以及分析的持續(xù)性定量化過程,目的在于對此加以理解、預(yù)測、評估、控制和改善。比如“度量數(shù)據(jù)采集表及指示圖”表中的“質(zhì)量-測試”度量表,整體缺陷分布、模塊缺陷整體分布、測試輪次缺陷分布的采集表分別如表2、表3和表4所示。
以上的測試缺陷分析,作為衡量軟件質(zhì)量的一種標(biāo)準(zhǔn)是非常有效的;每個項目經(jīng)理在軟件項目的階段報告中都將缺陷分析的度量作為關(guān)鍵的部分;同時度量數(shù)據(jù)最簡單的使用,是可以納入開發(fā)人員的績效管理。
表2 整體缺陷分布采集表
表3 模塊缺陷整體分布采集表
表4 測試輪次缺陷分布采集表
對于系統(tǒng)測試何時停止,按規(guī)定,系統(tǒng)測試滿足軟件/系統(tǒng)規(guī)定的出口準(zhǔn)則才能停止。系統(tǒng)測試完成,一般情況下必須同時滿足以下條件。
1)系統(tǒng)測試用例100%覆蓋軟件需求規(guī)格說明書。
2)沒有遺留嚴(yán)重及一般缺陷。
3)軟件/系統(tǒng)的遺留缺陷率少于等于1個缺陷每千行代碼等。
這里的遺留缺陷率在項目立項時由項目組和測試組共同確定。要判斷軟件/系統(tǒng)是否滿足出口準(zhǔn)則,系統(tǒng)測試是否可以停止,就要通過判斷缺陷分析得出的結(jié)果與規(guī)定的要求是否符合來決定。
系統(tǒng)測試完成,評價及建議表中缺陷分析的內(nèi)容如表5所示。
表5 評價及建議表
缺陷管理的發(fā)展,可以說從口頭缺陷管理開始,到單一的文檔管理,在開發(fā)及測試團隊間傳遞;繼而發(fā)展到EXCEL圖表管理,也是最基礎(chǔ)的工具管理;然后開始使用缺陷跟蹤工具,例如BugZilla等;發(fā)展到現(xiàn)在,已經(jīng)有非常全面的企業(yè)級測試工具套集,例如,Rational Suite(Clear Case +Clear Quest + Req Pro)來確保標(biāo)準(zhǔn)流程在產(chǎn)品開發(fā)全生命周期中得以執(zhí)行。比如使用Bugzilla進(jìn)行缺陷跟蹤和分析,只需定制需要的分析內(nèi)容,針對參數(shù)進(jìn)行相應(yīng)設(shè)置。自動化提供了復(fù)用性,自動化測試腳本能被多次使用;既保證了統(tǒng)計分析的數(shù)據(jù)一致性,又提高分析效率,使軟件/系統(tǒng)提早上市。
[1] 朱少民.全程軟件測試[M]. 北京:電子工業(yè)出版社,2008.
[2] 柳純錄.軟件評測師教程[M]. 北京:清華大學(xué)出版社,2009.