999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

測試用例自動生成方法研究與實現(xiàn)

2008-04-12 00:00:00
現(xiàn)代電子技術(shù) 2008年16期

摘 要:測試用例的生成工作是指選定被測任務(wù)、分析輸入數(shù)據(jù)、確定其取值、并分析對應(yīng)的輸出數(shù)據(jù)。軟件測試數(shù)據(jù)生成在軟件系統(tǒng)開發(fā)費用中占很大比重,如果該過程能自動實現(xiàn),則會極大地減少軟件開發(fā)的周期和費用。介紹一種測試用例自動生成的鏈方法,這種測試技術(shù),結(jié)合插裝技術(shù)及目標(biāo)跟蹤方法,能有效生成測試用例,從而提高了測試效率。

關(guān)鍵詞:測試用例;鏈;目標(biāo)搜索;測試數(shù)據(jù)

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:B 文章編號:1004373X(2008)1610003

Research and Realization of the Method for Testing Examples Automatic Building

XIAO Yu

(Xi′an Military Academy,Xi′an,710108,China)

Abstract:The task,making of testing examples,is a process that choosing task,analysing input date,making sure numerical value rang and analysing output date.Software testing occupied a good many expenses in exploitation of software system.If the process can be realized automatically,the expenses will be decreased and the periods will be shortened.This paper introduces a chain method of testing examples automatic building.The test technique,which combines the inserting technique and the object tracking method,may effectually create testing examples effectively and thus improve testing efficiency.

Keywords:testing examples;chain;object searching;test data

測試用例的生成工作是指選定被測任務(wù),分析輸入數(shù)據(jù),確定其取值,并分析對應(yīng)的輸出數(shù)據(jù)。這是決定測試是否成功的關(guān)鍵環(huán)節(jié)。目前最完善的工具也不能自動生成測試用例,而是采用人工選取的方法。測試用例選取的一個總的原則就是以盡可能少的測試用例發(fā)現(xiàn)盡可能多的錯誤。目前已有許多實用的技術(shù)幫助人們選擇測試用例,如邊值分析、等價類劃分、域測試等。

軟件測試數(shù)據(jù)生成在軟件系統(tǒng)開發(fā)費用中占很大比重。如果該過程能自動實現(xiàn),則會極大地減少軟件開發(fā)的周期和費用。這里介紹一種鏈方法,它利用數(shù)據(jù)的相關(guān)性分析來指導(dǎo)測試數(shù)據(jù)的生成,因而能更有效地生成測試數(shù)據(jù)。

1 生成測試數(shù)據(jù)的方法

在初始化測試數(shù)據(jù)之后,程序員面臨的問題是找到額外的測試數(shù)據(jù)測定沒有被覆蓋的程序元素,如何找到合適的數(shù)據(jù)測試那些語句(還稱為節(jié)點)需要程序員有豐富的編程經(jīng)驗,往往需要花費很多時間,從而增加了軟件開發(fā)的整體開銷。這是因為在軟件維護中,程序員并不總是處理自己編寫的代碼,經(jīng)常需要修改其他人的程序,往往只能理解一部分,這給維護工作帶來一定的困難。而利用測試數(shù)據(jù)生成器能幫助程序員生成輸入數(shù)據(jù)來測定語句。它主要采用2種方法,即面向路徑和面向目標(biāo)。

1.1 面向路徑

面向路徑指的是選擇程序路徑,然后生成該路徑的輸入數(shù)據(jù)。要測試的路徑可以自動生成,也可以由用戶提供?,F(xiàn)有的面向路徑的測試數(shù)據(jù)生成器有一些不足之處,這些不足之處與選擇路徑的過程有關(guān)。不知道選定路徑是否可行,使得面向路徑的方法在使用上受到限制,也就是說常會選定一些不可執(zhí)行的路徑,對這些路徑的分析計算成果往往都被浪費掉了。

1.2 面向目標(biāo)

面向目標(biāo)是指評定目標(biāo)語句(或節(jié)點)的過程與所選取的路徑無關(guān)。它的一般方法是只考慮“必要”的分支(它影響目標(biāo)節(jié)點的執(zhí)行),忽略“不必要”的分支(它對目標(biāo)節(jié)點的執(zhí)行毫無影響)。該方法克服了面向路徑方法的局限性,完全基于程序的控制流圖。經(jīng)實驗證明,該方法與以往的方法相比,能更有效地生成測試數(shù)據(jù)。

2 目標(biāo)搜索的實現(xiàn)

本系統(tǒng)的研制就是基于程序的控制流圖,采用面向目標(biāo)的方法,并利用動態(tài)調(diào)試工具,從而有效地生成測試數(shù)據(jù)。它的基本思想是在目標(biāo)節(jié)點執(zhí)行之前先執(zhí)行一系列“必要”的節(jié)點。如果目標(biāo)節(jié)點沒有執(zhí)行,可以根據(jù)逆向推理進一步查找原因。這里定義一種探測器結(jié)構(gòu),以記錄程序的執(zhí)行路線。此外,還定義了一種鏈?zhǔn)酱鎯Y(jié)構(gòu)——雙向鄰接表,它將傳統(tǒng)的鄰接表和逆鄰接表結(jié)合起來,在表結(jié)點和頭結(jié)點中分別加上指向前一條弧的指針,以及指向第一條指向該頂點的弧的指針,以便于逆向推理的實現(xiàn)。

