亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

        中圖分類號:TP311 文獻標識碼: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

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

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

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

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

        1.1 面向路徑

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

        1.2 面向目標

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

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

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

        2.1 探測器技術

        探測器結構如下所示:

        mov ax,linenum

        mov bx,2

        mul bx

        lea di,msg

        add di,ax

        mov ah,31h

        mov[di+1],ah

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

        2.2 插裝技術

        分支插裝技術記錄的是“遍歷”程序分支的情況。在8086/8088中的轉移指令分為條件轉移指令和非條件轉移指令(這里只考慮條件轉移指令)。以下面的源程序段中的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標號與add dx,ax之間插入另一個探測器,并不能準確記錄jz lab1這條轉移指令產生的2條分支的執(zhí)行情況。本系統(tǒng)采用將條件轉移指令略加變換的方法來完成。變換的方法是生成2個臨時標號,如11與12,將jz labl轉化為如圖1所示的形式。

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

        2.3 雙向鄰接表

        表結點和頭結點結構如下所示:

        程序流圖的雙向鄰接表存儲結構說明如下:

        #define MAX_VERTEX_NUM 20

        Typedef struct ArcNode

        {

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

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

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

        InfoType *info;//與該弧相關的信息

        }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 目標搜索

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

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

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

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

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

        4 結 語

        基于程序的控制流圖,通過雙向鄰接表鏈式存儲結構的定義及實現(xiàn),插裝技術的應用,以及目標跟蹤方法的采用,能有效地生成測試數(shù)據(jù),從而進一步推進了軟件測試技術的自動實現(xiàn)。

        參 考 文 獻

        [1]鄭人杰.軟件測試技術\\.北京:清華大學出版社,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路徑覆蓋的測試用例自動生成技術研究\\.現(xiàn)代電子技術,2006,29(6):9294.

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

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

        国产精品区一区第一页| 亚洲av综合色区一区二区| 亚洲一区二区免费在线观看视频| 18禁无遮挡无码网站免费| 五月色婷婷丁香无码三级| 国产视频一区二区三区在线看| 狠狠躁夜夜躁人人爽天天 | av免费网站在线免费观看| 香蕉视频一级片| 真人作爱免费视频| 无套内内射视频网站| 大陆成人精品自拍视频在线观看 | 人妻少妇不满足中文字幕| 精品国产一区二区三区三| 在线亚洲日本一区二区| 日本精品人妻一区二区三区| 在线观看国产精品91| a级毛片免费观看视频 | 神马影院午夜dy888| 白白色发布的在线视频| 亚洲一区免费视频看看| 国产精品一区二区三区蜜臀| 国产精品白浆视频免费观看| 免费可以在线看A∨网站| 性一乱一搞一交一伦一性| 亚洲精品无码久久久久牙蜜区| 免费欧洲毛片a级视频老妇女| 午夜视频国产在线观看| 日本一区二区三区熟女俱乐部| 日韩亚洲国产中文字幕| 日本一区不卡高清在线观看 | 国产精品亚洲A∨无码遮挡| 亚洲国产成人久久一区www| 国内精品久久久久国产盗摄| 蜜桃视频第一区免费观看| 国产精品久久中文字幕亚洲| 久久国产欧美日韩高清专区| 欧美午夜精品久久久久久浪潮| 无码国产精品一区二区免费模式| 日本va欧美va精品发布| 青青草原综合久久大伊人精品|