利索能及
我要发布
收藏
专利号: 2023102108452
申请人: 杭州电子科技大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-06-24
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种Bug修复后网站后端的检验方法,其特征在于所述方法包括以下步骤:步骤1:对Bug修复后的网站后端代码寻找最大可疑度的动态行为表达式snapshot;

步骤1‑1:获取每个测试用例的动态行为表达式snapshot;

运行Bug修复前的后端网站,以及该后端网站对应的测试集to,首先构建snapshot所需的布尔表达式,得到布尔表达式集合Bbug,收集每一个测试用例运行期间的程序抽象状态;

然后计算布尔表达式集合Bbug中每个布尔表达式的值,生成测试集中每个测试用例的动态行为表达式snapshot;

所述动态行为表达式snapshot基于补丁相似性原理采用五元组进行表达:其中 表示每一条语句的唯一位置标识,b表示布尔表达式,?表示b的值,i表示测试集中每一个测试用例的唯一序号,vi表示测试用例ti在bug程序执行过程中b的实际值;

步骤1‑2:计算每一个动态行为表达式snapshot的可疑度,计算公式定义如下:其中eds表示依赖性变量,dys表示动态分析变量;

步骤1‑3:筛选最大可疑度的动态行为表达式snapshot,记为smax;最大可疑度的动态行为表达式snapshot即为Bug的动态行为表达式snapshot,进而得到测试集to对应的snapshot集合sbug;

步骤2:对测试集to进行数据增强,得到数据增强后的测试集te:通过Evosuite软件随机生成多个新测试用例,将步骤1‑1中测试集替换成上述新测试用例,然后重复步骤1‑1计算得到这些测试用例的动态行为表达式snapshot,记为snew;如果snew与smax相同,则将snew对应的测试用例添加到测试集to,反之则丢弃snew对应的测试用例,最终得到数据增强后的测试集te;

步骤3:识别过拟合补丁并对识别出的过拟合补丁进行分类;具体如下:步骤3‑1:在Bug修复采用的补丁中获取需要监听的位置

由于网站后端修复前bug的位置不能直接在补丁中监听,需要重新选择补丁中的某个位置 去监听Bug的动态行为表达式相同的布尔表达式b;无论哪一种修复操作,程序只有在修复操作结束后,才可能有正确的程序行为,故定义bug和补丁第一次不同的语句记为starts,最后不同的语句记为ends,采用以下的规则进行监听位置选择:

1)如果starts采用块语句,且ends在starts内部,那么 在块语句结束的下一条语句;所述块语句为for、while或if;

2)如果starts不采用块语句,判断ends是否为最后一条语句,若否则 在ends的下一条语句,若是则步骤3‑2:运行Bug修复后的后端网站和数据增强后的测试集te,获取测试集te中每个测试用例在 上的程序抽象状态,进而得到动态行为表达式snapshot,最后获得测试集te对应的snapshot集合spatch;其中spatch与sbug的布尔表达式b和?相同;

步骤3‑3:将两个集合sbug、spatch按照测试集te中测试用例的序号进行对比,获得集合sbug、spatch中测试失败的测试用例间v相同的数量Nf,以及集合sbug、spatch中测试通过的测试用例间v不同的数量Np;

根据以下公式(3),识别补丁的类型:

其中correct表示正确的补丁,A表示A类型的过拟合补丁,即补丁既没有完全修复不正确的行为也没有破坏原来正确的行为;B表示B类型的过拟合补丁,即补丁修复了原来不正确的行为但是破坏了原来正确的行为,被称为回归错误;

AB表示AB类型的过拟合补丁,即补丁不但没有修复不正确的行为还破坏了原来正确的行为。

2.一种实现权利要求1所述方法的检验装置,其特征在于包括:

最大可疑度snapshot寻找模块,用于对Bug修复后的网站后端代码寻找最大可疑度的动态行为表达式snapshot;

测试数据增强模块,用于对测试集to进行数据增强;

过拟合补丁的识别及分类模块。

3.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1所述的方法。

4.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1所述的方法。