国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于代碼轉(zhuǎn)換的MC/DC覆蓋準(zhǔn)則的軟件測(cè)試數(shù)據(jù)生成方法與流程

      文檔序號(hào):11433688閱讀:2359來(lái)源:國(guó)知局
      一種基于代碼轉(zhuǎn)換的MC/DC覆蓋準(zhǔn)則的軟件測(cè)試數(shù)據(jù)生成方法與流程
      本發(fā)明涉及一種基于代碼轉(zhuǎn)換的MC/DC覆蓋準(zhǔn)則的軟件測(cè)試數(shù)據(jù)生成方法,屬于計(jì)算機(jī)軟件測(cè)試領(lǐng)域。

      背景技術(shù):
      隨著現(xiàn)代軟件系統(tǒng)日益復(fù)雜龐大,軟件質(zhì)量問(wèn)題已經(jīng)嚴(yán)重制約了計(jì)算機(jī)技術(shù)的發(fā)展。軟件測(cè)試是保證軟件質(zhì)量和可靠性的主要手段,也是軟件工程實(shí)施過(guò)程中必要的步驟之一。測(cè)試數(shù)據(jù)的生成是軟件測(cè)試的重要內(nèi)容,程序在測(cè)試數(shù)據(jù)上執(zhí)行以發(fā)現(xiàn)軟件中存在的錯(cuò)誤缺陷,是軟件測(cè)試領(lǐng)域的基本方法。由于不可能窮舉軟件系統(tǒng)的所有程序路徑,傳統(tǒng)的完全測(cè)試(thoroughtesting)技術(shù)在實(shí)際上往往是不可行的。因此,結(jié)構(gòu)化的測(cè)試技術(shù)逐漸被人們所提出,結(jié)構(gòu)測(cè)試是一種按照程序內(nèi)部邏輯結(jié)構(gòu)和編碼結(jié)構(gòu)設(shè)計(jì)測(cè)試數(shù)據(jù)的測(cè)試方法。覆蓋率分析技術(shù)就是一種結(jié)構(gòu)化的測(cè)試技術(shù),目前已經(jīng)成為了一種非常重要的軟件質(zhì)量評(píng)估方法。常用的兩種覆蓋率分析技術(shù)為語(yǔ)句覆蓋和分支覆蓋。目前,測(cè)試人員普遍采用手工方法設(shè)計(jì)測(cè)試數(shù)據(jù),但是,手工生成測(cè)試數(shù)據(jù)的效率極其低下,并且容易出錯(cuò)。尤其是為某些條件要求苛刻的路徑生成測(cè)試數(shù)據(jù)是很困難的,這使得測(cè)試成本昂貴,很難保證軟件質(zhì)量。測(cè)試數(shù)據(jù)自動(dòng)生成技術(shù)能夠自動(dòng)生成對(duì)被測(cè)程序進(jìn)行測(cè)試時(shí)所需的數(shù)據(jù),這樣不但減輕了測(cè)試人員所必須付出的大量勞動(dòng),同時(shí)降低了由手工測(cè)試而產(chǎn)生的高額成本,有效地大幅提高了測(cè)試過(guò)程的可信賴程度。對(duì)于包含有復(fù)雜邏輯的安全攸關(guān)軟件來(lái)說(shuō),結(jié)構(gòu)化的測(cè)試技術(shù)只是考慮了程序的結(jié)構(gòu),往往是不夠充分的。因此,許多更加復(fù)雜的邏輯覆蓋準(zhǔn)則被提出,包括條件覆蓋準(zhǔn)則(ConditionCoverage,CC)、判定覆蓋準(zhǔn)則(DecisionCoverage,DC)、條件/判定覆蓋準(zhǔn)則(Condition/DecisionCoverage,C/DC)和多重條件覆蓋準(zhǔn)則(MultipleConditionCoverage,MCC)。然而,在目前的軟件測(cè)試中,對(duì)于一些嵌入了復(fù)雜邏輯語(yǔ)句的程序,CC、DC、C/DC也是不夠充分的,而MCC生成的測(cè)試數(shù)據(jù)數(shù)目會(huì)根據(jù)邏輯條件的數(shù)目呈現(xiàn)指數(shù)型增長(zhǎng),使得測(cè)試數(shù)據(jù)數(shù)量異常龐大。為了權(quán)衡測(cè)試的精確性與測(cè)試數(shù)據(jù)數(shù)目,J.J.Chilenski和S.P.Miller于1994年提出了修訂的條件/判定覆蓋(ModifiedCondition/DecisionCoverage,MC/DC)準(zhǔn)則,旨在能夠在生成測(cè)試數(shù)據(jù)時(shí)覆蓋到程序中每一個(gè)獨(dú)立的判定條件,MC/DC準(zhǔn)則要求程序中的每個(gè)入口點(diǎn)和出口點(diǎn)至少喚醒一次,每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次,每個(gè)判定本身的所有結(jié)果也至少出現(xiàn)一次,并且判定中的每一個(gè)條件能夠獨(dú)立地影響判定的結(jié)果,即在其它條件不變的前提下僅改變這個(gè)條件的值就能使判定結(jié)果改變。MC/DC準(zhǔn)則是一種實(shí)用的軟件結(jié)構(gòu)覆蓋率測(cè)試準(zhǔn)則,已被廣泛地應(yīng)用于軟件驗(yàn)證和測(cè)試過(guò)程中。它是在C/DC的基礎(chǔ)上發(fā)展起來(lái)的,但是它與C/DC存在著許多不同之處,具有更多的優(yōu)點(diǎn)。例如,MC/DC測(cè)試用例的數(shù)量是線性增加的。我們更傾向于使用少量的測(cè)試數(shù)據(jù)滿足覆蓋準(zhǔn)則,MC/DC準(zhǔn)則顯然是首選。另外,最近的實(shí)驗(yàn)結(jié)果顯示,MC/DC準(zhǔn)則有更好的檢錯(cuò)能力,并且比其他覆蓋準(zhǔn)則更加高效。近幾年來(lái),動(dòng)態(tài)符號(hào)執(zhí)行(DynamicSymbolicExecution,DSE)方法在測(cè)試數(shù)據(jù)生成方面被廣泛應(yīng)用。MC/DC對(duì)于每一個(gè)判定條件都需要特定的組合值,但并不總是使被測(cè)程序能夠執(zhí)行一個(gè)新的分支。因此,現(xiàn)有的基于DSE的測(cè)試數(shù)據(jù)生成方法不能夠達(dá)到MC/DC覆蓋。為了解決這個(gè)問(wèn)題,研究者提出了一種方法,將待測(cè)程序代碼進(jìn)行轉(zhuǎn)換,以優(yōu)化現(xiàn)有的基于語(yǔ)句覆蓋和分支覆蓋的軟件測(cè)試數(shù)據(jù)生成方法,從而達(dá)到MC/DC覆蓋。但是,他們并沒(méi)有給出嚴(yán)格的轉(zhuǎn)換規(guī)則,并且這些方法并不能夠保證當(dāng)測(cè)試數(shù)據(jù)集合對(duì)于轉(zhuǎn)換后的程序的分支覆蓋率達(dá)到100%時(shí),測(cè)試數(shù)據(jù)對(duì)于待測(cè)程序的MC/DC覆蓋率也達(dá)到100%。因此,本發(fā)明提出了一系列代碼轉(zhuǎn)換準(zhǔn)則,來(lái)彌補(bǔ)先前方法中的缺陷。

      技術(shù)實(shí)現(xiàn)要素:
      本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的問(wèn)題,提供一種基于代碼轉(zhuǎn)換的MC/DC覆蓋準(zhǔn)則的軟件測(cè)試數(shù)據(jù)生成方法。該方法通過(guò)制定一系列代碼轉(zhuǎn)換規(guī)則,對(duì)待測(cè)程序的代碼進(jìn)行代碼轉(zhuǎn)換,將轉(zhuǎn)換后的程序作為符號(hào)執(zhí)行工具的輸入程序,使得當(dāng)測(cè)試數(shù)據(jù)集合對(duì)于待測(cè)程序的分支覆蓋率達(dá)到100%時(shí),測(cè)試數(shù)據(jù)對(duì)于待測(cè)程序的MC/DC覆蓋率也能達(dá)到100%。為了實(shí)現(xiàn)本發(fā)明的目的,采用的技術(shù)方案概述如下:一種基于代碼轉(zhuǎn)換的MC/DC覆蓋準(zhǔn)則的軟件測(cè)試數(shù)據(jù)生成方法,其輸入為一段待測(cè)程序(軟件),輸出為滿足MC/DC覆蓋準(zhǔn)則的軟件測(cè)試數(shù)據(jù)集合,其特征在于包括以下步驟:(1)定義待測(cè)程序的語(yǔ)句的類型;(2)定義待測(cè)程序的語(yǔ)句的轉(zhuǎn)換規(guī)則;(3)根據(jù)步驟(1)中定義的語(yǔ)句類型,識(shí)別待測(cè)程序中每條語(yǔ)句的類型;(4)根據(jù)步驟(3)中確定的待測(cè)程序中語(yǔ)句的類型,對(duì)每種類型的語(yǔ)句按照步驟(2)中定義的語(yǔ)句轉(zhuǎn)換規(guī)則進(jìn)行代碼轉(zhuǎn)換;(5)將步驟(4)中得到的代碼轉(zhuǎn)換后的程序作為基于分支覆蓋的軟件測(cè)試數(shù)據(jù)生成工具的輸入,得到測(cè)試數(shù)據(jù)集合。使得當(dāng)測(cè)試數(shù)據(jù)集合對(duì)于代碼轉(zhuǎn)換后的程序T(S)的分支覆蓋率達(dá)到100%時(shí),測(cè)試數(shù)據(jù)集合對(duì)于待測(cè)程序S的MC/DC覆蓋率為100%,從而達(dá)到MC/DC覆蓋(ModifiedCondition/DecisionCoverage,MC/DC,修訂的條件/判定覆蓋)。所述步驟(1),具體包括以下步驟:(1-1)定義待測(cè)程序的語(yǔ)句S的類型,語(yǔ)句S由如下語(yǔ)法規(guī)則構(gòu)成,不包括函數(shù)調(diào)用;語(yǔ)句S為變量聲明Typeid;或賦值表達(dá)式x=a;或空語(yǔ)句skip;或順序語(yǔ)句S1;S2;或分支語(yǔ)句如果判斷b為真(T),那么語(yǔ)句S1;或分支語(yǔ)句如果判斷b為真(T),那么語(yǔ)句S1;否則語(yǔ)句S2。其中,a為算術(shù)表達(dá)式,b為判斷,x為變量。所述步驟(2),具體包括以下步驟:(2-1)定義待測(cè)程序的語(yǔ)句S的轉(zhuǎn)換規(guī)則如下;其中,S表示待測(cè)程序中的語(yǔ)句,T(S)表示轉(zhuǎn)換后的程序中相應(yīng)的語(yǔ)句。a為算術(shù)表達(dá)式,x為變量。算術(shù)表達(dá)式a1是將算術(shù)表達(dá)式a中的變量x替換為變量x1得到的;算術(shù)表達(dá)式a2是將算術(shù)表達(dá)式a中的變量x替換為變量x2得到的;判斷b1是將判斷b中的變量x替換為變量x1得到的;判斷b2是將判斷b中的變量x替換為變量x2得到的;語(yǔ)句S11、S12表示將語(yǔ)句S1和S2中的變量y替換為變量y1,語(yǔ)句S21、S22表示將語(yǔ)句S1和S2中的變量y替換為變量y2;條件c1i是將條件ci中的變量x替換為變量x1得到的;條件c2i是將條件ci中的變量x替換為變量x2得到的;轉(zhuǎn)換規(guī)則1:S為變量聲明Typeid;T(S)為變量聲明Typeid1;Typeid2;轉(zhuǎn)換規(guī)則2:S為賦值表達(dá)式x=a;T(S)為賦值表達(dá)式x1=a1;x2=a2;轉(zhuǎn)換規(guī)則3:S為空語(yǔ)句skip;T(S)為空語(yǔ)句skip;轉(zhuǎn)換規(guī)則4:S為順序語(yǔ)句S1;S2;T(S)為順序語(yǔ)句T(S1);T(S2);轉(zhuǎn)換規(guī)則5:S為分支語(yǔ)句:如果判斷b為真(T)語(yǔ)句S1;T(S)為:語(yǔ)句G(b);如果判斷b1為真(T)如果判斷b2為真(T)轉(zhuǎn)換語(yǔ)句S1到語(yǔ)句T(S1);否則語(yǔ)句S11;否則如果判斷b2為真(T)語(yǔ)句S21;其中,語(yǔ)句G(b)為:如果替換判斷b中的條件c11為真(T)獲得的判斷不等于(?。?替換判斷b中的條件c11為假(F)獲得的判斷為真(T)如果條件c11不等于(?。?條件c21邏輯與(AND)條件c12等于(==)條件c22邏輯與(AND)…邏輯與(AND)條件c1n等于(==)條件c2n為真(T)空語(yǔ)句skip;如果替換判斷b中的條件c1n為真(T)獲得的判斷不等于(!=)替換判斷b中的條件c1n為假(F)獲得的判斷為真(T)如果條件c11等于(==)條件c21邏輯與(AND)…邏輯與(AND)條件c1(n-1)等于(==)條件c2(n-1)邏輯與(AND)條件c1n不等于(?。?條件c2n為真(T)空語(yǔ)句skip;轉(zhuǎn)換規(guī)則6:S為分支語(yǔ)句:如果判斷b為真(T)語(yǔ)句S1;否則語(yǔ)句S2;T(S)為:語(yǔ)句G(b);如果判斷b1為真(T)如果判斷b2為真(T)轉(zhuǎn)換語(yǔ)句S1到語(yǔ)句T(S1);否則S11S22;否則如果判斷b2為真(T)S21S12;否則轉(zhuǎn)換語(yǔ)句S2到語(yǔ)句T(S2);其中,語(yǔ)句G(b)為:如果替換判斷b中的條件c11為真(T)獲得的判斷不等于(?。?替換判斷b中的條件c11為假(F)獲得的判斷為真(T)如果條件c11不等于(?。?條件c21邏輯與(AND)條件c12等于(==)條件c22邏輯與(AND)…邏輯與(AND)條件c1n等于(==)條件c2n為真(T)空語(yǔ)句skip;如果替換判斷b中的條件c1n為真(T)獲得的判斷不等于(!=)替換判斷b中的條件c1n為假(F)獲得的判斷為真(T)如果條件c11等于(==)條件c21邏輯與(AND)…邏輯與(AND)條件c1(n-1)等于(==)條件c2(n-1)邏輯與(AND)條件c1n不等于(?。?條件c2n為真(T)空語(yǔ)句skip;所述步驟(4),具體包括以下步驟:(4-1)根據(jù)待測(cè)程序的語(yǔ)句的類型,找到符合轉(zhuǎn)換規(guī)則1和轉(zhuǎn)換規(guī)則2和轉(zhuǎn)換規(guī)則3的所有語(yǔ)句,按照相對(duì)應(yīng)的規(guī)則對(duì)這些語(yǔ)句進(jìn)行代碼轉(zhuǎn)換,即將每條語(yǔ)句復(fù)制一份;(4-2)根據(jù)待測(cè)程序的語(yǔ)句的...
      當(dāng)前第1頁(yè)1 2 3 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1