[发明专利]一种提高软件测试覆盖率的方法和系统在审
申请号: | 201910147467.1 | 申请日: | 2019-02-27 |
公开(公告)号: | CN109885500A | 公开(公告)日: | 2019-06-14 |
发明(设计)人: | 李男 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 济南舜源专利事务所有限公司 37205 | 代理人: | 刘雪萍 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 被测软件 软件测试 覆盖率 测试覆盖率 输入位置 测试 源代码 覆盖率测试 测试程序 方法执行 计算测试 扫描识别 反推 扫描 输出 记录 统计 | ||
1.一种提高软件测试覆盖率的方法,其特征在于,包括如下步骤:
对测试程序源代码进行扫描识别出故障输入位置;
根据扫描出的故障输入位置注入故障并输出变异后的被测软件;
对变异后的被测软件进行测试,
计算测试覆盖率,若测试覆盖率达到设定的目标覆盖率测试结束。
2.根据权利要求1所述的一种提高软件测试覆盖率的方法,其特征在于,对测试程序源代码进行扫描识别出故障输入位置,之前包括:
创建扫描规则,其中,所述的扫描规则定义了对源代码进行扫描时要识别的语法结构,所述的语法结构包括函数的定义语句、赋值语句、控制分支和循环语句。
3.根据权利要求2所述的一种提高软件测试覆盖率的方法,其特征在于,对测试程序源代码进行扫描识别出故障输入位置,包括:
根据扫描规则对程序源代码进行扫描,识别出所有的故障输入位置;
输出故障输入位置列表。
4.根据权利要求3所述的一种提高软件测试覆盖率的方法,其特征在于,根据扫描出的故障输入位置注入故障并输出变异后的被测软件,包括:
根据扫描出来的故障输入位置列表注入故障,并记录注入故障会引发的bug数M,输出变异后的被测软件。
5.根据权利要求4所述的一种提高软件测试覆盖率的方法,其特征在于,计算测试覆盖率,包括:
测试输出变异后的被测软件,统计与注入故障相关的bug数N;
结合注入故障会引发的bug数M和统计的与注入故障相关的bug数N,计算覆盖率。
6.根据权利要求2所述的一种提高软件测试覆盖率的方法,其特征在于,该方法还包括:若测试覆盖率没有达到设定的目标覆盖率,完善测试用例对变异后的软件进行测试。
7.根据权利要求3所述的一种提高软件测试覆盖率的方法,其特征在于,该方法还包括:输出故障输入位置列表留存在变异库中。
8.一种提高软件测试覆盖率的系统,其特征在于,包括程序扫描模块、故障注入模块、测试模块和计算判断模块;
程序扫描模块,用于对测试程序源代码进行扫描识别出故障输入位置;
故障注入模块,用于根据扫描出的故障输入位置注入故障并输出变异后的被测软件;
测试模块,用于对变异后的被测软件进行测试,
计算判断模块,用于计算测试覆盖率,若测试覆盖率达到设定的目标覆盖率测试结束。
9.根据权利要求8所述的一种提高软件测试覆盖率的系统,其特征在于,该系统还包括扫描规则创建模块,所述的扫描规则创建模块,用于创建扫描规则,其中,所述的扫描规则定义了对源代码进行扫描时要识别的语法结构,所述的语法结构包括函数的定义语句、赋值语句、控制分支和循环语句。
10.根据权利要求9所述的一种提高软件测试覆盖率的系统,其特征在于,该系统还包括变异库,程序扫描模块包括程序扫描单元和位置列表输出单元;
程序扫描单元,用于根据扫描规则对程序源代码进行扫描,识别出所有的故障输入位置;
位置列表输出单元,用于输出故障输入位置列表;
变异库,用于留存输出故障输入位置列表;
故障注入模块,用于根据扫描出来的故障输入位置列表注入故障,并记录注入故障会引发的bug数M,输出变异后的被测软件;
故障注入模块,还用于统计与注入故障相关的bug数N;
测试模块测试输出变异后的被测软件;
计算判断模块,结合注入故障会引发的bug数M和统计的与注入故障相关的bug数N,计算覆盖率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910147467.1/1.html,转载请声明来源钻瓜专利网。