两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于語句交互覆蓋的回歸測試用例選擇方法

文檔序號:6522136閱讀:629來源:國知局
基于語句交互覆蓋的回歸測試用例選擇方法
【專利摘要】本發(fā)明公開了一種基于語句交互覆蓋的回歸測試用例選擇方法,包括如下步驟:(1)對待測程序進行插樁,在插樁后的程序上執(zhí)行用于測試被測程序的已有測試用例集中的每個測試用例,記錄每個測試用例的語句覆蓋信息并構(gòu)造出測試用例-語句覆蓋矩陣,確定需覆蓋的語句集R;(2)基于測試用例-語句覆蓋矩陣生成可覆蓋的語句間交互集I;(3)根據(jù)可覆蓋的語句間交互集I、需覆蓋的語句集R和已有測試用例集,按照選擇策略執(zhí)行測試用例集壓縮方法,并最終生成壓縮后的測試用例集。該方法具有選擇出的測試用例數(shù)量較小,同時又不會顯著降低原有測試用例集的缺陷檢測能力等優(yōu)點。從而可顯著降低回歸測試成本,并進一步提高回歸測試的效率。
【專利說明】基于語句交互覆蓋的回歸測試用例選擇方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機軟件測試【技術(shù)領(lǐng)域】,具體涉及一種基于語句交互覆蓋的回歸測試用例選擇方法,用于提高回歸測試的效率,減少回測測試中的復(fù)雜度并使選擇出的測試用例仍具備較高的錯誤檢測能力。
【背景技術(shù)】
[0002]軟件產(chǎn)品在開發(fā)和維護過程中,因移除內(nèi)在缺陷、完善已有功能、重構(gòu)已有代碼或提高運行性能等,需要執(zhí)行代碼修改并觸發(fā)軟件演化。隨著以統(tǒng)一過程和敏捷方法為代表的增量迭代式開發(fā)過程的流行,軟件演化頻率也隨之迅速提高并亟需經(jīng)濟有效的測試方法來確保演化后軟件產(chǎn)品的質(zhì)量?;貧w測試是其中一種有效方法,可有效保證代碼修改的正確性并避免代碼修改對被測程序其他模塊產(chǎn)生的副作用。執(zhí)行回歸測試時的一個核心問題是測試用例集的維護策略設(shè)定。在軟件持續(xù)演化過程中,因新測試用例的不斷添加,導(dǎo)致測試用例集規(guī)模持續(xù)增長并增加了測試用例集的執(zhí)行和維護開銷。例如有研究人員在某一合作企業(yè)內(nèi),當測試一個包含約2萬行代碼的軟件產(chǎn)品時,發(fā)現(xiàn)運行所有測試用例后,所需時間高達7周。而測試用例集壓縮方法在滿足指定測試需求(例如語句、分支和定義使用對等)的覆蓋前提下,通過識別并移除冗余測試用例來壓縮測試用例集規(guī)模,從而提高回歸測試效率并降低回歸測試成本。
[0003]然而傳統(tǒng)的測試用例集壓縮方法僅考慮對單一測試需求的覆蓋,隨后設(shè)計出新穎的算法來完成測試用例集的壓縮并盡可能的使得壓縮后的測試用例集規(guī)模更小。在一些實證研究中,研究人員發(fā)現(xiàn)測試用例集壓縮方法雖可以大幅度縮減壓縮后的測試用例集規(guī)模,但同時也會顯著降低原有測試用例集的缺陷檢測能力。
[0004]綜上所述,為提高壓縮后的測試用例集缺陷檢測能力,有必要設(shè)計出一種系統(tǒng)方法來提高壓縮后的測試用例集的缺陷檢測能力。本發(fā)明由此而來。

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

