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