2.1 探測器技術(shù)

探測器結(jié)構(gòu)如下所示:

mov ax,linenum

mov bx,2

mul bx

lea di,msg

add di,ax

mov ah,31h

mov[di+1],ah

為記錄程序的執(zhí)行路線,只要跟蹤跳轉(zhuǎn)語句的執(zhí)行情況即可,因此,在每一個跳轉(zhuǎn)語句之后插入一個探測器,就可以很好地記錄程序的語句覆蓋情況。首先,建立一個記錄文件,初始文件中各位數(shù)據(jù)均為0,其中,相鄰的兩位分別代表跳轉(zhuǎn)語句的左右2個分支。執(zhí)行插入探測器的程序之后,會將記錄文件中相應(yīng)位上的0改寫為1。通過判斷文件中1的位置來確定對應(yīng)的行號,并在源文件中相應(yīng)的行上作出標(biāo)記。在記錄文件中可出現(xiàn)4種組合情況:00,01,10,1l。在源程序中對應(yīng)的行上分別標(biāo)記為:none,left,right及double,分別表示沒有執(zhí)行跳轉(zhuǎn)語句、執(zhí)行了左分支、右分支以及雙向分支。

2.2 插裝技術(shù)

分支插裝技術(shù)記錄的是“遍歷”程序分支的情況。在8086/8088中的轉(zhuǎn)移指令分為條件轉(zhuǎn)移指令和非條件轉(zhuǎn)移指令(這里只考慮條件轉(zhuǎn)移指令)。以下面的源程序段中的jz labl指令為例說明分支覆蓋測試的實現(xiàn)。

Sub:…

jc lab1

lab: mov al,01

jz lab1

add bx,ax

lab1: add bx,ax

test al,03

如果在jz labl與add bx,ax之間插入探測器,在labl標(biāo)號與add dx,ax之間插入另一個探測器,并不能準(zhǔn)確記錄jz lab1這條轉(zhuǎn)移指令產(chǎn)生的2條分支的執(zhí)行情況。本系統(tǒng)采用將條件轉(zhuǎn)移指令略加變換的方法來完成。變換的方法是生成2個臨時標(biāo)號,如11與12,將jz labl轉(zhuǎn)化為如圖1所示的形式。

從功能上講,它與原來的程序是等價的。轉(zhuǎn)化后的程序中要想記錄jz labl產(chǎn)生分支的執(zhí)行情況就很容易了。可在11與jmpl2之間插入一個探測器,在11與jmp labl之間放入另一個探測器,這樣就能正確記錄程序分支的執(zhí)行情況。其中代表探測器。

2.3 雙向鄰接表

表結(jié)點和頭結(jié)點結(jié)構(gòu)如下所示:

程序流圖的雙向鄰接表存儲結(jié)構(gòu)說明如下:

#define MAX_VERTEX_NUM 20

Typedef struct ArcNode

{

int arjvex;//該弧所指向的頂點的位置

struct ArcNode *nextarc; //指向下一條弧的指針

struct ArcNode *priarc; //指向前一條弧的指針

InfoType *info;//與該弧相關(guān)的信息

}Arcnode;

Typedef struct Vnode

{

VertexType data; //頂點信息

ArcNode *firstoutarc; //指向第一條依附該頂點的弧的指針

ArcNode *firstinarc; //指向第一條指向該頂點的弧的指針

}Vnode,AdjList[MAX_VERTEX_NUM];

以下面程序段為例進行說明。該程序段的流程圖如圖2所示。其雙向鄰接表如圖3所示。

cmp ax,[si+4];25

jnc fmax2;26

mov ax,[si+4];27

fmax2:movflag,2;28

movmax,ax;29

3 目標(biāo)搜索

輸入目標(biāo)節(jié)點之后,即可根據(jù)記錄文件中的信息進行目標(biāo)搜索,其過程如下:

(1) 建立雙向鄰接表(節(jié)點的adjvex域為行號);

(2) 輸入目標(biāo)節(jié)點序號;

(3) 查找目標(biāo)節(jié)點。程序執(zhí)行之后,在記錄文件中將會記錄其執(zhí)行路線。若從該文件中找到目標(biāo)節(jié)點的記錄,說明該節(jié)點已被執(zhí)行過,查找成功;若沒有找到,則沿其后向指針找到其父親節(jié)點,再查找父親節(jié)點的執(zhí)行情況。若沒有執(zhí)行過,則繼續(xù)查找,否則,說明目標(biāo)節(jié)點的執(zhí)行與此節(jié)點有關(guān),可進一步判斷出該語句是一個跳轉(zhuǎn)語句。若改變該節(jié)點的執(zhí)行條件,則一定會改變分支走向。