[0005]本發(fā)明目的在于提供一種基于語句交互覆蓋的回歸測試用例選擇方法,解決了現(xiàn)有技術(shù)中測試用例集壓縮方法雖然大幅度縮減壓縮后的測試用例集規(guī)模,但顯著降低原有測試用例集的缺陷檢測能力等難題,本發(fā)明的方法有效降低測試用例數(shù)量并保持足夠高的錯誤檢測能力。
[0006]為了解決現(xiàn)有技術(shù)中這些問題,本發(fā)明提供的技術(shù)方案如下:
[0007]一種基于語句交互覆蓋的回歸測試用例選擇方法,包括如下步驟:
[0008](I)對待測程序進行插樁,在插樁后的程序上執(zhí)行用于測試被測程序的已有測試用例集中的每個測試用例,記錄每個測試用例的語句覆蓋信息并構(gòu)造出測試用例-語句覆蓋矩陣,確定需覆蓋的語句集R ;
[0009](2)基于測試用例-語句覆蓋矩陣生成可覆蓋的語句間交互集I ;
[0010](3)根據(jù)可覆蓋的語句間交互集1、需覆蓋的語句集R和已有測試用例集,按照選擇策略執(zhí)行測試用例集壓縮方法,并最終生成壓縮后的測試用例集。
[0011]優(yōu)選的技術(shù)方案中,所述方法步驟(3)中執(zhí)行測試用例集壓縮方法按照以下步驟進行:
[0012]I)構(gòu)造壓縮后的測試用例集,并設(shè)置壓縮后測試用例集為空集; [0013]2)按照第一選擇策略SI從已有測試用例集中選擇覆蓋語句集R中相應(yīng)的語句的測試用例,添加到壓縮后的測試用例集中,并確定語句間交互集I中已經(jīng)覆蓋的語句交互;
[0014]3)按照第二選擇策略S2從已有測試用例集中選擇覆蓋語句間交互集I中尚未覆蓋的語句交互的測試用例,添加到壓縮后的測試用例集中。
[0015]優(yōu)選的技術(shù)方案中,所述方法步驟2)按照第一選擇策略SI從已有測試用例集中選擇覆蓋需覆蓋的語句集R中相應(yīng)的語句的測試用例按照如下步驟進行:
[0016]Al)計算出需覆蓋的語句集R中每個語句的基數(shù),獲取需覆蓋的語句集R中語句的最小基數(shù);所述基數(shù)為測試用例集中覆蓋該語句的測試用例數(shù)量;
[0017]A2)從已有測試用例集中選擇測試用例子集Tl,使其中的測試用例覆蓋擁有最小基數(shù)的語句個數(shù)最多;
[0018]A3)如果測試用例子集Tl僅包含一個測試用例,則將該測試用例為被選定的測試用例;如果測試用例子集Tl包含兩個或兩個以上的測試用例時,從測試用例子集Tl中選擇測試用例子集T2,使其中的測試用例覆蓋語句間交互集I中語句交互最多;
[0019]A4)如果測試用例子集T2僅包含一個測試用例,則該測試用例為被選定的測試用例;如果測試用例子集T2包含兩個或兩個以上的測試用例時,從測試用例子集T2中隨機選擇一個測試用例作為被選定的測試用例。
[0020]優(yōu)選的技術(shù)方案中,所述方法步驟3)按照第二選擇策略S2從已有測試用例集中選擇未同時覆蓋需覆蓋的語句集R中相應(yīng)的語句和語句間交互集I的語句交互的測試用例按照如下步驟進行:
[0021]Al)計算出語句間交互集I中每個語句交互的基數(shù),獲取需覆蓋的語句間交互集I中語句交互的最小基數(shù);所述基數(shù)為測試用例集中覆蓋該語句交互的測試用例數(shù)量;
[0022]A2)從已有測試用例集中選擇測試用例子集Tl’,使其中的測試用例覆蓋擁有最小基數(shù)的語句交互個數(shù)最多;
[0023]A3)如果測試用例子集Tl’僅包含一個測試用例,則將該測試用例為被選定的測試用例;如果測試用例子集Tl’包含兩個或兩個以上的測試用例時,從測試用例子集Tl’中隨機選擇一個測試用例作為被選定的測試用例。
[0024]優(yōu)選的技術(shù)方案中,所述方法步驟3)中已有測試用例集為原始已有測試用例集中排除已添加到壓縮后的測試用例集中測試用例的測試用例集合。
[0025]優(yōu)選的技術(shù)方案中,所述方法步驟⑴中假設(shè)已有測試用例集為T,其中包含m個測試用例,待測程序中包含需要覆蓋的n個語句,則測試用例-語句覆蓋矩陣是一個mXn的矩陣,表示為:
c丨丨 C12 L Cln
[0026]2' 22 2
LLLL
_Cm\ Cm2 L Cm? _[0027]其中若第i個測試用例覆蓋第j個語句,則Cu取值為1,否則Cu取值為0 ;如果語句k與語句u構(gòu)成的語句交互是可覆蓋的,當且僅當存在測試用例q,使得Cqk和Cqu同時取值為 I ;其中 1、j、n、k、u、q、m 均是整數(shù),且 0〈=i〈=m ;0〈=j〈=n ;0〈=k〈=n ;0〈=u〈=n ;0〈=q〈=m。
[0028]本發(fā)明涉及回歸測試中的測試用例集優(yōu)化方法。本發(fā)明所要解決的問題是傳統(tǒng)測試用例集壓縮方法雖可以大幅度縮減壓縮后的測試用例集規(guī)模,但同時也會顯著降低原有測試用例集的缺陷檢測能力。本發(fā)明人經(jīng)長期研究發(fā)現(xiàn),軟件在實際測試時,部分軟件缺陷的觸發(fā)與語句間的交互有關(guān),本發(fā)明通過添加少量測試用例來額外滿足對語句交互的覆蓋并提出一種新穎測試用例集壓縮方法,實踐結(jié)果表明該方法可以有效提高壓縮后的測試用例集缺陷檢測能力,并且不需要大幅度增加壓縮后的測試用例集規(guī)模。
[0029]本發(fā)明采用如下方法進行測試用例的選擇:⑴將被測程序P進行代碼插樁;(2)在插樁后的程序上執(zhí)行原有測試用例集T中的每個測試用例,并記錄每個測試用例的語句覆蓋信息;(3)生成可覆蓋的語句間交互集;(4)執(zhí)行測試用例集壓縮方法以確保對語句間交互的充分覆蓋并最終生成壓縮后的測試用例集。
[0030]當原有測試用例集規(guī)模較大時,為降低回歸測試成本,傳統(tǒng)方法僅考慮對單個語句的覆蓋,但在分析軟件的實際測試過程時發(fā)現(xiàn):部分軟件內(nèi)在缺陷的觸發(fā)與語句間的交互有關(guān),本發(fā)明在滿足對單個語句覆蓋的前提下,通過添加少量測試用例來額外滿足對語句交互的覆蓋并提出一種測試用例集壓縮方法,在C語言編程實現(xiàn)的代碼上,運行該方法后發(fā)現(xiàn):本發(fā)明可以有效提高壓縮后的測試用例集缺陷檢測能力,并且不需要大幅度增加壓縮后的測試用例集規(guī)模。
[0031]相對于現(xiàn)有技術(shù),本發(fā)明的優(yōu)點在于:
[0032]本發(fā)明的技術(shù)方案用于從待測程序的測試用例集里選取測試用例子集,以進一步提高回歸測試的效率,并使選取的測試用例具備足夠高的錯誤檢測能力。通過在現(xiàn)有技術(shù)的基礎(chǔ)上記錄每個測試用例的語句覆蓋信息,生成可覆蓋的語句間交互集,通過選擇策略獲取測試用例,了解語句交互之間的聯(lián)系,在回歸測試階段有效降低測試用例數(shù)量并保持足夠高的錯誤檢測能力。
[0033]本發(fā)明通過語句分析對回歸測試中的測試用例的數(shù)量和錯誤檢測能力這兩者進行了充分權(quán)衡,以一種全新的、更加動態(tài)的方式處理測試用例,通過測試用例所展現(xiàn)出的程序行為的內(nèi)在聯(lián)系來理解程序,使得測試用例的選擇變得更加容易和自動化,從而可以更有效的使用這些測試用例進行回歸測試,在現(xiàn)有技術(shù)的基礎(chǔ)上進一步提高了測試用例選擇的精確度,使發(fā)現(xiàn)錯誤的測試用例在選擇出來的測試用例集中所占比例增大,與現(xiàn)有的回歸測試技術(shù)相比,本發(fā)明從原始測試用例集選擇出覆蓋語句集和語句交互集合的測試用例構(gòu)成壓縮后測試用例集,選擇出的測試用例數(shù)量減小,同時保持測試用例集本身對待測程序較高的錯誤檢測能力,從而提高了回歸測試的效率。
【專利附圖】

