• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于路徑關(guān)鍵狀態(tài)變量的測(cè)試用例約簡(jiǎn)

    2020-03-18 09:42:42趙逢禹
    關(guān)鍵詞:關(guān)聯(lián)矩陣狀態(tài)變量謂詞

    高 杰, 趙逢禹, 劉 亞

    (上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院, 上海 200093)

    0 引 言

    軟件測(cè)試是指使用人工或自動(dòng)的手段來(lái)運(yùn)行或測(cè)定某個(gè)軟件系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別[1],科學(xué)應(yīng)用測(cè)試方法可以盡可能地避免軟件在運(yùn)行過(guò)程中出現(xiàn)各種故障問(wèn)題[2]。軟件測(cè)試的核心任務(wù)之一就是構(gòu)建測(cè)試用例集。但軟件規(guī)模的擴(kuò)大會(huì)導(dǎo)致測(cè)試用例集會(huì)變得復(fù)雜龐大,若對(duì)其分類和約簡(jiǎn),會(huì)節(jié)省測(cè)試的時(shí)間和資源消耗。因此,測(cè)試用例集的約簡(jiǎn)旨在最大限度地減少執(zhí)行的測(cè)試用例的數(shù)量。

    測(cè)試用例約簡(jiǎn)的研究可以分為兩類,一類是基于模型的測(cè)試用例約簡(jiǎn)[3],如:通過(guò)構(gòu)建多優(yōu)化目標(biāo)模型,提出了不同的基于多優(yōu)化目標(biāo)的測(cè)試用例集約簡(jiǎn)算法[4]。建模過(guò)程復(fù)雜,且該嚴(yán)重依賴于模型設(shè)計(jì)的好壞;另一類是貪心算法、啟發(fā)式算法等基于人工智能技術(shù)的測(cè)試用例約簡(jiǎn)。由于這些算法過(guò)早收斂、優(yōu)化效率低的局限性,不斷有學(xué)者對(duì)其進(jìn)行改進(jìn),如:針對(duì)傳統(tǒng)貪婪算法存在過(guò)擬合的問(wèn)題,提出了一種基于貝葉斯網(wǎng)絡(luò)模型的黑匣子測(cè)試選擇方法[5],該方法可以確保僅將黑盒測(cè)試之間的強(qiáng)關(guān)系用于測(cè)試選擇,達(dá)到減少測(cè)試用例冗余的目的,而且該方法對(duì)于過(guò)度擬合更為健壯。但這種算法的效果仍取決于初始的測(cè)試用例集;應(yīng)用二分K-means聚類算法對(duì)回歸測(cè)試的測(cè)試用例集約簡(jiǎn),以白盒測(cè)試的路徑覆蓋為準(zhǔn)則,對(duì)每個(gè)測(cè)試用例進(jìn)行量化,使每個(gè)用例變成一個(gè)點(diǎn)[6]。以黑盒測(cè)試的功能需求數(shù)作為聚類數(shù),在聚類結(jié)果的每一簇中,按照離中心點(diǎn)的距離排序,依次從每一簇中選擇測(cè)試用例,直至滿足所有測(cè)試需求,得到約簡(jiǎn)的測(cè)試用例集。

    本文認(rèn)為不論是采用模型的方法還是采用貪心、啟發(fā)式算法等方法,基于路徑覆蓋的測(cè)試用例約簡(jiǎn)是基本的方法,為了獲取測(cè)試用例的執(zhí)行路徑,必須計(jì)算關(guān)鍵變量的狀態(tài)。此外,約簡(jiǎn)后的測(cè)試用例集能否與原測(cè)試用例集具有相同的錯(cuò)誤檢測(cè)率對(duì)測(cè)試用例約簡(jiǎn)至關(guān)重要[7]。本文提出一種基于謂詞和關(guān)鍵狀態(tài)變量分析的測(cè)試用例約簡(jiǎn)方法,旨在減少測(cè)試用例的冗余,提高測(cè)試效率,降低測(cè)試成本,并與原測(cè)試用例集具有相同的錯(cuò)誤檢測(cè)率。

    1 關(guān)鍵狀態(tài)變量

    1.1 關(guān)鍵狀態(tài)變量定義

    本文將影響謂詞表達(dá)式中判斷條件的變量稱為關(guān)鍵狀態(tài)變量。在程序運(yùn)行過(guò)程中,程序傳遞的參數(shù)的值會(huì)影響謂詞表達(dá)式中的判斷條件,而謂詞表達(dá)式中的判斷條件的結(jié)果會(huì)影響程序運(yùn)行的路徑。關(guān)鍵狀態(tài)變量包括以下3種參數(shù):

    (1) 程序運(yùn)行過(guò)程中傳遞給方法的參數(shù);

    (2)程序中影響謂詞表達(dá)式中的判斷條件的輸入或讀取的成員變量;

    (3) (1)、(2)中經(jīng)過(guò)一系運(yùn)算之后所得到的新參數(shù)。

    通過(guò)代碼來(lái)說(shuō)明本文所定義的關(guān)鍵狀態(tài)變量。

    代碼1關(guān)鍵狀態(tài)變量定義范例。

    1.int compute(int x)

    2.{

    3. intd= 7;

    4. if(d> 3)

    5.{

    6.x= 2 *x;

    7. }else

    8.{

    9.x=x*x;

    10.}

    11. inta,b,c;

    12.b=x/ 2;

    13.a=b;

    14.c=a* 3;

    15. if(a!= 0)

    16.{

    17. return 1;

    18. }

    19. return 0;

    20.}

    在代碼1范例中,有x,a,b,c,d這5個(gè)變量,其中x是傳入的參數(shù),a,d是謂詞判斷中的參數(shù),而a的值是由b賦予的。因此,本文認(rèn)為x,a,b,d是關(guān)鍵狀態(tài)變量。

    1.2 關(guān)鍵狀態(tài)變量獲取

    本文利用抽象語(yǔ)法樹(shù)(Abstract Syntax Tree, AST) 來(lái)獲取關(guān)鍵狀態(tài)變量。抽象語(yǔ)法樹(shù)是程序源代碼的抽象語(yǔ)法結(jié)構(gòu)的樹(shù)狀表現(xiàn)形式。

    不同的計(jì)算機(jī)高級(jí)語(yǔ)言都提供了抽象語(yǔ)法樹(shù)的處理包。本文所做的研究以C代碼為實(shí)驗(yàn)對(duì)象,C語(yǔ)言中的gcc編譯器可以構(gòu)造抽象語(yǔ)法樹(shù)。

    通過(guò)在程序源代碼的抽象語(yǔ)法樹(shù)中搜索不同的節(jié)點(diǎn)類型得到關(guān)鍵狀態(tài)變量。其具體步驟是:首先在抽象語(yǔ)法樹(shù)中找到這些節(jié)點(diǎn)類型,針對(duì)不同的節(jié)點(diǎn)類型做不同的處理,最終將滿足本文定義的所有關(guān)鍵狀態(tài)變量添加到關(guān)鍵狀態(tài)變量集合中。

    2 測(cè)試用例約簡(jiǎn)方案

    測(cè)試用例集約簡(jiǎn)的目的是去除測(cè)試用例中冗余的、無(wú)法發(fā)現(xiàn)程序缺陷的測(cè)試用例,從而減少測(cè)試成本,提高測(cè)試效率。

    本文所提出的測(cè)試用例約簡(jiǎn)方案主要有6步:

    (1) 測(cè)試用例聚類。本文所提出的測(cè)試用例約簡(jiǎn)方法與代碼執(zhí)行的路徑和關(guān)鍵狀態(tài)變量密切相關(guān)。因此,要將測(cè)試用例按其測(cè)試的功能以及輸入?yún)?shù)的參數(shù)列表聚類,聚類成若干個(gè)不同的測(cè)試用例集。

    (2)查找每類測(cè)試用例集對(duì)應(yīng)的源代碼。針對(duì)聚類后的每類測(cè)試用例集,根據(jù)測(cè)試的功能與輸入?yún)?shù)的型構(gòu)確定被測(cè)程序的程序源代碼。

    (3)代碼預(yù)處理。程序源代碼中的每個(gè)文件可能會(huì)有多個(gè)方法,每個(gè)方法中的局部變量可能會(huì)出現(xiàn)多次賦值和使用的情況。

    例如代碼2所示的代碼中,當(dāng)程序執(zhí)行執(zhí)行到第11行的條件判斷語(yǔ)句時(shí),x的值并不能確定,可能會(huì)取第5行的x,也可能會(huì)取第8行的x,即同一個(gè)變量在不同的情況下可能會(huì)被賦予不同的值。為了解決這種情況,本文對(duì)代碼進(jìn)行了預(yù)處理,保證每個(gè)變量對(duì)應(yīng)一個(gè)值。

    代碼2代碼預(yù)處理示例

    1.int compute(intx)

    2. {

    3. if(x> 3)

    4. {

    5.x= 2 *x;

    6. }else

    7. {

    8.x=x*x;

    9. }

    10. …

    11. if(x> 10)

    12. {

    13. inty=x;

    14. }

    15. }

    對(duì)代碼中的變量進(jìn)行預(yù)處理就是針對(duì)同一變量可能會(huì)被賦予不同值的變量換成不同的變量名。代碼2中示例代碼經(jīng)預(yù)處理后的結(jié)果如代碼3所示。

    代碼3代碼預(yù)處理結(jié)果示例

    1.int compute(intx)

    2. {

    3. if(x> 3)

    4. {

    5.x1= 2 *x;

    6. }else

    7. {

    8.x2=x*x;

    9. }

    10. …

    11. if (x1> 10)

    12. {

    13. inty=x1;

    14. }else if

    15. {

    16. inty=x2;

    17. }

    18.}

    (4)基于抽象語(yǔ)法樹(shù)的信息提取。利用高級(jí)語(yǔ)言中所提供的技術(shù)構(gòu)建程序源代碼的抽象語(yǔ)法樹(shù)。獲取抽象語(yǔ)法樹(shù)中的每個(gè)節(jié)點(diǎn)信息,從而找到代碼中的關(guān)鍵狀態(tài)變量、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式以及謂詞表達(dá)式中的判斷條件,并將它們分別添加到相應(yīng)的集合中。

    (5)構(gòu)建測(cè)試用例關(guān)聯(lián)矩陣。測(cè)試用例集中的每個(gè)測(cè)試用例對(duì)應(yīng)測(cè)試用例關(guān)聯(lián)矩陣的一行信息,多個(gè)測(cè)試用例構(gòu)成了測(cè)試用例關(guān)聯(lián)矩陣。測(cè)試用例關(guān)聯(lián)矩陣用M表示,M矩陣中每一行對(duì)應(yīng)一個(gè)測(cè)試用例的輸入?yún)?shù)、關(guān)鍵狀態(tài)變量、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式和謂詞表達(dá)式中的判斷條件,形式化表示為式(1):

    Mi=(ti,,,) .

    (1)

    其中,ti表示測(cè)試用例中第i個(gè)測(cè)試用例的輸入?yún)?shù),V表示關(guān)鍵狀態(tài)變量的集合,E表示關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合,C表示謂詞表達(dá)式中的條件判斷的集合。

    (6)測(cè)試用例約簡(jiǎn)。本文采用的測(cè)試用例約簡(jiǎn)準(zhǔn)則是:任意二個(gè)測(cè)試用例ti,tk,如果對(duì)應(yīng)的謂詞表達(dá)式中的條件判斷的邏輯值完全相同,即=,那么這二個(gè)或多個(gè)測(cè)試用例屬于同一等價(jià)類的測(cè)試用例,具有相同或相似的測(cè)試效果,可以選取其中的一個(gè)作為約簡(jiǎn)后測(cè)試用例。

    該約簡(jiǎn)方案的整體流程框架,如圖1所示。

    圖1 約簡(jiǎn)方法流程框架

    3 主要算法實(shí)現(xiàn)

    在圖1所示的流程圖中,主要有二個(gè)重要的算法:

    (1)在抽象語(yǔ)法樹(shù)中獲取關(guān)鍵狀態(tài)變量;

    (2)在測(cè)試用例關(guān)聯(lián)矩陣中查找并移除等效的測(cè)試用例,實(shí)現(xiàn)測(cè)試用例約簡(jiǎn)。

    3.1 基于抽象語(yǔ)法樹(shù)的信息提取

    任何一個(gè)C程序文件都可以轉(zhuǎn)換為抽象語(yǔ)法樹(shù)的樹(shù)狀結(jié)構(gòu),任意一個(gè)包括一個(gè)變量和一個(gè)方法的C程序文件的樹(shù)形結(jié)構(gòu),如圖2所示。利用抽象語(yǔ)法樹(shù)中提供的方法可以獲取樹(shù)中的各個(gè)節(jié)點(diǎn)。

    為獲取關(guān)鍵狀態(tài)變量、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式以及謂詞表達(dá)式中的判斷條件,需要從抽象語(yǔ)法樹(shù)中找到與其相關(guān)的3類節(jié)點(diǎn):params節(jié)點(diǎn)、IfStatement節(jié)點(diǎn)以及ExpressionStatement節(jié)點(diǎn)。針對(duì)這3類不同的節(jié)點(diǎn)分別找出關(guān)鍵狀態(tài)變量、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式和謂詞表達(dá)式中的判斷條件集合,并分別將其添加到相應(yīng)的集合。算法1給出了獲取關(guān)鍵狀態(tài)變量集合、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合以及謂詞表達(dá)式中的判斷條件集合的算法。

    圖2 抽象語(yǔ)法樹(shù)

    算法1基于抽象語(yǔ)法樹(shù)的信息提取算法

    輸入預(yù)處理后的程序源代碼的抽象語(yǔ)法樹(shù)。

    輸出關(guān)鍵狀態(tài)變量集合keyVariable,關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合comExpression,謂詞表達(dá)式中的判斷條件集合conExpression。

    (1)算法以root為根節(jié)點(diǎn);

    (2)初始化關(guān)鍵狀態(tài)變量集合keyVariable = null,關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合comExpression = null,謂詞表達(dá)式中的判斷條件集合conExpression=null,根root入隊(duì)enqueue(root);

    (3) 循環(huán)queue中的元素。取出隊(duì)首元素,如果為空,轉(zhuǎn)(8),算法結(jié)束,否則轉(zhuǎn)(4);

    (4)如果該節(jié)點(diǎn)的節(jié)點(diǎn)類型是IfStatement,找到該節(jié)點(diǎn)下的表達(dá)式,并將該節(jié)點(diǎn)添加到謂詞表達(dá)式中的判斷條件集合conExpression中,并將該節(jié)點(diǎn)下的變量放入一個(gè)set集合中;

    (5)如果該節(jié)點(diǎn)的節(jié)點(diǎn)類型是VariableDeclaration或者params或者Identifier,并且該變量在(4)的set中出現(xiàn)過(guò),將該節(jié)點(diǎn)添加到關(guān)鍵狀態(tài)變量集合keyVariable中;

    (6)如果該節(jié)點(diǎn)的節(jié)點(diǎn)類型是BinaryExpression或者CallExpression或者UnaryExpression。繼續(xù)向下判斷,若該節(jié)點(diǎn)包括符號(hào)“<”,“>”,“<=”,“>=”,“!=”,“==”,找到該節(jié)點(diǎn)下的表達(dá)式,并將該節(jié)點(diǎn)添加到謂詞表達(dá)式中的判斷條件集合conExpression中;若該節(jié)點(diǎn)包括符號(hào)“=”,找到該節(jié)點(diǎn)下的表達(dá)式,并將該節(jié)點(diǎn)添加到關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合comExpression中;

    (7)如果該節(jié)點(diǎn)的節(jié)點(diǎn)類型不屬于以上節(jié)點(diǎn),則把該節(jié)點(diǎn)的子節(jié)點(diǎn)入隊(duì);

    (8) 算法結(jié)束。

    通過(guò)算法1可以獲取測(cè)試用例關(guān)聯(lián)矩陣M中的關(guān)鍵狀態(tài)變量集合、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合以及謂詞表達(dá)式中的判斷條件集合。

    3.2 基于測(cè)試用例關(guān)聯(lián)矩陣的約簡(jiǎn)

    3.2.1 構(gòu)建測(cè)試用例關(guān)聯(lián)矩陣

    測(cè)試用例關(guān)聯(lián)矩陣的列由關(guān)鍵狀態(tài)變量集合、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合以及謂詞表達(dá)式中的判斷條件集合中的每個(gè)元素組成,每個(gè)測(cè)試用例的輸入值、關(guān)鍵狀態(tài)變量集合、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合以及謂詞表達(dá)式中的判斷條件集合構(gòu)成測(cè)試用例關(guān)聯(lián)矩陣的每一行,n個(gè)測(cè)試用例構(gòu)成了測(cè)試用例關(guān)聯(lián)矩陣。圖3給出了一個(gè)測(cè)試用例關(guān)聯(lián)矩陣示例。

    圖3 測(cè)試用例關(guān)聯(lián)矩陣示例

    構(gòu)造測(cè)試用例關(guān)聯(lián)矩陣的輸入可以概括為:測(cè)試用例集T={t1,t2,t3,…,tm},由算法1中得到的關(guān)鍵狀態(tài)變量集合、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合以及謂詞表達(dá)式中的判斷條件集合,其數(shù)學(xué)表達(dá)式為式(1)。

    在圖3的示例中,t1,t2,t3,t4表示4個(gè)測(cè)試用例,每個(gè)測(cè)試用例有3個(gè)輸入?yún)?shù):a、b、c;a1=a*2和a2=c*3表示代碼中的計(jì)算表達(dá)式;a-b>4,a1>5,a2>2則表示謂詞表達(dá)式中的判斷條件。

    3.2.2 測(cè)試用例約簡(jiǎn)算法

    根據(jù)本文所提出的測(cè)試用例約簡(jiǎn)準(zhǔn)則對(duì)測(cè)試用例關(guān)聯(lián)矩陣進(jìn)行約簡(jiǎn),算法2給出了測(cè)試用例關(guān)聯(lián)矩陣的約簡(jiǎn)描述。

    算法2測(cè)試用例關(guān)聯(lián)矩陣中測(cè)試用例的約簡(jiǎn)

    輸入測(cè)試用例關(guān)聯(lián)矩陣M

    輸出約簡(jiǎn)后的測(cè)試用例關(guān)聯(lián)矩陣M'

    (1)for eachito row // row是測(cè)試用例關(guān)聯(lián)矩陣的行數(shù)

    (2) for eachj=i+ 1 to row

    (3) 如果第i行和第j行的測(cè)試用例對(duì)應(yīng)的謂詞表達(dá)式中的判斷條件集合中的每一列的結(jié)果值都相同,表示第i行和第j行的測(cè)試用例具有相同或相似的功能,保留第i行的測(cè)試用例

    (4) end for

    (5) end for

    4 實(shí)驗(yàn)分析

    4.1 實(shí)驗(yàn)數(shù)據(jù)及評(píng)價(jià)指標(biāo)

    本文選擇了西門(mén)子測(cè)試用例集中4個(gè)程序作為實(shí)驗(yàn)對(duì)象來(lái)驗(yàn)證本文所提出的測(cè)試用例約簡(jiǎn)的方法。為了評(píng)估本文所提出的方法的有效性,將本文算法與傳統(tǒng)HGS算法和貪心算法(Greedy, G算法)從約簡(jiǎn)率作對(duì)比和分析。約簡(jiǎn)率的計(jì)算公式(2)。

    (2)

    其中:|OriginalTestSuite|表示原測(cè)試用例集中測(cè)試用例數(shù)量,|T*|表示約簡(jiǎn)后測(cè)試用例集中測(cè)試用例的數(shù)量,約簡(jiǎn)率越大則約簡(jiǎn)程度越高。

    西門(mén)子測(cè)試用例集中4個(gè)程序的程序集信息如見(jiàn)表1。schedule2是優(yōu)先級(jí)調(diào)度器;tcas是防止航空器空中相撞系統(tǒng)[8];print_tokens和print_tokens2主要用于詞法分析。

    表1 西門(mén)子程序集信息

    4.2 實(shí)驗(yàn)方案

    實(shí)驗(yàn)的具體方案:

    (1) 按不同的功能及輸入?yún)?shù)的參數(shù)列表分別將四個(gè)開(kāi)源程序中的測(cè)試用例集進(jìn)行聚類,確定每一類測(cè)試用例集所對(duì)應(yīng)的程序源代碼;

    (2)將對(duì)應(yīng)的程序源代碼預(yù)處理,將預(yù)處理后的源代碼轉(zhuǎn)換成抽象語(yǔ)法樹(shù),再使用本文所提出的算法1獲取關(guān)鍵狀態(tài)變量集合、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合以及謂詞表達(dá)式中的判斷條件集合;

    (3)構(gòu)建測(cè)試用例與關(guān)鍵狀態(tài)變量集合、關(guān)鍵狀態(tài)變量的計(jì)算表達(dá)式集合以及謂詞表達(dá)式中的判斷條件集合的測(cè)試用例關(guān)聯(lián)矩陣,再計(jì)算測(cè)試用例關(guān)聯(lián)矩陣中每一項(xiàng)所對(duì)應(yīng)的值,最后根據(jù)測(cè)試用例約簡(jiǎn)準(zhǔn)則對(duì)其進(jìn)行約簡(jiǎn)。

    4.3 實(shí)驗(yàn)結(jié)果和分析

    實(shí)驗(yàn)結(jié)果如圖4所示,可以看出本文所提出的算法可以有效的減少原測(cè)試用例集數(shù)量。

    圖4 3種算法的測(cè)試用例約簡(jiǎn)率

    3種算法約簡(jiǎn)后的測(cè)試用例數(shù)量見(jiàn)表2。

    表2 約簡(jiǎn)后測(cè)試用例的數(shù)量

    通過(guò)對(duì)西門(mén)子測(cè)試用例集中4個(gè)開(kāi)源程序自帶的測(cè)試用例集進(jìn)行實(shí)驗(yàn),本文所提算法對(duì)每個(gè)程序中的原測(cè)試用例數(shù)量都有不同程度程度的減少,測(cè)試用例數(shù)量的約簡(jiǎn)率還與原測(cè)試用例集中冗余測(cè)試用例數(shù)量的多少相關(guān)。

    本文所提出的方法在保證測(cè)試用例集完整性的基礎(chǔ)上減少了測(cè)試用例的數(shù)量。實(shí)驗(yàn)中針對(duì)約簡(jiǎn)掉的每個(gè)測(cè)試用例都經(jīng)過(guò)了人工檢測(cè),通過(guò)對(duì)比測(cè)試用例關(guān)聯(lián)矩陣中的測(cè)試用例,判斷測(cè)試用例關(guān)聯(lián)矩陣中存在與被約簡(jiǎn)的測(cè)試用例的每一列對(duì)應(yīng)的值都是相同的,運(yùn)行被約簡(jiǎn)的測(cè)試用例,進(jìn)一步證實(shí)了這些測(cè)試用例集確實(shí)不能檢測(cè)到程序中存在的缺陷。但本文算法涉及到的步驟相對(duì)較多,會(huì)增加計(jì)算方面的開(kāi)銷。

    5 結(jié)束語(yǔ)

    測(cè)試用例的約簡(jiǎn)是軟件測(cè)試中一項(xiàng)非常重要的工作,約簡(jiǎn)測(cè)試用例可以極大地減少測(cè)試成本,因此對(duì)測(cè)試用例約簡(jiǎn)的研究具有十分重要的意義。

    本文提出一種基于謂詞分析和關(guān)鍵狀態(tài)變量的測(cè)試用例約簡(jiǎn)方法,主要考慮了變量對(duì)測(cè)試路徑的影響,提出一種基于謂詞分析和關(guān)鍵狀態(tài)變量的測(cè)試用例約簡(jiǎn)方法,主要考慮了變量對(duì)測(cè)試路徑的影響。該方法通過(guò)捕獲源代碼中與關(guān)鍵狀態(tài)變量相關(guān)語(yǔ)句和謂詞表達(dá)式中的判斷條件之間的關(guān)系來(lái)構(gòu)造測(cè)試用例和關(guān)鍵狀態(tài)變量、關(guān)鍵狀態(tài)變量計(jì)算表達(dá)

    式以及謂詞表達(dá)式中判斷條件之間的測(cè)試用例關(guān)聯(lián)矩陣,并提出了測(cè)試用例約簡(jiǎn)的準(zhǔn)則,根據(jù)該準(zhǔn)則對(duì)測(cè)試用例集進(jìn)行約簡(jiǎn)。實(shí)驗(yàn)結(jié)果表明,本文所提出的約簡(jiǎn)策略可以對(duì)原測(cè)試用例集的數(shù)量進(jìn)行約簡(jiǎn),而且并沒(méi)有降低原測(cè)試用例集的錯(cuò)誤檢測(cè)率,但增加了計(jì)算開(kāi)銷。

    基于代碼分析的測(cè)試用例約簡(jiǎn)所涉及測(cè)試路徑以及本文所提的關(guān)鍵狀態(tài)變量、謂詞表達(dá)式中的判斷條件等因素,是一個(gè)十分復(fù)雜的問(wèn)題,如果程序中包含程序間調(diào)用、數(shù)據(jù)庫(kù)交互等更加復(fù)雜的場(chǎng)景,研究方案仍需要進(jìn)一步完善。另外,文本所做的驗(yàn)證實(shí)驗(yàn)只是在西門(mén)子測(cè)試用例套件中選取的四個(gè)程序所自帶的測(cè)試數(shù)據(jù)集上完成的,這4個(gè)程序的源代碼規(guī)模較小,本方法的有效性還需要進(jìn)行大規(guī)模的實(shí)驗(yàn)加以驗(yàn)證。

    猜你喜歡
    關(guān)聯(lián)矩陣狀態(tài)變量謂詞
    一階動(dòng)態(tài)電路零狀態(tài)響應(yīng)公式的通用拓展
    基于TwinCAT3控制系統(tǒng)的YB518型小盒透明紙包裝機(jī)運(yùn)行速度的控制分析
    n階圈圖關(guān)聯(lián)矩陣的特征值
    單圈圖關(guān)聯(lián)矩陣的特征值
    基于嵌套思路的飽和孔隙-裂隙介質(zhì)本構(gòu)理論
    被遮蔽的邏輯謂詞
    ——論胡好對(duì)邏輯謂詞的誤讀
    黨項(xiàng)語(yǔ)謂詞前綴的分裂式
    西夏研究(2020年2期)2020-06-01 05:19:12
    基于關(guān)聯(lián)矩陣主對(duì)角線譜理論的歐拉圖研究
    n階圈圖的一些代數(shù)性質(zhì)
    也談“語(yǔ)言是存在的家”——從語(yǔ)言的主詞與謂詞看存在的殊相與共相
    清镇市| 遂平县| 即墨市| 龙里县| 汉沽区| 巴南区| 佛教| 嵊泗县| 白玉县| 伽师县| 绿春县| 潞城市| 建始县| 大悟县| 临邑县| 蓝山县| 南通市| 公安县| 手游| 井陉县| 公安县| 息烽县| 噶尔县| 东山县| 交口县| 宾川县| 丰城市| 二连浩特市| 和林格尔县| 花莲市| 湘阴县| 轮台县| 大宁县| 桂东县| 通许县| 临高县| 溧水县| 郧西县| 城口县| 东光县| 黄山市|