(大連醫科大學現代教育技術部,遼寧 大連 116044)郭欣,戴冶
郭欣(1980-)女,遼寧大連人,實驗師,碩士研究生,主要研究方向為網絡工程。
摘要:軟件內嵌探針測試是在探針函數模板的框架內編寫被測對象,并對被測對象進行面向對象軟件的常規測試,在觀察預期結果與實際結果是否一致的同時,還要察看探針函數輸出的信息,以確定對象的狀態是否正確。本論文研究的重點在于探針函數的構成、探針函數的實現及內嵌探針測試方法的應用研究,意在構筑一個基本的應用框架,提供一種實用的測試方法。
關鍵詞:軟件內嵌探針;探針函數;測試
Abstract: Built-in-self-probe-test in software (BISPT for software) compiles the object to be tested in the template of the probe function and conducts the regular
test for the OO testing. While observing the consistency between the expected results and the actual results, the output information of the probe function has to be checked in order to confirm the validity of the object to be tested.The keystone of this paper is to compose the probe function, to implement some kinds of probe functions and to make a research about the application of BISPT for software, which is intended to construct a fundamental application framework and provide a practical testing method.
Key words: BISPT for Software; Probe Function; Testing
1 引言
軟件內建自測試是軟件測試和可測性設計研究領域中提出的一種新方法[1],將其改稱為軟件內嵌探針測試更為貼切。軟件內嵌探針測試是在被測對象內插入探針,在不破壞被測對象原有特性的基礎上輸出測試所需要的信息,便于測試人員確定被測對象的狀態和查找故障的原因,從而保證測試順利進行,主要應用于類測試、集成測試和異常測試[2]。
軟件內嵌探針測試的基本構成是探針模板部分和常規測試部分。本文研究的重點在于探針模板部分的設計,主要體現在類內方法測試的探針設計和類測試的探針設計兩個過程。
2 探針模板的設計
2.1 類內方法測試的探針設計
類內方法測試的探針設計流程如圖1所示。操作步驟如下:
圖1 類內方法測試的探針設計流程
(1)分析流程圖,確定測試點的類型
測試點可根據其插入位置不同分為四類:檢查前置條件和后置條件的測試點、檢查分支語句的測試點、檢查循環不變式的測試點、檢查路徑的測試點。
(2)插裝探針函數
根據測試點類型的不同插入不同類型和數量的探針函數,見表1。
用于檢查前置條件和后置條件的測試點通常使用斷言探針函數。探針函數的數量由類不變式決定,一般來說,一條斷言只對應一個探針函數。檢查前置條件的探針函數插在類內方法的入口,檢查后置條件的探針函數插在類內方法的出口。
用于檢查分支語句的測試點分別使用兩種探針函數:若檢查分支被執行的次數,可以插入分支覆蓋探針函數;若判斷每次進入分支時相應的變量是否符合條件,則可以插入斷言探針函數。
無論是哪種探針函數,都是在每一個分支末尾插入,因此,探針函數的插入數量與分支數相等。
用于檢查循環不變式的測試點分別使用兩種探針函數:若對邊界進行檢查,可以使用斷言探針函數;若對循環次數進行檢查,則使用分支覆蓋探針函數。無論是哪種探針函數,其插入的位置均在循環體的末尾,數量均為一個。
用于檢查路徑的測試點采用路徑探針函數,插入方法是在路徑的每一個連續執行塊中插入一個路徑探針函數的一個分探針,當程序被執行時,探針函數記錄測試用例所測試的路徑。
(3)生成測試用例
最常用的方法是采用值域矩陣的形式,見表2。值域矩陣是變量、邊界條件、上點/離點及測試實例的一種表格表示。表格第一行記錄項目號、模塊號、測試者姓名和測試日期。表格第二行記錄測試號。表格的列的基本構成是:條件部分、動作部分和結果部分。條件部分記錄變量和邊界條件的上點/離點,動作部分記錄這些變量在不同條件下所引發的動作,結果部分記錄期望的測試結果和實際的測試結果。表格體內用“○”標示不同變量值的排列組合及對應的動作。
表2 測試用例
(4)運行測試用例
根據值域矩陣運行測試用例。在測試結果一欄,若實際結果與期望結果一致,則在相應的單元格內以“√”標示,表示測試通過,否則以“╳”標示,表示測試沒有通過。
(5)生成測試報告
對于通過測試的被測對象可以進入下一階段的測試。對于沒有通過測試的被測對象需要返還給開發組進行修改,并重新生成測試用例,對修改后的被測對象進行測試。這一過程將一直循環執行,直至測試用例通過為止。
2.2 類測試的探針設計
類測試的探針設計流程如圖2所示。操作步驟如下:
圖2
類測試的探針設計流程
(1)繪制狀態轉換圖,確定狀態不變式
狀態轉換圖類似于流程圖,將對象的狀態之間的轉換關系用圖的形式表示出來。狀態轉換圖包括狀態、觸發狀態轉變的事件,以及該事件引發的動作,如圖3所示。
圖3 狀態轉換圖
(2)插裝探針函數
由狀態圖分析得到轉換樹,如圖4所示。在觸發狀態轉變的事件的末尾插入檢查狀態不變式的斷言探針函數,每一條斷言只對應一條斷言探針語句。
圖4 轉換樹
(3)繪制響應矩陣
由轉換樹繪制響應矩陣。響應矩陣將所有的狀態和事件繪制到一個表里,見表3。每個受監視的事件均為一行,每個受監視事件對其監視的每個真值組合均有一列,且對其監視中的每個謂詞均有一個附加列。分別考慮矩陣中行與列交叉的單元格,若在某一狀態可以接受一個事件,在此單元格內以“√”標示,代表正確路徑。若不能接受,有兩種情況:其一,在此狀態不可能引發該事件,則在單元格內以“╳”標示,表示排除這種組合。除此以外,單元格內均填入數字“1”或“2”,表示應拒絕或應激發非正常終端服務并使過程停止,這些單元格表示可能的潛行路徑。
表3 響應矩陣
(4)設計測試用例包
由響應矩陣分析得到一致性測試包和潛行路徑測試包。由響應矩陣中標有“√”的元素組成一致性測試包,由有數字的元素組成潛行路徑測試包。
(5)運行測試用例
根據一致性測試包和潛行路徑測試包對被測對象進行測試,并將測試結果記入實際結果一欄。
(6)生成測試報告
通過測試的被測對象可以進入下一階段的測試。沒有通過測試的被測對象需要返還給開發組進行修改,再對修改后的被測對象重新測試,直至通過為止。
3 結論
軟件內嵌探針測試是面向對象軟件測試的有效方法。面向對象軟件的測試要求是基于狀態的測試,軟件內嵌探針測試方法恰是基于狀態的測試方法。它采用比較成熟的黑盒測試和白盒測試[3]對被測對象進行測試,同時,使用探針函數檢查被測對象,將測試相關信息輸出到指定的文件中。通過構建探針函數使測試人員對程序內部工作流程一目了然,而且既不會破壞面向對象軟件的封裝機制,也不會影響測試的進行。
其他作者:戴冶(1982-),男,遼寧鐵嶺人,助理實驗師,學士,主要研究方向為網絡工程及一卡通技術。
參考文獻:
[1] 彭成寒, 徐拾義. 軟件內建自測試中模板內容的研究和實現[J]. 計算機應用研究, 2006, (10): 78-81.
[2] 譚建勇, 徐拾義. 軟件內嵌探針測試及其面向對象模板的設計[J]. 計算機工程與應用, 2003, 39 (18): 124-126.
[3] 賀平. 軟件測試教程[M]. 北京: 電子工業出版社, 2005.
摘自《自動化博覽》2010年第十期