【附圖說明】
[0034]下面結(jié)合附圖及實施例對本發(fā)明作進一步描述:
[0035]圖1是基于語句交互覆蓋的測試用例集壓縮方法的框架圖;
[0036]圖2是基于語句交互覆蓋的測試用例集壓縮方法總體流程圖;
[0037]圖3是基于語句和語句交互覆蓋的第一選擇策略SI的流程圖;[0038]圖4是基于語句交互覆蓋的第二選擇策略S2的流程圖。
【具體實施方式】
[0039]為了更詳盡的表述上述發(fā)明的技術(shù)方案,以下本發(fā)明人列舉出具體的實施例來說明技術(shù)效果;需要強調(diào)的是,這些實施例是用于說明本發(fā)明而不限于限制本發(fā)明的范圍。
[0040]實施例
[0041]本實施例的基于語句交互覆蓋的回歸測試用例選擇方法的總體流程圖如圖1所示,包含如下步驟:
[0042](I)將被測程序P進行代碼插樁。
[0043](2)在插樁后的程序上執(zhí)行原有測試用例集T中的每個測試用例,記錄每個測試用例的語句覆蓋信息并構(gòu)造出測試用例-語句覆蓋矩陣。假設(shè)T中包含m個測試用例,P中包含需要覆蓋的n個語句,則該矩陣是一個mXn的矩陣且可表示如下:
【權(quán)利要求】
1.一種基于語句交互覆蓋的回歸測試用例選擇方法,其特征在于,所述方法包括如下步驟: (1)對待測程序進行插樁,在插樁后的程序上執(zhí)行用于測試被測程序的已有測試用例集中的每個測試用例,記錄每個測試用例的語句覆蓋信息并構(gòu)造出測試用例-語句覆蓋矩陣,確定需覆蓋的語句集R ; (2)基于測試用例-語句覆蓋矩陣生成可覆蓋的語句間交互集I; (3)根據(jù)可覆蓋的語句間交互集1、需覆蓋的語句集R和已有測試用例集,按照選擇策略執(zhí)行測試用例集壓縮方法,并最終生成壓縮后的測試用例集。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法步驟(3)中執(zhí)行測試用例集壓縮方法按照以下步驟進行: 1)構(gòu)造壓縮后的測試用例集,并設(shè)置壓縮后測試用例集為空集; 2)按照第一選擇策略SI從已有測試用例集中選擇覆蓋語句集R中相應(yīng)的語句的測試用例,添加到壓縮后的測試用例集中,并確定語句間交互集I中已經(jīng)覆蓋的語句交互; 3)按照第二選擇策略S2從已有測試用例集中選擇覆蓋語句間交互集I中尚未覆蓋的語句交互的測試用例,添加到壓縮后的測試用例集中。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法步驟2)按照第一選擇策略SI從已有測試用例集中選擇覆蓋需覆蓋的語句集R中相應(yīng)的語句的測試用例按照如下步驟進行: Al)計算出需覆蓋的語句集R中每個語句的基數(shù),獲取需覆蓋的語句集R中語句的最小基數(shù);所述基數(shù)為測試用例集中覆蓋該語句的測試用例數(shù)量; A2)從已有測試用例集中選擇測試用例子集Tl,使其中的測試用例覆蓋擁有最小基數(shù)的語句個數(shù)最多; A3)如果測試用例子集Tl僅包含一個測試用例,則將該測試用例為被選定的測試用例;如果測試用例子集Tl包含兩個或兩個以上的測試用例時,從測試用例子集Tl中選擇測試用例子集T2,使其中的測試用例覆蓋語句間交互集I中語句交互最多; A4)如果測試用例子集T2僅包含一個測試用例, 則該測試用例為被選定的測試用例;如果測試用例子集T2包含兩個或兩個以上的測試用例時,從測試用例子集T2中隨機選擇一個測試用例作為被選定的測試用例。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法步驟3)按照第二選擇策略S2從已有測試用例集中選擇未同時覆蓋需覆蓋的語句集R中相應(yīng)的語句和語句間交互集I的語句交互的測試用例按照如下步驟進行: Al)計算出語句間交互集I中每個語句交互的基數(shù),獲取需覆蓋的語句間交互集I中語句交互的最小基數(shù);所述基數(shù)為測試用例集中覆蓋該語句交互的測試用例數(shù)量; A2)從已有測試用例集中選擇測試用例子集Tl’,使其中的測試用例覆蓋擁有最小基數(shù)的語句交互個數(shù)最多; A3)如果測試用例子集Tl’僅包含一個測試用例,則將該測試用例為被選定的測試用例;如果測試用例子集Tl’包含兩個或兩個以上的測試用例時,從測試用例子集Tl’中隨機選擇一個測試用例作為被選定的測試用例。
5.根據(jù)權(quán)利要求2或4所述的方法,其特征在于,所述方法步驟3)中已有測試用例集為原始已有測試用例集中排除已添加到壓縮后的測試用例集中測試用例的測試用例集合。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法步驟(1)中假設(shè)已有測試用例集為T,其中包含m個測試用例,待測程序中包含需要覆蓋的n個語句,則測試用例-語句覆蓋矩陣是一個mXn的矩陣,表示為:

【文檔編號】G06F11/36GK103617119SQ201310643493
【公開日】2014年3月5日 申請日期:2013年12月3日 優(yōu)先權(quán)日:2013年12月3日
【發(fā)明者】陳翔, 田丹, 徐慧, 文萬志, 陳繼紅, 蔣崢崢 申請人:南通大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
体育| 格尔木市| 米林县| 建平县| 蕉岭县| 穆棱市| 高阳县| 汉沽区| 连州市| 醴陵市| 德州市| 临沭县| 疏勒县| 铅山县| 池州市| 丹棱县| 桑植县| 天长市| 深圳市| 临颍县| 江口县| 谢通门县| 准格尔旗| 定日县| 云霄县| 寻乌县| 共和县| 建德市| 天全县| 石泉县| 昌图县| 胶南市| 土默特右旗| 焦作市| 吴堡县| 杭锦后旗| 舟山市| 梁山县| 眉山市| 丰宁| 禄丰县|