《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 使用McCabe IQ提高測試質量的研究
使用McCabe IQ提高測試質量的研究
來源:微型機與應用2012年第3期
黃華林
廣東女子職業(yè)技術學院,廣東 廣州 511450
摘要: 隨著軟件產業(yè)的急速發(fā)展,應用軟件系統(tǒng)規(guī)模不斷增大,企業(yè)對軟件質量的的重視程度越來越高,軟件企業(yè)對軟件測試的投入也逐漸增加。探討了McCabe IQ測試工具對軟件測試質量和效益的提升。
關鍵詞: 覆蓋率 McCabe IQ
Abstract:
Key words :

摘  要: 隨著軟件產業(yè)的急速發(fā)展,應用軟件系統(tǒng)規(guī)模不斷增大,企業(yè)對軟件質量的的重視程度越來越高,軟件企業(yè)對軟件測試的投入也逐漸增加。探討了McCabe IQ測試工具對軟件測試質量和效益的提升。
關鍵詞: 覆蓋率;McCabe IQ

 隨著軟件產業(yè)的急速發(fā)展,應用軟件系統(tǒng)規(guī)模不斷增大,企業(yè)對軟件質量的的重視程度越來越高,軟件企業(yè)對軟件測試的投入也逐漸增加。目前的商業(yè)環(huán)境下,商業(yè)應用軟件的測試著重考慮如下問題:
 (1)效益。怎樣確保每個測試都有時間和經濟方面的效益。(2)徹底。測試到達怎樣的程度可以合理地認為程序已經沒有錯誤了。(3)資源分配。測試資源的分配是否合理,是否聚焦在軟件的高危模塊上,核心功能部分是否得到足夠的測試。
軟件測試中,覆蓋率分析的方法越來越多地為測試人員使用。覆蓋率是軟件測試的一項重要指標,通過達到良好的測試覆蓋率,可以保證軟件測試的質量。
1 McCabe IQ測試工具
 McCabe IQ是美國McCabe Software公司的軟件質量管理解決方案,McCebe IQ是一款基于McCabe圈復雜度進行質量度量和測試的工具,為用戶提供軟件質量度量、軟件結構分析及動態(tài)結構化測試的全面支持。McCabe IQ提供客觀的方法評估測試覆蓋率,具有一致性、重復性、客觀解釋、質量評估、優(yōu)化測試及分配資源等強大功能,能真正保證測試每個獨立路徑,可以確定測試過的路徑和沒測試過的路徑。
 圈復雜度是用來衡量一個模塊判定結構的復雜程度,數量上表現為獨立現行路徑條數,即合理的預防錯誤所需測試的最少路徑條數[1]。圈復雜度高說明代碼質量可能很差,難于測試和維護。根據經驗,程序的可能錯誤和圈復雜度高有著很大關系。圈復雜度顯示了在測試一個單元時,為保證軟件質量而需要測試的基本路徑的最小數目[2]。McCabe IQ建議將圈復雜度不超過10,因為更高的復雜度使測試變得復雜并且可能會發(fā)生更多的錯誤。
2 使用McCabe IQ做覆蓋率分析
 McCabe IQ的度量基于軟件結構數學化的嚴格分析,這種分析以McCebe圖復雜度為基礎,明確地確定了高風險區(qū)域。McCebe IQ就是一款基于McCabe圈復雜度進行質量度量和測試的工具。McCabe IQ覆蓋率分析使用了源代碼插裝技術,能生成分支和路徑覆蓋報告。對于給定的程序,所有的可測試路徑的數目通常非常巨大,找到一個有意義的可測試路徑子集非常重要。被MeCabe IQ標識出的路徑雖不能代表程序中所有可能路徑,但最小的測試路徑子集至少遍歷每個一次判定,將使McCabe IQ的“圈復雜度”路徑分析技術成為可能。
 McCabe IQ可以很方便地做到如下分析:
?。?)復雜度分析:McCabe IQ提供了復雜度信息的即時訪問,測量不同的源代碼特性,標識出相關的復雜度信息和程序不同模塊的結構化程度,特別復雜或非結構化代碼部分可以在覆蓋率報告中突出出來,使得測試工程師更容易識別出有缺陷的代碼。
?。?)軟件變更分析:當一個程序被修改,測試需要聚焦在修改的代碼上,以及那些被修改代碼影響的代碼,McCabe IQ的軟件變更分析不但可以標識出變更過的代碼,而且還可以標識出被修改所影響的模塊。
2.1 McCabe IQ提升功能測試
 在功能測試中,McCabe IQ從程序的需求中得到要測試的功能,然后執(zhí)行測試用例以驗證程序是否按照預期運行。功能測試的目的是為了識別缺失的功能、不能正確運行的功能,以及功能缺陷[3]。
