欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于擴(kuò)展的數(shù)據(jù)流模型來(lái)生成測(cè)試用例的方法與裝置的制造方法

文檔序號(hào):8298963閱讀:270來(lái)源:國(guó)知局
一種基于擴(kuò)展的數(shù)據(jù)流模型來(lái)生成測(cè)試用例的方法與裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件測(cè)試的測(cè)試用例擴(kuò)增方法與裝置,特別是一種基于擴(kuò)展的數(shù)據(jù)流模型來(lái)生成測(cè)試用例的方法與裝置。
【背景技術(shù)】
[0002]程序中的故障大多與程序中的數(shù)據(jù)流密切相關(guān)。這些故障與由其他程序元素(比如謂詞、函數(shù)或方法等)引起的故障所產(chǎn)生的行為特點(diǎn)是不一樣的。事實(shí)上,程序中與數(shù)據(jù)流相關(guān)的故障呈現(xiàn)出一些獨(dú)特的特征:
[0003]1.有些故障不會(huì)導(dǎo)致錯(cuò)誤的執(zhí)行路徑,但其計(jì)算結(jié)果是不正確的:即程序執(zhí)行軌跡是正確的,沒(méi)有產(chǎn)生控制流錯(cuò)誤,但是某個(gè)或某些變量的值出現(xiàn)異常,甚至程序可能直到最終輸出結(jié)果時(shí),才表現(xiàn)出輸出結(jié)果與預(yù)期的不符。
[0004]2.有些故障會(huì)導(dǎo)致程序中的控制流路徑出現(xiàn)錯(cuò)誤,但如果僅利用程序中控制流信息來(lái)進(jìn)行測(cè)試用例的擴(kuò)增,對(duì)故障檢測(cè)的效果不是太好。
[0005]3.有些故障需要經(jīng)過(guò)多次計(jì)算變量的值才觸發(fā)。比如只有在某個(gè)循環(huán)內(nèi)部進(jìn)行多次迭代計(jì)算之后才有可能導(dǎo)致某個(gè)變量值出現(xiàn)溢出、越界、誤差過(guò)大等問(wèn)題。這類(lèi)現(xiàn)象可稱(chēng)為累積效應(yīng)或迭代效應(yīng)。這類(lèi)故障往往涉及復(fù)雜類(lèi)型的變量,如數(shù)組、鏈表,以及對(duì)象類(lèi)等。當(dāng)需要進(jìn)行測(cè)試用例擴(kuò)增來(lái)對(duì)這類(lèi)故障進(jìn)行檢測(cè)時(shí),追蹤變量狀態(tài)的軌跡就相當(dāng)重要了。
[0006]4.有些故障時(shí)常會(huì)呈現(xiàn)出傳遞性,即一個(gè)變量的錯(cuò)誤取值會(huì)導(dǎo)致另一個(gè)變量的取值也出現(xiàn)錯(cuò)誤,稱(chēng)此為變量的錯(cuò)誤傳遞(或傳播)特性。這種情況往往是變量之間的依賴(lài)關(guān)系在起作用,因此有必要在進(jìn)行測(cè)試用例擴(kuò)增來(lái)對(duì)這類(lèi)故障檢測(cè)時(shí)考慮變量之間的依賴(lài)關(guān)系O
[0007]從上述的分析可以得知,軟件的各種故障,特別是與計(jì)算結(jié)果或其控制邏輯相關(guān)的故障,大多數(shù)都與數(shù)據(jù)流相關(guān),即受到變量狀態(tài)的變化及其相互之間的依賴(lài)關(guān)系的影響。這些影響時(shí)常是彼此交織和錯(cuò)綜復(fù)雜的,使得程序包含著各種不確定的和難以精確簡(jiǎn)單辨識(shí)的特征。

【發(fā)明內(nèi)容】

