[發明專利]一種冗余變異體識別方法有效
| 申請號: | 201710329693.2 | 申請日: | 2017-05-11 |
| 公開(公告)號: | CN107247663B | 公開(公告)日: | 2020-05-08 |
| 發明(設計)人: | 孫昌愛;郭新玲 | 申請(專利權)人: | 北京科技大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京市廣友專利事務所有限責任公司 11237 | 代理人: | 張仲波 |
| 地址: | 100083*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 冗余 異體 識別 方法 | ||
1.一種冗余變異體識別方法,其特征在于,包括:
對待測程序源代碼進行程序塊的劃分,根據程序塊劃分結果生成規則文件;
比較變異體與待測程序源代碼,獲取每個變異體的變異位置及變異內容,并根據每個變異體的變異位置和生成的規則文件,確定每個變異體所屬的塊類別;
對待測程序源代碼進行數據流分析,獲取待測程序的數據流信息,結合獲取的待測程序的數據流信息,對獲取的每個變異體的變異內容上的變量進行分析,確定變異體的變異類型;其中,所述數據流信息包括:每個變量的定義-使用鏈;
根據確定的變異體所屬的塊類別和變異體的變異類型,按照預先定義的冗余變異體識別規則,分析待測程序的每條定義-使用鏈,獲取滿足冗余變異體識別規則的變異體并標記為冗余變異體;
其中,給定待測程序源代碼p,變異體m1、m2,測試用例集ts,若對∈ts,都有則變異體m2是相對變異體m1的冗余變異體,記作其中,t表示測試用例;m1(t)、p(t)、m2(t)分別表示測試用例t在變異體m1、待測程序源代碼p、變異體m2上的執行結果;
其中,所述冗余變異體識別規則包括:
若對變量v的一個定義-使用鏈du(v,s1,s2),當變異算子在變量定義s1處生成變異體集合Mdef,變異算子作用在變量使用s2處生成變異體集合Muse,且s1和s2處于同一個基本塊時,Muse是Mdef的冗余變異體;
其中,所述冗余變異體識別規則包括:
若對變量v的一個定義-使用鏈du(v,s1,s2),當變異算子在變量定義s1處生成變異體集合Mdef,變異算子作用在變量使用s2處生成變異體集合Muse,且s2所處的基本塊是s1所處基本塊的任意個上層塊的某個順接塊時,Muse是Mdef的冗余變異體;
其中,所述冗余變異體識別規則包括:
若待測程序中存在含有變量v的函數調用,Sm→n為函數m調用函數n的調用語句,變量v在函數n的變量使用s2處使用,且在使用前沒有對v的變量定義,則對變量v的一個定義-使用鏈du(v,Sm→n,s2),當變異算子作用在函數調用語句Sm→n上生成變異體集合Mm→n,變異算子作用在變量使用s2上生成變異體集合Muse,且變量使用s2所處的基本塊沒有上層塊時,Muse是Mm→n的冗余變異體;
其中,所述冗余變異體識別規則包括:
若Sprintf表示待測程序中沒有變量的輸出語句,變異算子作用在謂詞表達式φ上生成變異體集合Mφ,變異算子作用在Sprintf上生成變異體集合Mprintf,則當謂詞表達式φ所處的選擇塊或循環塊是Sprintf所處的基本塊的上層塊時,Mprintf是Mφ的冗余變異體。
2.根據權利要求1所述的冗余變異體識別方法,其特征在于,所述對待測程序源代碼進行程序塊的劃分,根據程序塊劃分結果生成規則文件包括:
根據預先確定的基本塊、選擇塊和循環塊的定義,對待測程序源代碼進行程序塊的劃分,根據程序塊劃分結果生成規則文件。
3.根據權利要求1或2所述的冗余變異體識別方法,其特征在于,一個待測程序對應一個規則文件,一個規則文件包含多條分塊規則;
每條分塊規則描述了相應程序塊在待測程序源代碼中的入口行數與出口行數。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京科技大學,未經北京科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.17sss.com.cn/pat/books/201710329693.2/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:軟件缺陷檢測方法及裝置
- 下一篇:一種面向開源軟件的協同行為測度方法





