[發明專利]xUnit框架下面向對象軟件中測試目標的自動化選擇方法有效
| 申請號: | 201310146574.5 | 申請日: | 2013-04-24 |
| 公開(公告)號: | CN103309805A | 公開(公告)日: | 2013-09-18 |
| 發明(設計)人: | 顧慶;陳道蓄 | 申請(專利權)人: | 南京大學鎮江高新技術研究院 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 江蘇圣典律師事務所 32237 | 代理人: | 賀翔 |
| 地址: | 212000 江蘇省鎮*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | xunit 框架 面向 對象 軟件 測試 目標 自動化 選擇 方法 | ||
1.一種xUnit框架下面向對象軟件中測試目標的自動化選擇方法,其特征在于包含以下步驟:
1)基于xUnit框架,以被測軟件中的對象類作為測試目標;通過分析對象類之間的依賴關系構建類依賴圖;
2)根據類依賴圖和測試需求,基于節點的兩跳可達集,選擇影響范圍最大的關鍵節點集合;
3)將關鍵節點集合映射為關鍵類集合,以關鍵類集合中的對象類作為測試目標,再按照xUnit框架設計和執行相應的測試用例。
2.根據權利要求1所述的xUnit框架下面向對象軟件中測試目標的自動化選擇方法,其特征在于,步驟1)具體過程為:首先獲取被測軟件的源代碼,解析其中所有的類(Class);然后以每一個類為單位,根據類定義和類方法實現,分析類之間的依賴關系,確定類之間的關聯;最后將解析出的類映射為節點,關聯映射為有向邊,構建類依賴圖,該依賴圖為簡單的有向圖。
3.根據權利要求2所述的xUnit框架下面向對象軟件中測試目標的自動化選擇方法,其特征在于,任意兩個類之間的依賴關系定義分6種情況,假設給定兩個不同的類c1和c2:
情況1.類c1繼承(inherit)或實現(implement)了類c2;
情況2.類c1中的一個或多個域變量(field)的定義類型是類c2;
情況3.類c1中一個或多個方法(method)的返回值類型是類c2;
情況4.類c1中某一個方法的一個或多個參數(parameter)類型是類c2;
情況5.類c1中某一個方法的實現中,存在一個或多個局部變量(variable)的定義類型是類c2;
情況6.類c1中某一個方法的實現中,調用了類c2中的一個或多個方法;
如果存在這6種依賴關系之一,則定義兩個類之間的關聯<c1,c2>;類之間的關聯是有向的,<c1,c2>和<c2,c1>是兩個不同的關聯。
4.根據權利要求1、2或3所述的xUnit框架下面向對象軟件中測試目標的自動化選擇方法,其特征在于,步驟2)具體過程為:首先根據測試需求設定關鍵節點集的規模,然后計算每一個節點的關鍵度指標κ,為從該節點出發,兩跳可達集內的節點數量;接下來開始迭代,每次選擇一個關鍵節點,直到選擇出符合前述規模的足夠數量的關鍵節點為止;最后將所選關鍵節點對應的類輸出為關鍵類集合。
5.根據權利要求4所述的xUnit框架下面向對象軟件中測試目標的自動化選擇方法,其特征在于,一次迭代選擇一個關鍵節點的處理流程是:考慮已經被選中的節點,計算候選節點關鍵度指標的折扣值δ;給定候選節點vi,令兩跳可達集內已被選中的節點數量是ti1,同vi直接相鄰的父節點中已被選中的節點數量是ti2,前述父節點定義為終止節點為vi之有向邊的起始節點;令p為影響概率;節點vi的折扣值δi計算如下:
δi=ti1+(κi-ti1)×ti2×p
候選節點的權重w定義為關鍵度指標和折扣值的差,即節點vi的權重wi的計算如下:
wi=κi-δi
根據節點權重,找出候選節點中權重最大的節點,作為本次迭代所選擇的關鍵節點。
6.根據權利要求5所述的xUnit框架下面向對象軟件中測試目標的自動化選擇方法,其特征在于,步驟3)過程為:對于關鍵類集中的每一個關鍵類,首先根據關鍵類中的每一個公共方法(public)編寫對應的測試方法;然后采用隨機測試或符號執行方法達到既定的測試覆蓋要求。
7.根據權利要求6所述的xUnit框架下面向對象軟件中測試目標的自動化選擇方法,其特征在于,達到既定的測試覆蓋的具體過程為:當給定關鍵類c1,要求對以c1為起始節點的所有關聯覆蓋至少n次,n根據測試需求和測試成本決定;如果關聯對應不止1個依賴關系,則要求對所有相應的依賴關系覆蓋至少1次;達到測試覆蓋要求,所有關鍵類處理完畢后,在xUnit框架支持下執行測試用例,完成自動化測試。
8.根據權利要求7所述的xUnit框架下面向對象軟件中測試目標的自動化選擇方法,其特征在于對類之間關聯的覆蓋,由類之間的依賴關系決定,對應依賴關系的6種情況;給定關聯<c1,c2>,關聯覆蓋定義如下:
情況1.對類c1進行實例化;
情況2.對類c2實例化,賦予類c1中相應的域變量(field);
情況3.執行類c1中的相應方法,返回非空(null)的類c2對象實例;
情況4.對類c2實例化,在調用類c1中相應方法時,賦予類型為c2的參數;
情況5.對類c2實例化,賦予類c1相應方法實現中類型為c2的局部變量;
情況6.調用類c1中的相應方法,執行其中的針對類c2方法的調用語句。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京大學鎮江高新技術研究院,未經南京大學鎮江高新技術研究院許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310146574.5/1.html,轉載請聲明來源鉆瓜專利網。