2.1.1 功能測試在執(zhí)行過程中要解決如下問題:
 (1)隱含功能的丟失。由于需求定義隱含缺陷,從需求文檔得到的功能測試會丟失隱含功能。這樣,功能測試很難確保測試的完全性,而且功能測試在功能合并階段也會導致有問題的行為。
 (2)停止測試的時機。在功能測試中,可測試功能組合的數量相當巨大,最糟糕的情況是功能組合的數量將是2的功能需求次冪的形式,顯然測試所有的功能組合是不可能的。
2.1.2 通過McCabe IQ的覆蓋分析可以提升功能測試
?。?)McCabe IQ覆蓋分析可以指出未測試的分支,并突出為測試的分支,隱含功能和明確的功能需求將同樣被突出出來。
?。?)McCabe IQ覆蓋分析可以識別出高風險模塊塊,然后使用更為苛刻的路徑覆蓋進行分析。
 使用路徑覆蓋分析可以遍歷所有的關鍵功能組合,包括隱含的功能和明確的功能。使用圖復雜度路徑作為危險模塊的測試程度的索引,可以追蹤記錄可累加的分支和路徑執(zhí)行的次數,通過基于累加的分支和圈復雜度覆蓋率決定可以接受的測試程度,從而解決以上兩個問題。
2.2 McCabe IQ提升單元測試
 單元測試是針對軟件的最小模塊進行正確性檢驗的測試工作,是代碼正確性驗證的重要措施。這些最小模塊是隔離出來的代碼段,稱為單元。單元測試的最大挑戰(zhàn)在于識別出需要運行的最小的測試的集合,理想情況下,每一個可能路徑都要被測試,但是這通常是不可能的。挑戰(zhàn)在于分離出路徑的子集來提供所有可測試路徑的覆蓋分析,并且使得路徑子集最小,并且沒有單元級的冗余[4]。
McCabe IQ路徑圖精確的被設計為單元級的覆蓋管理,McCabe IQ識別出的最小路徑集合可以測試到所有的代碼單元,提供所有可測試路徑的覆蓋分析,至少確認最危險模塊已經被覆蓋。
2.3 McCabe IQ提升回歸測試
 回歸測試是指測試程序開發(fā)過程中的修訂版本,這種測試驗證新增的功能必須按照預期運行,所做的修改達到了預定的目的,錯誤得到改正,未變更的功能沒有被修改或變更所影響[5]。
2.3.1 回歸測試需要解決問題
?。?)程序修改后要找出程序中被變更影響的模塊。這樣,需要做回歸測試的只是受變更影響的模塊,提高了效率。
?。?)驗證修改過的功能已經被測試。程序的變更通常會引入新的隱含功能,沒有黑盒測試的技術,驗證所有變更已經被測試是不可能的。
?。?)驗證新的功能已經被測試。當做完全功能測試的時候,測試新的功能,要驗證完整性測試,隱含功能的測試及功能組合的測試[6]。
2.3.2 通過McCabe IQ的覆蓋分析可以提升回歸測試
 McCabe IQ覆蓋分析能精確指出程序中已經變更的分支和模塊。覆蓋分析可以限制在這個區(qū)域,聚焦那些需要測試的地方。McCabe IQ隔離出那些被變更影響的程序區(qū)域,允許聚焦在需要做回歸測試的部分,而忽略那些和變更的程序無關聯的模塊。對于修改過的功能和新功能,McCabe IQ與新的功能測試一樣去對待。
軟件的功能測試根據需求來驗證軟件功能的實現情況,單元測試主要認證代碼的正確性,回歸測試保證新做的修改不影響原有的功能需求,McCabe IQ的覆蓋率分析在這些方面都能提供很好的幫助。靈活運用McCabe IQ測試工具可以提高測試效率和測試質量,挖掘出軟件的潛在錯誤,保證軟件產品的質量。
參考文獻
[1] 朱鴻,金凌紫.軟件質量與保證[M].北京:科學出版社,1997.
[2] 樊慶林,吳建國.提高軟件測試效率的方法研究[J].計算機技術與發(fā)展,2006,16(10).
[3] 葉言苓,崔彥軍.軟件測試管理的研究與應用[J].計算機應用與軟件,2003,20(9).
[4] 李秋英,李海峰,徐剛.基于覆蓋率信息的軟件可靠性增長測試實踐[J].計算機應用研究,2010,27(7).
[5] 高海昌,賀曉紅,馮博琴,等.軟件結構測試自動化關技術研究[J].微電子學與計算機,2005,22(02).
[6] 鄭艷.一種支持軟件測試的測試工具研究[J].無錫職業(yè)技術學院學報,2008(4).

此內容為AET網站原創(chuàng),未經授權禁止轉載。