国产精品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>

      不變量指導的隨機測試用例自動化生成方法

      文檔序號:6357659閱讀:338來源:國知局
      專利名稱:不變量指導的隨機測試用例自動化生成方法
      技術(shù)領(lǐng)域
      本專利發(fā)明屬于軟件測試領(lǐng)域,它是該領(lǐng)域的核心課題一測試用例自動化生成的研究。
      2.
      背景技術(shù)
      3. I隨機測試技術(shù)隨機測試是通過在程序輸入域上隨機選擇輸入 數(shù)據(jù)來測試程序。它是一種應(yīng)用廣泛且極具潛力的軟件自動化測試技術(shù)。在第29屆軟件工程國際會議上,隨機測試被認為是測試用例生成領(lǐng)域最具潛力的三大技術(shù)之一。在軟件工程方面,隨機測試已被廣泛應(yīng)用到各領(lǐng)域,如Unix工具集、Windows GUI應(yīng)用軟件、Java程序等等。但是在隨機測試的實際應(yīng)用中,存在覆蓋率低,冗余測試用例重復生成等等各種缺點,嚴重限制了隨機測試方法優(yōu)點的體現(xiàn)。3. 2不變量技術(shù)程序不變量是指在程序的某個特定的點或某些特定的點上保持為真的屬性,是描述在程序運行時保持不變的性質(zhì)的邏輯斷言;它經(jīng)常出現(xiàn)在斷言聲明(assertstatement)、形式化描述(formal specif ications)、說明文檔(documentation)中。程序不變量有助于軟件開發(fā)人員理解程序中的數(shù)據(jù)結(jié)構(gòu)、算法及各種操作,對軟件的設(shè)計、編碼、驗證、測試、優(yōu)化和維護等各階段都有著積極的作用(Ernst,2000)。近年來程序不變量的自動提取技術(shù)成為研究熱點之一。
      3.

      發(fā)明內(nèi)容
      本申請書中就軟件測試的核心問題——測試用例自動化生成,針對目前一種廣泛應(yīng)用的自動化技術(shù)——隨機測試方法的缺點,提出了一種結(jié)合不變量技術(shù)的隨機測試改進方法——不變量指導下的隨機用例生成方法。通過不變量的提取,了解程序?qū)傩?,提高隨機方法選取有效用例的概率,降低冗余率,滿足覆蓋率要求,極大地改進了傳統(tǒng)隨機方法的缺點。且整個用例生成過程完全自動化,除了必需的被測程序外,不需要其它任何的輸入和人工干預。
      4.
      具體實施例方式4. I不變量指導的測試用例生成方法的理論介紹附圖
      I是不變量指導測試用例生成方法的總體流程圖,通過附圖I中5個步驟地反復進行(見附圖I說明),可以完成測試用例集合自動化的生成。下面就該流程圖中的幾個重要理論基礎(chǔ)分別進行說明4. I. I新用例的生成過程我們將完成新用例生成的功能模塊稱為測試用例構(gòu)造器,由三個相對獨立的部分組成——源碼信息抽取、可選用例空間和測試用例構(gòu)造。本工具以被測函數(shù)為單位,依次對被測函數(shù)中每個參數(shù)獨立生成,進而構(gòu)造出一個測試用例。具體的構(gòu)造流程如附圖2所示。源碼信息抽取模塊,主要分析被測程序源碼,根據(jù)源碼信息,構(gòu)造出被測函數(shù)信息表和復雜類型成員信息表。可選用例空間主要由參數(shù)區(qū)間信息表構(gòu)成,該表從被測函數(shù)信息表,以及復雜類型成員信息表中提取信息 進行構(gòu)造。該表中保存了被測函數(shù)每一個參數(shù)的取值區(qū)間,隨機數(shù)的挑選被限制在這些取值區(qū)間之中,通過這種做法,限制了各個參數(shù)的取值范圍,縮小用例的可選空間大小,進而提高選中有效用例的概率。測試用例構(gòu)造模塊從被測函數(shù)信息表中依次選取參數(shù)進行構(gòu)造,若為簡單類型,則從可選用例空間中直接隨機挑選隨機數(shù)即可生成;若為復雜類型,則讀取該類型成員表信息,對該類的各個成員依次進行構(gòu)造,構(gòu)造過程與參數(shù)構(gòu)造過程類似,若在類成員的構(gòu)造中遇到復雜類型,則往下遞歸,最終完成測試用例的構(gòu)造。4. I. 2不變量判斷測試用例有效性如前背景技術(shù)中所述,不變量對于軟件開發(fā)維護的各個階段有著極其重要的意義,本工具CRT也利用了不變量來進行測試用例有效性的判別。程序不變量是指在程序的某個特定的點或某些特定的點上保持為真的屬性,是描述在程序運行時保持不變的性質(zhì)的邏輯斷言;它經(jīng)常出現(xiàn)在斷言聲明(assertstatement)、形式化描述(formal specif ications)、說明文檔(documentation)中(Ernstet al,2007),形如表I. I所示
      1. field > abs(y)
      2y = 2*x+3
      3array a is sorted
      4for all List objects 1st,1st. next, prev = 1st,,
      5for all Treenode objects n,n. left, value < n. right, value,,
      6p ! = null = > p. content in myArray表I程序不變量示例程序似然不變量集(Likely Program Invariant)指“可能的,不確定”的程序動態(tài)不變量集合,程序動態(tài)不變量提取工具的輸出就是程序似然不變量集合,它依賴于程序輸入(測試用例),它會在程序動態(tài)運行時隨著輸入的變化而改變。輸入越完備,則動態(tài)提取的程序似然不變量集越逼近于在理論上的程序動態(tài)不變量集。總的來說,程序運行時程序內(nèi)部的某個保真的屬性稱為程序動態(tài)不變量,程序動態(tài)不變量的集合稱為程序動態(tài)不變量集,程序動態(tài)不變量提取工具輸出的是程序似然不變量集合。隨著輸入的不斷增多,程序似然不變量集逐漸地向程序動態(tài)不變量集逼近。舉個例子說明上述情況,例I :
      1int test(intx){
      2if (x>0) return I;
      3elsereturn 0;
      4}“return = one of {0,1} ”是該程序的一個程序動態(tài)不變量,它和程序中其他的不變量(若存在)構(gòu)成的集合是程序動態(tài)不變量集。程序動態(tài)不變量提取工具在程序輸入大于O時會給出似然不變量”return == 1”,當程序輸入中出現(xiàn)小于等于O的值出現(xiàn)時,不變量提取工具剔除該似然不變量(該似然不變量非程序不變量),最終程序動態(tài)不變量提取工具輸出似然不變量集“return = one of{0,1} ”和其他似然不變量(若存在)。此時,從例I可以看出,該似然不變量集就是程序動態(tài)不變量集。上述過程就是不變量指導測試用例生成的核心思想,比較添加新的測試用例前后的程序似然不變量集,判斷是否有所改善,若有,則該新用例是有效的,添加到有效測試用例集中,若無,則認為該測試用例是冗余的,丟棄。算法表述見算法I。算法I基本的程序動態(tài)不變量集指導測試用例生成算法.
      IProcedure TESTCASE—GENERATER(program P,int N)
      2Testsuite S {}
      3int i^O
      4while i<N do
      5testcase c^-RANDNEWCASE()
      6if OPABSTR(P,S)!=OPABSTR(P,S U {c}) then
      7S^S U {c}
      8i^O
      9else
      10 i^i+1
      IIreturn SRANDNEffCASE是隨機測試數(shù)據(jù)生成方法。0PABSTR是程序似然不變量集,在本文中用DAIKON不變量提取工具獲得。上述算法(算法I)起始于一個空的有效測試用例集合和一個空的程序動態(tài)不變量集,重復地添加測試用例,如果該測試用例改變了程序動態(tài)不變量集(如前所述,實際上是程序似然不變量集),則保留該測試用例。若連續(xù)N次,程序似然不變量集未發(fā)生改變,算法終止。N是一個權(quán)衡值,它是綜合考量算法時間開銷和所得測試例集質(zhì)量的結(jié)果。以一個簡單的C程序絕對值函數(shù)abs (X)來說明算法I的工作流程,該函數(shù)的代碼如例2。例2
      int abs(x){
      if(x>0) return x; else return -x;
      }算法I作用于例2的工作 流程如表2所示
      權(quán)利要求
      1.一種不變量指導的隨機測試用例自動化生成方法,其特征是利用程序不變量屬性信息指導隨機測試用例的自動化生成。
      2.根據(jù)權(quán)利要求I所述的方法,其特征是高自動化,除需提供必要的被測源碼外,完全自動化。
      3.根據(jù)權(quán)利要求I所述的方法,其特征是利用程序不變量的提取結(jié)果來過濾無效用例。降低最終用例集合中的無效用例數(shù)目,降低冗余率。
      4.根據(jù)權(quán)利要求I所述的方法,其特征是利用程序不變量的提取結(jié)果來約簡可選用例空間,見效隨機用例生成的取值區(qū)間大小,提高有效用例被選中的概率,進而提高用例生成效率。
      全文摘要
      本申請書中就軟件測試的核心問題——測試用例自動化生成,針對目前一種廣泛應(yīng)用的自動化技術(shù)——隨機測試方法的缺點,提出了一種結(jié)合不變量技術(shù)的隨機測試改進方法——不變量指導下的隨機用例生成方法。主要提出兩個新方法——利用提取到的程序不變量過濾無效測試用例,保留有效用例;利用提取到的程序不變量約簡無效用例空間,提高選中有效用例的概率。通過這些方法,降低冗余率,滿足覆蓋率要求,極大地改進了傳統(tǒng)隨機方法的缺點。且整個用例生成過程完全自動化,除了必需的被測程序外,不需要其它任何的輸入和人工干預。
      文檔編號G06F11/36GK102736973SQ20111008586
      公開日2012年10月17日 申請日期2011年4月7日 優(yōu)先權(quán)日2011年4月7日
      發(fā)明者張美超, 曾凡平, 潘能剛, 黃玉涵 申請人:中國科學技術(shù)大學
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1