(大連醫(yī)科大學(xué)現(xiàn)代教育技術(shù)部,遼寧 大連 116044)郭欣,戴冶
郭欣(1980-)女,遼寧大連人,實(shí)驗(yàn)師,碩士研究生,主要研究方向?yàn)榫W(wǎng)絡(luò)工程。
摘要:軟件內(nèi)嵌探針測(cè)試是在探針函數(shù)模板的框架內(nèi)編寫(xiě)被測(cè)對(duì)象,并對(duì)被測(cè)對(duì)象進(jìn)行面向?qū)ο筌浖某R?guī)測(cè)試,在觀察預(yù)期結(jié)果與實(shí)際結(jié)果是否一致的同時(shí),還要察看探針函數(shù)輸出的信息,以確定對(duì)象的狀態(tài)是否正確。本論文研究的重點(diǎn)在于探針函數(shù)的構(gòu)成、探針函數(shù)的實(shí)現(xiàn)及內(nèi)嵌探針測(cè)試方法的應(yīng)用研究,意在構(gòu)筑一個(gè)基本的應(yīng)用框架,提供一種實(shí)用的測(cè)試方法。
關(guān)鍵詞:軟件內(nèi)嵌探針;探針函數(shù);測(cè)試
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 引言
軟件內(nèi)建自測(cè)試是軟件測(cè)試和可測(cè)性設(shè)計(jì)研究領(lǐng)域中提出的一種新方法[1],將其改稱(chēng)為軟件內(nèi)嵌探針測(cè)試更為貼切。軟件內(nèi)嵌探針測(cè)試是在被測(cè)對(duì)象內(nèi)插入探針,在不破壞被測(cè)對(duì)象原有特性的基礎(chǔ)上輸出測(cè)試所需要的信息,便于測(cè)試人員確定被測(cè)對(duì)象的狀態(tài)和查找故障的原因,從而保證測(cè)試順利進(jìn)行,主要應(yīng)用于類(lèi)測(cè)試、集成測(cè)試和異常測(cè)試[2]。
軟件內(nèi)嵌探針測(cè)試的基本構(gòu)成是探針模板部分和常規(guī)測(cè)試部分。本文研究的重點(diǎn)在于探針模板部分的設(shè)計(jì),主要體現(xiàn)在類(lèi)內(nèi)方法測(cè)試的探針設(shè)計(jì)和類(lèi)測(cè)試的探針設(shè)計(jì)兩個(gè)過(guò)程。
2 探針模板的設(shè)計(jì)
2.1 類(lèi)內(nèi)方法測(cè)試的探針設(shè)計(jì)
類(lèi)內(nèi)方法測(cè)試的探針設(shè)計(jì)流程如圖1所示。操作步驟如下:
圖1 類(lèi)內(nèi)方法測(cè)試的探針設(shè)計(jì)流程
(1)分析流程圖,確定測(cè)試點(diǎn)的類(lèi)型
測(cè)試點(diǎn)可根據(jù)其插入位置不同分為四類(lèi):檢查前置條件和后置條件的測(cè)試點(diǎn)、檢查分支語(yǔ)句的測(cè)試點(diǎn)、檢查循環(huán)不變式的測(cè)試點(diǎn)、檢查路徑的測(cè)試點(diǎn)。
(2)插裝探針函數(shù)
根據(jù)測(cè)試點(diǎn)類(lèi)型的不同插入不同類(lèi)型和數(shù)量的探針函數(shù),見(jiàn)表1。
用于檢查前置條件和后置條件的測(cè)試點(diǎn)通常使用斷言探針函數(shù)。探針函數(shù)的數(shù)量由類(lèi)不變式?jīng)Q定,一般來(lái)說(shuō),一條斷言只對(duì)應(yīng)一個(gè)探針函數(shù)。檢查前置條件的探針函數(shù)插在類(lèi)內(nèi)方法的入口,檢查后置條件的探針函數(shù)插在類(lèi)內(nèi)方法的出口。
用于檢查分支語(yǔ)句的測(cè)試點(diǎn)分別使用兩種探針函數(shù):若檢查分支被執(zhí)行的次數(shù),可以插入分支覆蓋探針函數(shù);若判斷每次進(jìn)入分支時(shí)相應(yīng)的變量是否符合條件,則可以插入斷言探針函數(shù)。
無(wú)論是哪種探針函數(shù),都是在每一個(gè)分支末尾插入,因此,探針函數(shù)的插入數(shù)量與分支數(shù)相等。
用于檢查循環(huán)不變式的測(cè)試點(diǎn)分別使用兩種探針函數(shù):若對(duì)邊界進(jìn)行檢查,可以使用斷言探針函數(shù);若對(duì)循環(huán)次數(shù)進(jìn)行檢查,則使用分支覆蓋探針函數(shù)。無(wú)論是哪種探針函數(shù),其插入的位置均在循環(huán)體的末尾,數(shù)量均為一個(gè)。
用于檢查路徑的測(cè)試點(diǎn)采用路徑探針函數(shù),插入方法是在路徑的每一個(gè)連續(xù)執(zhí)行塊中插入一個(gè)路徑探針函數(shù)的一個(gè)分探針,當(dāng)程序被執(zhí)行時(shí),探針函數(shù)記錄測(cè)試用例所測(cè)試的路徑。
(3)生成測(cè)試用例
最常用的方法是采用值域矩陣的形式,見(jiàn)表2。值域矩陣是變量、邊界條件、上點(diǎn)/離點(diǎn)及測(cè)試實(shí)例的一種表格表示。表格第一行記錄項(xiàng)目號(hào)、模塊號(hào)、測(cè)試者姓名和測(cè)試日期。表格第二行記錄測(cè)試號(hào)。表格的列的基本構(gòu)成是:條件部分、動(dòng)作部分和結(jié)果部分。條件部分記錄變量和邊界條件的上點(diǎn)/離點(diǎn),動(dòng)作部分記錄這些變量在不同條件下所引發(fā)的動(dòng)作,結(jié)果部分記錄期望的測(cè)試結(jié)果和實(shí)際的測(cè)試結(jié)果。表格體內(nèi)用“○”標(biāo)示不同變量值的排列組合及對(duì)應(yīng)的動(dòng)作。
表2 測(cè)試用例
(4)運(yùn)行測(cè)試用例
根據(jù)值域矩陣運(yùn)行測(cè)試用例。在測(cè)試結(jié)果一欄,若實(shí)際結(jié)果與期望結(jié)果一致,則在相應(yīng)的單元格內(nèi)以“√”標(biāo)示,表示測(cè)試通過(guò),否則以“╳”標(biāo)示,表示測(cè)試沒(méi)有通過(guò)。
(5)生成測(cè)試報(bào)告
對(duì)于通過(guò)測(cè)試的被測(cè)對(duì)象可以進(jìn)入下一階段的測(cè)試。對(duì)于沒(méi)有通過(guò)測(cè)試的被測(cè)對(duì)象需要返還給開(kāi)發(fā)組進(jìn)行修改,并重新生成測(cè)試用例,對(duì)修改后的被測(cè)對(duì)象進(jìn)行測(cè)試。這一過(guò)程將一直循環(huán)執(zhí)行,直至測(cè)試用例通過(guò)為止。
2.2 類(lèi)測(cè)試的探針設(shè)計(jì)
類(lèi)測(cè)試的探針設(shè)計(jì)流程如圖2所示。操作步驟如下:
圖2
類(lèi)測(cè)試的探針設(shè)計(jì)流程
(1)繪制狀態(tài)轉(zhuǎn)換圖,確定狀態(tài)不變式
狀態(tài)轉(zhuǎn)換圖類(lèi)似于流程圖,將對(duì)象的狀態(tài)之間的轉(zhuǎn)換關(guān)系用圖的形式表示出來(lái)。狀態(tài)轉(zhuǎn)換圖包括狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)變的事件,以及該事件引發(fā)的動(dòng)作,如圖3所示。
圖3 狀態(tài)轉(zhuǎn)換圖
(2)插裝探針函數(shù)
由狀態(tài)圖分析得到轉(zhuǎn)換樹(shù),如圖4所示。在觸發(fā)狀態(tài)轉(zhuǎn)變的事件的末尾插入檢查狀態(tài)不變式的斷言探針函數(shù),每一條斷言只對(duì)應(yīng)一條斷言探針語(yǔ)句。
圖4 轉(zhuǎn)換樹(shù)
(3)繪制響應(yīng)矩陣
由轉(zhuǎn)換樹(shù)繪制響應(yīng)矩陣。響應(yīng)矩陣將所有的狀態(tài)和事件繪制到一個(gè)表里,見(jiàn)表3。每個(gè)受監(jiān)視的事件均為一行,每個(gè)受監(jiān)視事件對(duì)其監(jiān)視的每個(gè)真值組合均有一列,且對(duì)其監(jiān)視中的每個(gè)謂詞均有一個(gè)附加列。分別考慮矩陣中行與列交叉的單元格,若在某一狀態(tài)可以接受一個(gè)事件,在此單元格內(nèi)以“√”標(biāo)示,代表正確路徑。若不能接受,有兩種情況:其一,在此狀態(tài)不可能引發(fā)該事件,則在單元格內(nèi)以“╳”標(biāo)示,表示排除這種組合。除此以外,單元格內(nèi)均填入數(shù)字“1”或“2”,表示應(yīng)拒絕或應(yīng)激發(fā)非正常終端服務(wù)并使過(guò)程停止,這些單元格表示可能的潛行路徑。
表3 響應(yīng)矩陣
(4)設(shè)計(jì)測(cè)試用例包
由響應(yīng)矩陣分析得到一致性測(cè)試包和潛行路徑測(cè)試包。由響應(yīng)矩陣中標(biāo)有“√”的元素組成一致性測(cè)試包,由有數(shù)字的元素組成潛行路徑測(cè)試包。
(5)運(yùn)行測(cè)試用例
根據(jù)一致性測(cè)試包和潛行路徑測(cè)試包對(duì)被測(cè)對(duì)象進(jìn)行測(cè)試,并將測(cè)試結(jié)果記入實(shí)際結(jié)果一欄。
(6)生成測(cè)試報(bào)告
通過(guò)測(cè)試的被測(cè)對(duì)象可以進(jìn)入下一階段的測(cè)試。沒(méi)有通過(guò)測(cè)試的被測(cè)對(duì)象需要返還給開(kāi)發(fā)組進(jìn)行修改,再對(duì)修改后的被測(cè)對(duì)象重新測(cè)試,直至通過(guò)為止。
3 結(jié)論
軟件內(nèi)嵌探針測(cè)試是面向?qū)ο筌浖y(cè)試的有效方法。面向?qū)ο筌浖臏y(cè)試要求是基于狀態(tài)的測(cè)試,軟件內(nèi)嵌探針測(cè)試方法恰是基于狀態(tài)的測(cè)試方法。它采用比較成熟的黑盒測(cè)試和白盒測(cè)試[3]對(duì)被測(cè)對(duì)象進(jìn)行測(cè)試,同時(shí),使用探針函數(shù)檢查被測(cè)對(duì)象,將測(cè)試相關(guān)信息輸出到指定的文件中。通過(guò)構(gòu)建探針函數(shù)使測(cè)試人員對(duì)程序內(nèi)部工作流程一目了然,而且既不會(huì)破壞面向?qū)ο筌浖姆庋b機(jī)制,也不會(huì)影響測(cè)試的進(jìn)行。
其他作者:戴冶(1982-),男,遼寧鐵嶺人,助理實(shí)驗(yàn)師,學(xué)士,主要研究方向?yàn)榫W(wǎng)絡(luò)工程及一卡通技術(shù)。
參考文獻(xiàn):
[1] 彭成寒, 徐拾義. 軟件內(nèi)建自測(cè)試中模板內(nèi)容的研究和實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用研究, 2006, (10): 78-81.
[2] 譚建勇, 徐拾義. 軟件內(nèi)嵌探針測(cè)試及其面向?qū)ο竽0宓脑O(shè)計(jì)[J]. 計(jì)算機(jī)工程與應(yīng)用, 2003, 39 (18): 124-126.
[3] 賀平. 軟件測(cè)試教程[M]. 北京: 電子工業(yè)出版社, 2005.
摘自《自動(dòng)化博覽》2010年第十期