仝海燕,呂洪善,賈 爽
(1.亳州師范高等??茖W校理化系,安徽 亳州 236800;2.亳州職業(yè)技術學院電子與電氣工程系,安徽 亳州 236800)
白盒測試之基本路徑測試技術探析
仝海燕1,呂洪善2,賈 爽1
(1.亳州師范高等??茖W校理化系,安徽 亳州 236800;2.亳州職業(yè)技術學院電子與電氣工程系,安徽 亳州 236800)
結合教學過程中的內容,分析了白盒測試技術中覆蓋率較強的測試技術——基本路徑測試方法的相關概念,闡述了利用基本路徑測試設計測試用例的過程,最后通過實例說明基本路徑測試方法的使用。
軟件測試;軟件質量保證;白盒測試;基本路徑測試
目前,各種類型軟件的使用無處不在,已經(jīng)涉及人們生活的各個方面,如日常生活中的手機、智能冰箱、新一代數(shù)字電視、電子商務等等。在軟件的使用過程中,或多或少的會碰到一些不愉快的事情,如信息顯示不對、數(shù)據(jù)不完整、操作不靈活等,這些都是軟件質量問題,另外由軟件問題有時會引起其他問題,特別是經(jīng)濟、醫(yī)學、軍事等領域有關的軟件,一旦軟件質量出現(xiàn)異常將會造成很嚴重的后果。軟件質量的優(yōu)劣日益受到人們的重視,為減少乃至避免軟件故障的問題,軟件測試是保證軟件質量的最有效手段,在軟件正式上市之前,要對軟件進行相關的測試,以保證軟件正常運行。軟件測試技術包括很多,本文結合在軟件測試課程授課的一些經(jīng)驗,主要對白盒測試技術中覆蓋率較強的基本路徑測試技術進行了介紹,包括基本路徑測試的相關概念、測試用例設計過程,最后結合實例介紹基本路徑測試方法的使用。
1.1 軟件測試的定義
隨著人們對軟件質量認識和重視的程度,不同的階段軟件測試的定義也不同。1972年軟件測試的宗師Bill Hetzel博士在其論著《The Complete Guide to Software Testing》(《軟件測試完全指導書》)中指出:“軟件測試就是建立一種信心,認為程序能夠按預期的設想運行?!?979年,Glen ford J.Myers的《軟件測試的藝術》中將軟件測試定義為“測試是為發(fā)現(xiàn)錯誤而執(zhí)行的一個程序或者系統(tǒng)的過程。[1]”1983年,Bill Hetzel在《軟件測試完全指南》一書中指出:“測試是以評價一個程序或者系統(tǒng)屬性為目標的任何一種活動,測試是對軟件質量的度量”。到了2002年,Rick和Stefan在《系統(tǒng)的軟件測試》中對軟件測試做了進一步定義:“測試是為了度量和提高被測軟件的質量,對測試軟件進行工程設計、實施和維護的整個生命周期過程”[2]。
1.2 白盒測試
白盒測試是按照程序內部的結構測試程序,通過測試來檢測產(chǎn)品內部動作是否按照設計規(guī)格說明書的規(guī)定正常進行,檢驗程序中的每條通路是否都能按預定要求正確工作。白盒測試一般用來分析程序的內部結構,對測試者而言是透明的,測試者可以看到被測程序源代碼,并分析其內部結構[3]。因此,白盒測試也叫結構測試或邏輯驅動測試。
白盒測試要求對被測程序的結構特性做到一定程度的覆蓋,并以軟件中某類成分是否都已得到測試來判斷軟件測試的充分性。覆蓋的標準主要有語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合覆蓋、路徑覆蓋6種[4]。其中覆蓋強度最強的是路徑覆蓋,但由于軟件程序的復雜性,要達到理想的路徑測試是完全不可能的,因此在進行路徑測試時需要把覆蓋的路徑數(shù)進行縮減,實際測試時往往采用的是基本路徑測試技術。
1.3 基本路徑測試
基本路徑測試是在程序控制流圖的基礎上,通過分析控制構造的環(huán)路復雜性,導出基本可執(zhí)行路徑集合,然后據(jù)此設計測試用例[4,5]。設計出的測試用例要保證在測試中程序的每一條可執(zhí)行語句至少執(zhí)行一次。
1.4 程序控制流圖
在進行軟件(程序)測試的設計時,對程序的流程圖進行簡化,圖1中每個處理都退化成一個結點,流線變成連接不同結點的有向弧,簡化之后所得的圖形稱為程序控制流圖,即控制流圖是退化的程序流程圖[5]??刂屏鲌D將程序流程圖中結構化構件改用一般有向圖的形式表示。
在軟件(程序)的控制流圖中對應的圖形符號如圖1所示。圖1中的圓圈稱為結點,代表程序代碼中的一個或多個無分支語句,箭頭表示控制流的方向,也稱為邊。出度大于1的結點稱為判定結點或分支結點,對應的是代碼中的條件。由邊和結點所圍成的封閉部分叫區(qū)域,對控制流圖中的區(qū)域進行計數(shù)時注意將圖形外的部分也要算一個區(qū)域統(tǒng)計進去。
圖1 控制流圖中的圖形符號
1.5 程序環(huán)形復雜性
程序的環(huán)路復雜性也稱為McCabe復雜性度量或圈復雜度[5]。環(huán)形復雜性是為軟件邏輯復雜度進行度量的一種尺度,在進行程序的基本路徑測試時,從程序的環(huán)路復雜性可導出程序基本路徑集合中的獨立路徑條數(shù),根據(jù)獨立路徑數(shù)目可確保程序中每個可執(zhí)行語句至少執(zhí)行一次的測試用例數(shù)目。
1.6 獨立路徑
獨立路徑是指包括一組以前沒有處理的語句或條件的一條路徑。從程序的控制流圖來看,一條獨立路徑至少包含有一條在其他獨立路徑中從未有過的邊的路徑[5,6]。對于給定的控制流圖,由獨立路徑構成的基本路徑集合不是唯一的,在設計測試用例時只要能夠確?;韭窂郊械膱?zhí)行,就可以使得程序中的每個可執(zhí)行語句至少執(zhí)行一次。
基本路徑測試方法是根據(jù)程序的控制流圖,計算出相應的環(huán)形復雜性,通過環(huán)形復雜性的值確定獨立路徑的數(shù)目,從而導出控制流圖的基本路徑集,然后結合基本路徑集對程序或軟件進行測試用例的設計。這種方法適合于模塊的詳細設計及源程序,測試的主要步驟如下:以項目或軟件測詳細設計或代碼為基礎,導出程序的控制流圖;根據(jù)控制流圖,采用環(huán)形復雜性的計算方法得到的相應控制流圖的環(huán)形復雜性,環(huán)形復雜性的計算方法在后面有所描述;根據(jù)程序的環(huán)型復雜性,確定程序的獨立路徑數(shù)目,導出程序的獨立路徑,從而得出基本路徑集;根據(jù)基本路徑集設計測試用例,確保路徑集中每條獨立路徑的執(zhí)行。
下面結合軟件測試課程的教學內容,來說明使用基本路徑測試技術設計測試用例的應用。
3.1 實例代碼描述
3.2 基本路徑測試技術方法來設計測試用例
根據(jù)代碼畫程序的控制流圖時,若是連續(xù)的順序執(zhí)行語句在控制流圖中可以壓縮為一個結點,若代碼中的條件是復合條件時,要在畫控制流圖時注意先將復合條件轉化為單條件。根據(jù)前面介紹的基本路徑測試技術生成測試用例的方法。
第一步,依據(jù)程序代碼導出該實例對應的控制流圖,如圖2所示。
第二步,根據(jù)程序的控制流圖計算程序的環(huán)形復雜性。環(huán)形復雜性的計算方法可以根據(jù)控制流圖的結點和邊數(shù)進行計算,也可以根據(jù)控制流圖的判定結點數(shù)目來計算,還可以根據(jù)控制流圖的區(qū)域數(shù)來計算。給定控制流圖的環(huán)形復雜性的值為控制流圖的邊數(shù)減去控制流圖的結點數(shù)后再加上2或者是控制流圖的區(qū)域數(shù)目或者是判定結點的數(shù)目加1。本文采用結點和邊數(shù)來計算,該實例中控制流圖的邊數(shù)為11,結點數(shù)目為9,邊數(shù)減去結點數(shù)后為2,將該數(shù)字再加上2即可得到該控制流圖的復雜性為4。
圖2 實例的控制流圖
第三步,根據(jù)程序控制流圖的復雜性,確定程序的獨立路徑數(shù)目,導出相應的獨立路徑,得出程序的基本路徑集。通過第二步可知程序控制流圖的環(huán)形復雜性為4,找出控制流圖的獨立路徑數(shù)目為4,下面給出本例的具體獨立路徑:
路徑1:1-8->9->17
路徑2:1-8->9->10->11->15->16->9>17
路徑3:1-8->9->10->12->15->16->9->17
路徑4:1-8->9->10>12->13-14->15->16->9->17
第四步,上面的4條獨立路徑構成的基本路基集,依據(jù)這個基本路基集可設計4個相應的測試用例數(shù)據(jù),如表1所示。用這些數(shù)據(jù)作為測試輸入數(shù)據(jù),可以確保這4條獨立路徑的執(zhí)行,使程序能夠達到基本路徑覆蓋的標準。對于源程序中的循環(huán)體,設計的測試數(shù)據(jù)遵循簡化的Z路徑覆蓋,也就是說測試的輸入數(shù)據(jù)使程序的循環(huán)體執(zhí)行零次或1次。
軟件測試是軟件質量保證的最有效手段,軟件測試的技術主要分為黑盒測試和白盒測試,在白盒測試中,基本路徑測試是白盒測試技術中覆蓋較強的測試技術。本文結合軟件測試課程的教學內容,介紹了白盒測試之基本路徑測試技術的相關概念,分析了基本路徑測試技術設計測試用例的過程,最后結合實例給出了基本路徑測試技術的應用,希望對學習基本路徑測試技術的學者有所幫助和啟發(fā)。
[1]劉竹林.軟件測試技術與案例實踐[M].北京:北京師范大學出版社,2011
[2]柳純錄.軟件評測師教程[M].北京:清華大學出版社,2005年
[3]王冠.基本路徑測試中的McCabe算法改進及應用[J].哈爾濱理工大學學報,2010,15(1):48
[4]仝春靈.基本路徑法測試_典型排序程度的測試用例設計[J].山西師范大學學報:自然科學版,2004,19(1):92
[5]高春艷.基本路徑測試法的應用[J].開封大學學報,2012,26(2):81
[6]賈曉強.基于白盒測試的基本路徑測試[J].渭南師范學院學報,2008,23(2):72-73
[7]張永剛.淺析軟件測試技術及用例構造方法[J].科技信息,2012(36):561
[8]杜慶峰.基本路徑測試技術研究[J].信息與電腦,2010(6):129
Analysis of Basic Path Testing Technique Based on White Box Test
TONG Hai-yan1,LU Hong-shan2,JIA Shuang1
(1.Department of Physics and Chemistry,Bozhou Teachers College,Anhui Bozhou 236800,China;2.Department of Electronics and Electric Engineering,Vocational and Technical College,Anhui Bozhou 236800,China)
By combining the contents in teaching,this paper analyzes the related concepts of the basic test method,the test technology with relatively strong covering rate in white box test technique,elaborates the process for the design of test examples by using basic path tests,and finally illustrates the application of the basic path test method by practical examples.
software test;software quality guarantee;white box test;basic path test
TP374
A
1672-058X(2014)01-0065-05
責任編輯:代小紅
2013-08-01;
2013-09-12.
仝海燕(1979-),女,安徽碭山人,講師,碩士,從事軟件測試、辦公自動化等課程教學研究、模式識別與智能系統(tǒng)研究.