唐雨薇
摘 要:隨著軟件規(guī)模的不斷擴大,軟件測試管理從粗放式的管理模式逐步轉(zhuǎn)化為精細(xì)化管理,本文從研究軟件測試管理的效率出發(fā),重點介紹了測試復(fù)雜度的科學(xué)算法,來協(xié)助廣大的質(zhì)量經(jīng)理在項目管理的過程中依據(jù)可靠的數(shù)據(jù)來提升測試管理的效率,從而邁出進(jìn)行精細(xì)化管理的第一步。
關(guān)鍵詞:軟件測試;軟件測試復(fù)雜度;軟件測試管理
一、引入軟件測試復(fù)雜度的重要性
在測試管理體系中,影響測試項目成功的因素很多,包括軟件研發(fā)者所提供的程序代碼復(fù)雜度、測試人員的測試代碼的質(zhì)量、項目功能的復(fù)雜度、項目的時間限制等等。這些因素在具體的實踐操作中是可以用具體的值來衡量的,將多個因素的分值綜合起來便得到測試復(fù)雜度的值,可以說軟件測試復(fù)雜度是測試管理體系中影響測試項目成功因素的一個綜合指數(shù)。
通常質(zhì)量經(jīng)理對軟件測試復(fù)雜度的確認(rèn),是主要依靠其個人能力、經(jīng)驗累積和對項目的熟悉程度進(jìn)行主觀判斷,這就導(dǎo)致了對軟件的測試具有很強的主觀性,為軟件項目埋下了風(fēng)險。加之測試本身的特性決定了測試活動實施過程中存在著大量的風(fēng)險,而風(fēng)險影響著測試活動的成敗。因此,本文中引入軟件測試復(fù)雜度計算公式,能較客觀地對軟件進(jìn)行測試復(fù)雜度的衡量,通過對軟件復(fù)雜度和測試復(fù)雜度的控制來降低軟件測試中的風(fēng)險,從而提高對軟件測試的管理效率。
二、軟件測試復(fù)雜度的算法原理
軟件測試復(fù)雜度是衡量影響軟件測試工作的因素綜合指數(shù),本文筆者通過分析測試管理工作中各種因素的變化情況,提煉出影響測試管理效率的關(guān)鍵因素并設(shè)計出了符合現(xiàn)代軟件測試復(fù)雜度的計算公式,即:軟件測試復(fù)雜度=代碼復(fù)雜度*代碼人員質(zhì)量分值*偽代碼分值*功能復(fù)雜度分值。
(一)代碼復(fù)雜度及度量方法。代碼復(fù)雜度是基于程序開發(fā)者所產(chǎn)生的程序代碼而提出概念,程序代碼的循環(huán)和選擇所構(gòu)成的環(huán)路越多,其代碼復(fù)雜度就越高?,F(xiàn)在已經(jīng)有若干種代碼復(fù)雜性的度量方法可供參考,其中McCabe QA是比較出色和實用的方法,它能夠計算出多種軟件代碼復(fù)雜度。McCabe是對軟件結(jié)構(gòu)進(jìn)行嚴(yán)格的算術(shù)分析得出程序拓?fù)浣Y(jié)構(gòu)復(fù)雜性的度量,明確指出項目各部分的復(fù)雜度量。
(二)代碼人員質(zhì)量及度量方法。(1)什么是代碼人員質(zhì)量。這是本文提出的一個新概念,基于多項目、連續(xù)性版本的軟件研發(fā)與測試工作中分析總結(jié)出:代碼人員編寫的代碼質(zhì)量是可以用一個數(shù)學(xué)公式進(jìn)行精確的計算的。(2)如何計算代碼人員質(zhì)量分值。計算代碼人員質(zhì)量分值需要幾個關(guān)鍵數(shù)據(jù):bug合計分值、嚴(yán)重bug級別占比數(shù)值、功能復(fù)雜度、bug功能比值。1)
bug合計分值:筆者把bug劃分為3個級別,分別是嚴(yán)重(3分)、一般(1分)、提示(0.5分)。bug合計分值就是由測試人員計算該代碼人員在代碼編寫過程中所得出的所有bug的分值之和,bug合計分值越高,說明代碼質(zhì)量越差。那么該如何來界定bug的級別?根據(jù)筆者的實踐經(jīng)驗,影響bug級別的因素主要有兩個:對系統(tǒng)的影響值和對用戶的影響值。當(dāng)一個bug發(fā)生的時候,在系統(tǒng)層面導(dǎo)致系統(tǒng)奔潰或癱瘓、在用戶層面則導(dǎo)致用戶的流程不能繼續(xù)或用戶數(shù)據(jù)錯誤,則為嚴(yán)重bug;在系統(tǒng)層面能在容錯性下繼續(xù)運行、在用戶層面用戶的流程可以繼續(xù)或則能通過其他路勁完成該流程,則為一般bug;在系統(tǒng)層面對系統(tǒng)的數(shù)據(jù)處理或性能都幾乎沒有影響、在用戶層面只是文字性錯誤或指引信息不夠準(zhǔn),則為提示bug。2) 嚴(yán)重bug級別占比數(shù)值:嚴(yán)重bug級別占比數(shù)值=嚴(yán)重bug分值/bug合計分值(保留4位小數(shù))。為體現(xiàn)軟件測試過程中測試的優(yōu)先級和用戶體驗的優(yōu)先級,筆者強調(diào)了嚴(yán)重bug對系統(tǒng)和用戶的影響。3) 功能復(fù)雜度:同一個項目的不同版本中都會由數(shù)個功能組成,在代碼人員進(jìn)行代碼編寫前,該功能或模塊的復(fù)雜度會由軟件的研發(fā)經(jīng)理、測試經(jīng)理、產(chǎn)品經(jīng)理為其進(jìn)行評分,所得到的分值即為功能復(fù)雜度分值。4) bug功能比值:bug功能比值=bug合計分值/功能復(fù)雜度(保留4位小數(shù))。針對每一個不同復(fù)雜度分值的功能或模塊,其bug自然會呈現(xiàn)出不同的級別。若功能復(fù)雜度越高,相應(yīng)的其bug的級別可能會越高,其代碼質(zhì)量就越差;若功能復(fù)雜度越高,相應(yīng)的bug的級別越低,其代碼質(zhì)量就越高。所以將bug合計分值對應(yīng)不同的功能復(fù)雜度的比值控制在一個合理范圍內(nèi)就會使代碼質(zhì)量得到保證。根據(jù)關(guān)鍵數(shù)據(jù)得出計算公式為:代碼人員質(zhì)量度=嚴(yán)重bug級別占比數(shù)值
*bug功能比值(保留4位小數(shù))。
綜上所述進(jìn)一步細(xì)化代碼人員質(zhì)量度計算公式設(shè)為:代碼人員質(zhì)量度=(嚴(yán)重分值/bug合計分值)*(bug合計分值/功能復(fù)雜度)
在表1中對代碼人員A和B的質(zhì)量度計算中可以看出:認(rèn)定一個代碼人員的代碼質(zhì)量,并不能簡單的查看bug數(shù)據(jù),也不能簡單的看功能復(fù)雜度的情況,而是將bug合計分值與對應(yīng)的功能復(fù)雜度控制住一個合理的范圍內(nèi),在這個合理的范圍內(nèi),bug合計分值可能會很高,但并不代表代碼人員質(zhì)量差,當(dāng)然當(dāng)代碼人員質(zhì)量度數(shù)字越小,則代表該代碼人員的代碼質(zhì)量也越高。
表1 代碼人員質(zhì)量度的計算實例
(三)偽代碼及度量方法。(1)什么是偽代碼。偽代碼就是一種算法描述語言。使用為代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言實現(xiàn)。因此,要實現(xiàn)此目的,偽代碼必須具有如下特點:① 必須結(jié)構(gòu)清晰 ② 代碼簡單 ③ 可讀性好 ④ 類似自然語言。本文中偽代碼分值就是通過前3個特點進(jìn)行定義計算的。(2)如何計算偽代碼分值。筆者在實踐經(jīng)驗中得出,在偽代碼的4個特點中,真正對偽代碼分值有影響的是前3個特點,因為即使偽代碼不太類似自然語言,由于第①項在整個偽代碼分值中的比重超過了50%,那么第4個特點幾乎可以忽略,故取消了計算公式中對第4個特點的數(shù)據(jù)評分。筆者將3個特點在偽代碼分值中所占比重進(jìn)行了科學(xué)的劃分:結(jié)構(gòu)清晰(S)占55%,代碼簡單(C)占20%,可讀性(R)占25%,并將每個特點的優(yōu)劣評價為優(yōu)秀+(5分)、優(yōu)秀(4分)、良+(3分)、良
(2分)、不合格(1分),計算公式為:偽代碼分值=S*55%+C*20%
+R*25%。在進(jìn)行正式的軟件代碼編寫以前,需要對現(xiàn)有版本的功能進(jìn)行偽代碼編寫,偽代碼分值越高,代表該偽代碼是質(zhì)量越高,從而轉(zhuǎn)換為正式代碼的可靠性就越強。
(四)功能復(fù)雜度及度量方法。對軟件規(guī)模和復(fù)雜度進(jìn)行正確的度量,可以降低軟件正確性測試的難度。目前,應(yīng)用最廣泛的就是“功能點分析度量法”。在該度量法中,將軟件項目管理中的功能點分為ILF(內(nèi)部邏輯文件)、EIF(外部接口文件)、EI(外部輸入)、EO(外部輸出)和EQ(外部查詢)5大類。對每個功能點自身而言,又可細(xì)分為2類:外部邏輯(接收外部輸入與輸出至外部)接口EL和內(nèi)部邏輯IL。當(dāng)某個功能需要提供更多的外部接口時,由于接口數(shù)量的增加導(dǎo)致對外需求處理的邏輯數(shù)增加,那么該功能的復(fù)雜度就會升高,即功能的接口數(shù)與復(fù)雜度之間成正比例關(guān)系。基于功能點,將復(fù)雜度的定義以“段”的形式劃分,具體為5個功能點為一個段的分界線,出現(xiàn)一個分界線便劃定1分,出現(xiàn)N個分界線,劃定(N+1)分,計算公式為:功能復(fù)雜度 =(N+1)EL*(N+1)IL
三、測試復(fù)雜度提高測試管理效率的應(yīng)用
本文測試復(fù)雜度的算法適用于一個已存在項目的連續(xù)性管理中,不適合新項目的研發(fā)管理。在任何一個項目的測試過程中資源都是有限的,那么該如何優(yōu)化資源類來提高測試管理效率從而提升軟件工程的質(zhì)量?從測試復(fù)雜度的算法中可以看出,計算測試復(fù)雜度的過程正是在優(yōu)化配置各種資源的過程。所以,在測試復(fù)雜度的算法中,必須要考慮以下規(guī)則:
(1)項目測試復(fù)雜度由各個功能的測試復(fù)雜度之和構(gòu)成。
(2)各個功能的測試復(fù)雜度的計算必須遵循功能由小到大的順序,由測試主管計算得出。(3)項目之初通過計算確定大致的測試框架、測試人員配備、測試思路。(4)測試復(fù)雜度是動態(tài)數(shù)據(jù),不是靜態(tài)數(shù)據(jù),項目中通過測試復(fù)雜度的動態(tài)數(shù)據(jù)對測試過程進(jìn)行微調(diào)。(5)根據(jù)項目功能復(fù)雜度設(shè)定測試復(fù)雜度的安全值范圍值。(6)功能測試復(fù)雜度分值管測試細(xì)節(jié)、項目測試復(fù)雜度分值管測試進(jìn)度。
從測試復(fù)雜度算法中可以看出,當(dāng)功能中的任意元素發(fā)生變化后都會導(dǎo)致最終數(shù)據(jù)結(jié)果的變化。筆者認(rèn)為測試復(fù)雜度數(shù)值變動是允許的,在動態(tài)數(shù)據(jù)中需要重點注意兩個數(shù)據(jù):(1)變動次數(shù)。當(dāng)變動次數(shù)>3時,就是一個危險信號的提示,表明實際的研發(fā)過程中該功能的邏輯發(fā)生了多次變化。(2)變動比率。變動比率=|(L-F)/F|,L為測試復(fù)雜度最后一次變動時的分值,F(xiàn)為測試復(fù)雜度第一次變動時的分值,當(dāng)變動比率>0.25時,表明項目功能的邏輯上有非常大的變動。當(dāng)以上兩種情況任何一種出現(xiàn)時,都需要管理者提高警惕,并主動去尋找原因與錯誤。
四、結(jié)束語
軟件測試是軟件工程的一個重要階段,也是保證軟件質(zhì)量的重要手段。統(tǒng)計表明,測試工作量在軟件研發(fā)總工作量中占到40%以上,軟件研發(fā)總成本中測試上開銷占到30%—50%,所以,對測試工作的有效管理,可以降低軟件研發(fā)成本,縮短研發(fā)周期。本文試圖通過引入測試復(fù)雜度算法,來幫助大家提高測試管理工作的效率,以便于更好的控制軟件項目的質(zhì)量。
參考文獻(xiàn):
[1] 陳文海.軟件測試管理工具的研究與實現(xiàn).北京.中國科學(xué)院研究生院(軟件研究所).2003
[2] 張健,徐寶文.《軟件測試》專輯前言[J].計算機學(xué)報.2011.