因此,通過更換一組測試用例的方法可以改變該點的執(zhí)行流。如果無法找到合適的測試用例,可利用動態(tài)調(diào)試工具(TuboDebug)中的數(shù)據(jù)修改功能修改寄存器中的值,從而改變該點的執(zhí)行流。改變后的程序執(zhí)行后,在記錄文件中會生成新的執(zhí)行記錄。根據(jù)新的記錄文件再次進行統(tǒng)計,并建立新的文件標(biāo)記。重復(fù)上述操作,直到找到目標(biāo)節(jié)點或其后向節(jié)點為空為止。若其后向節(jié)點為空,則說明此目標(biāo)節(jié)點是不可達(dá)的。

4 結(jié) 語

基于程序的控制流圖,通過雙向鄰接表鏈?zhǔn)酱鎯Y(jié)構(gòu)的定義及實現(xiàn),插裝技術(shù)的應(yīng)用,以及目標(biāo)跟蹤方法的采用,能有效地生成測試數(shù)據(jù),從而進一步推進了軟件測試技術(shù)的自動實現(xiàn)。

參 考 文 獻(xiàn)

[1]鄭人杰.軟件測試技術(shù)\\.北京:清華大學(xué)出版社,1992.

[2]\\莫斯里.軟件測試自動化\\.鄧波,黃麗娟,曹青春,等譯.北京:機械工業(yè)出版社,2003.

[3]Doong R K,F(xiàn)rankl P G.The ASTOOT Approach to Testing Objectoriented Programs\\.ACM Transactionson Software Engineering and Methodology,1994,13(2):101130.

[4]夏輝,宋昕,王理.基于Z路徑覆蓋的測試用例自動生成技術(shù)研究\\.現(xiàn)代電子技術(shù),2006,29(6):9294.

[5]胡濱.軟件自動測試工具的研究\\.現(xiàn)代電子技術(shù),2007,30(18):9799.

作者簡介 肖 瑜 男,1964年出生,新疆伊犁人,教授。研究方向計算機仿真與模擬。

主站蜘蛛池模板: 国产主播喷水| 亚洲综合极品香蕉久久网| 亚洲最大福利视频网| 国产精品第| 国产精品私拍99pans大尺度| 国产正在播放| 国产不卡网| 国产欧美精品午夜在线播放| 亚洲aⅴ天堂| 99视频在线观看免费| 四虎精品国产永久在线观看| 成人夜夜嗨| 亚亚洲乱码一二三四区| 婷婷五月在线视频| 毛片在线看网站| 国产午夜一级毛片| 日本人妻丰满熟妇区| 国产成人a在线观看视频| 91福利在线观看视频| 女人毛片a级大学毛片免费| 欧美精品成人一区二区在线观看| 五月激激激综合网色播免费| 国产精品真实对白精彩久久| 福利一区在线| 午夜天堂视频| AV不卡国产在线观看| 一级做a爰片久久毛片毛片| 狠狠色丁香婷婷| 亚洲中文字幕无码爆乳| 在线国产你懂的| m男亚洲一区中文字幕| 日韩激情成人| 国产浮力第一页永久地址 | 亚洲精品无码AV电影在线播放| 国产色婷婷视频在线观看| 欧美另类精品一区二区三区| 天天摸夜夜操| 亚洲高清无码精品| 欧美日韩中文字幕二区三区| 色婷婷综合激情视频免费看| 亚亚洲乱码一二三四区| 午夜无码一区二区三区| 国产成人综合在线观看| 国产男女XX00免费观看| 青青青国产视频手机| 国产香蕉在线| 日韩成人在线网站| 中日韩一区二区三区中文免费视频 | 亚洲天堂网2014| 福利视频一区| 中文字幕第1页在线播| 狠狠色香婷婷久久亚洲精品| 蝴蝶伊人久久中文娱乐网| 国产精品高清国产三级囯产AV| 成年片色大黄全免费网站久久| 青青草原偷拍视频| 日本午夜精品一本在线观看| 欧类av怡春院| 欧美视频在线观看第一页| 国内精品小视频福利网址| 26uuu国产精品视频| 精品视频一区二区三区在线播| 欧美成人免费一区在线播放| 亚洲色图狠狠干| 手机看片1024久久精品你懂的| 国产精品亚洲一区二区在线观看| 特级aaaaaaaaa毛片免费视频| 福利一区在线| a级毛片毛片免费观看久潮| 免费黄色国产视频| 亚洲天堂2014| 亚洲一级毛片在线观播放| 国产精品综合色区在线观看| 中文字幕免费视频| 国内精品久久九九国产精品| 欧美狠狠干| 一区二区三区精品视频在线观看| 久久综合九九亚洲一区| 99热国产在线精品99| 成人看片欧美一区二区| 亚洲欧洲日韩久久狠狠爱| 日韩在线成年视频人网站观看|