[0008]本發(fā)明是一種基于擴(kuò)展的數(shù)據(jù)流模型來(lái)生成測(cè)試用例的方法與裝置,所要解決的是如何構(gòu)建擴(kuò)展的數(shù)據(jù)流模型、利用擴(kuò)展的數(shù)據(jù)流模型來(lái)進(jìn)行影響分析及生成測(cè)試用例的技術(shù)問(wèn)題。通過(guò)對(duì)程序修改前后擴(kuò)展數(shù)據(jù)流模型的變化,利用這些變化的信息,有針對(duì)性地生成測(cè)試用例。利用的是靜態(tài)數(shù)據(jù)流分析與動(dòng)態(tài)數(shù)據(jù)流信息收集的技術(shù)手段,從而實(shí)現(xiàn)對(duì)擴(kuò)展數(shù)據(jù)流模型的信息收集,獲得生成具有專(zhuān)門(mén)針對(duì)數(shù)據(jù)流相關(guān)故障的測(cè)試用例的技術(shù)效果O
[0009]本發(fā)明的技術(shù)解決問(wèn)題是:針對(duì)程序中數(shù)據(jù)流相關(guān)的故障,研宄其行為特征,特別是在相應(yīng)故障被觸發(fā)后的行為模型,提供一種擴(kuò)展的數(shù)據(jù)流模型的測(cè)試用例擴(kuò)增方法與裝置。該裝置提供了對(duì)程序修改前后的針對(duì)數(shù)據(jù)流的影響分析,動(dòng)態(tài)對(duì)測(cè)試用例進(jìn)行擴(kuò)增等機(jī)制,達(dá)到了專(zhuān)門(mén)針對(duì)數(shù)據(jù)流故障進(jìn)行測(cè)試的目的。
[0010]本發(fā)明的技術(shù)解決方案:一種基于擴(kuò)展的數(shù)據(jù)流模型來(lái)生成測(cè)試用例的裝置,其特征在于:該裝置包括有數(shù)據(jù)的收集和預(yù)處理模塊、擴(kuò)展數(shù)據(jù)流模型的構(gòu)建模塊、基于擴(kuò)展數(shù)據(jù)流模型的影響分析模塊、基于擴(kuò)展數(shù)據(jù)流模型的測(cè)試用例擴(kuò)增模塊。
[0011]擴(kuò)展數(shù)據(jù)流模型描述了程序中的變量在執(zhí)行時(shí)的變化信息,以及變量之間的依賴(lài)關(guān)系。而已有的數(shù)據(jù)流分析、數(shù)據(jù)流測(cè)試的方法和技術(shù),雖然反應(yīng)了變量的定義、使用的特征,不過(guò)卻難以形成程序執(zhí)行中變量完整的“軌跡”,這給程序修改后導(dǎo)致數(shù)據(jù)流改變的分析帶來(lái)了一定的難度。擴(kuò)展數(shù)據(jù)流模型由兩部分組成:變量狀態(tài)(即變量在程序中的每一次被賦值所表示的狀態(tài))的轉(zhuǎn)移關(guān)系與變量狀態(tài)之間的依賴(lài)關(guān)系。變量狀態(tài)的轉(zhuǎn)移關(guān)系的是指在程序的運(yùn)行過(guò)程中,變量狀態(tài)的變化序列。變量狀態(tài)之間的依賴(lài)關(guān)系指的是一個(gè)針對(duì)變量X賦值語(yǔ)句,X出現(xiàn)在賦值語(yǔ)句的左側(cè),而其他的變量出現(xiàn)在賦值語(yǔ)句的右側(cè),則變量X與其他的變量存在依賴(lài)關(guān)系。
[0012]擴(kuò)展數(shù)據(jù)流模型的構(gòu)建方法通過(guò)獲取變量狀態(tài)的依賴(lài)關(guān)系和獲取變量狀態(tài)的轉(zhuǎn)移關(guān)系。靜態(tài)數(shù)據(jù)流信息中所有的變量狀態(tài)都默認(rèn)是0,進(jìn)行靜態(tài)數(shù)據(jù)流分析時(shí)根據(jù)程序執(zhí)行語(yǔ)句的先后順序,分別設(shè)置靜態(tài)數(shù)據(jù)流信息中的變量狀態(tài)的序號(hào)。進(jìn)行動(dòng)態(tài)數(shù)據(jù)流分析時(shí)尋找每一個(gè)變量狀態(tài)所依賴(lài)的變量,并將變量狀態(tài)與所依賴(lài)的變量狀態(tài)進(jìn)行存儲(chǔ)。獲取變量狀態(tài)轉(zhuǎn)移關(guān)系需要判斷兩個(gè)變量狀態(tài)是否指向同一個(gè)變量且兩者是相鄰的定義操作狀態(tài)。
[0013]基于擴(kuò)展數(shù)據(jù)流模型的影響分析模塊通過(guò)獲取故障修復(fù)前受影響的語(yǔ)句集So和獲取故障修復(fù)后受影響的語(yǔ)句集Sp。獲取故障修復(fù)前受影響的語(yǔ)句集通過(guò)尋找以每一個(gè)修改的變量狀態(tài)為起點(diǎn)的變量狀態(tài)轉(zhuǎn)移軌跡,可以找到這些轉(zhuǎn)移軌跡對(duì)應(yīng)的語(yǔ)句集通過(guò)尋找以每一個(gè)修改的變量狀態(tài)所影響的變量狀態(tài),可以找到對(duì)應(yīng)的語(yǔ)句集S2。這兩部分語(yǔ)句集進(jìn)行去重處理(即31與S2的交集),將會(huì)得到故障修復(fù)前受影響的語(yǔ)句集So。獲取故障修復(fù)后受影響的語(yǔ)句集步驟首先會(huì)尋找修復(fù)之后對(duì)應(yīng)的變量狀態(tài),并尋找以每一個(gè)修復(fù)之后改變的變量狀態(tài)為起點(diǎn)的狀態(tài)轉(zhuǎn)移軌跡,可以找到這些轉(zhuǎn)移軌跡對(duì)應(yīng)的語(yǔ)句集。通過(guò)尋找每一個(gè)修復(fù)之后改變的變量狀態(tài)所影響的變量狀態(tài),可以找到對(duì)應(yīng)的語(yǔ)句集。這兩部分語(yǔ)句集進(jìn)行去重處理,將會(huì)得到故障修復(fù)前受影響的語(yǔ)句集Sp。最后求So與Sp的差集So-Sp,即可以得到與故障相關(guān)的變量狀態(tài)信息所對(duì)應(yīng)的語(yǔ)句集S。
[0014]基于擴(kuò)展數(shù)據(jù)流模型的測(cè)試用例擴(kuò)增模塊則基于已有的測(cè)試用例集,通過(guò)動(dòng)態(tài)對(duì)其輸入進(jìn)行修改,并檢查其是否覆蓋修改前后變量狀態(tài)信息所對(duì)應(yīng)的語(yǔ)句集S,如果覆蓋,則擴(kuò)增該測(cè)試用例。
[0015]采用上述的擴(kuò)展的數(shù)據(jù)流模型的測(cè)試用例擴(kuò)增方法與裝置,其特點(diǎn)在于:對(duì)程序在運(yùn)行時(shí)的變量取值行為進(jìn)行了研宄,提出了一種包含變量狀態(tài)變化軌跡和變量狀態(tài)之間依賴(lài)關(guān)系的模型,其中變量狀態(tài)變化軌跡和變量狀態(tài)之間依賴(lài)關(guān)系的信息提取和抽象是構(gòu)建擴(kuò)展數(shù)據(jù)流模型模型的關(guān)鍵。變量狀態(tài)變化具有時(shí)序性,即變量的變化是按照一定順序進(jìn)行的,根據(jù)輸入的不同,變量狀態(tài)會(huì)呈現(xiàn)出不同的變化。
[0016]由于程序運(yùn)行時(shí)變量狀態(tài)變化和變量間依賴(lài)關(guān)系往往會(huì)呈現(xiàn)數(shù)量多、關(guān)系復(fù)雜等問(wèn)題,因此擴(kuò)增的數(shù)據(jù)流模型信息收集方法與構(gòu)建方法也是該裝置的特點(diǎn),其中最為關(guān)鍵的是能夠獲取程序在動(dòng)態(tài)執(zhí)行過(guò)程中使用到的變量的名稱(chēng)、所在的方法以及相關(guān)索引等。在進(jìn)行程序執(zhí)行歷史數(shù)據(jù)收集時(shí),需要收集程序在歷次測(cè)試執(zhí)行中,各條執(zhí)行語(yǔ)句中涉及到的各種變量及其使用方式(變量操作),以及相互之間的依賴(lài)關(guān)系,同時(shí)還需收集這些變量在運(yùn)行過(guò)程中的變化次數(shù)等統(tǒng)計(jì)信息,并據(jù)此來(lái)構(gòu)建擴(kuò)展的數(shù)據(jù)流模型。
[0017]測(cè)試用例擴(kuò)增是軟件測(cè)試中一個(gè)很重要的研宄方向。有研宄表明:“如果對(duì)程序源代碼的改動(dòng)在10行以?xún)?nèi)或者更少的話(huà),那么第一次就正確改正程序的可能性會(huì)達(dá)到50%。如果對(duì)程序的源代碼改動(dòng)在50行左右,那么第一次就正確改正程序的可能性?xún)H僅只有20%。”因此在修改代碼后需要進(jìn)行回歸測(cè)試。而當(dāng)回歸測(cè)試的結(jié)果不符合預(yù)期,有可能需要補(bǔ)充新的測(cè)試用例。
[0018]利用程序修改過(guò)程中發(fā)現(xiàn)的與數(shù)據(jù)流相關(guān)的元素,作為新的測(cè)試目標(biāo),從而生成新的測(cè)試用例。這些測(cè)試用例可以在已有的測(cè)試用例的基礎(chǔ)上,作為專(zhuān)門(mén)針對(duì)數(shù)據(jù)流相關(guān)故障的補(bǔ)充測(cè)試用例,從而幫助開(kāi)發(fā)人員或者測(cè)試人員確認(rèn)故障是否被修復(fù),并嘗試去發(fā)現(xiàn)更多潛在的故障。
[0019]本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:
[0020](I)針對(duì)程序中變量狀態(tài)的變化,提出一種擴(kuò)展的數(shù)據(jù)流模型。
[0021](2)針對(duì)程序中變量狀態(tài)信息難以獲取的特點(diǎn),提出一種擴(kuò)展數(shù)據(jù)流模型的構(gòu)建方法。
[0022](3)在擴(kuò)展數(shù)據(jù)流模型的基礎(chǔ)上,提出了基于擴(kuò)展數(shù)據(jù)流模型的影響分析方法,確定在程序修改前后影響程序數(shù)據(jù)流的相關(guān)語(yǔ)句集合。
[0023](4)針對(duì)數(shù)據(jù)流相關(guān)故障難以檢測(cè)的需求,提出了基于擴(kuò)展數(shù)據(jù)流模型的測(cè)試用例擴(kuò)增方法,專(zhuān)門(mén)用于對(duì)數(shù)據(jù)流相關(guān)故障的檢測(cè)。
【附圖說(shuō)明】
[0024]圖1為本發(fā)明的結(jié)構(gòu)示意圖。
[0025]圖2為擴(kuò)展數(shù)據(jù)流模型信息收集方法圖。
[0026]圖3為擴(kuò)展數(shù)據(jù)流模型的構(gòu)建算法圖。
[0027]圖4為基于擴(kuò)展數(shù)據(jù)流模型的影響分析算法圖。
[0028]圖5為于擴(kuò)展數(shù)據(jù)流模型的測(cè)試用例擴(kuò)增方法圖。
【具體實(shí)施方式】
[0029]下面將結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說(shuō)明。
[0030]由于現(xiàn)有計(jì)數(shù)中的測(cè)試用例大都是通過(guò)大量的人為分析,存在人為主觀(guān)因素導(dǎo)致測(cè)試
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
陈巴尔虎旗| 黎平县| 辽阳县| 永胜县| 科尔| 张家港市| 孟津县| 鄯善县| 西吉县| 海南省| 宁蒗| 兰溪市| 西盟| 乌恰县| 宜黄县| 新余市| 山西省| 北安市| 宁晋县| 亚东县| 巩义市| 宁强县| 海伦市| 新泰市| 太和县| 茂名市| 会东县| 英吉沙县| 望城县| 襄汾县| 通化县| 沾益县| 汝南县| 天津市| 水富县| 报价| 分宜县| 通许县| 大城县| 页游| 北碚区|