当前位置: 首页 > 专利查询>北京大学专利>正文

一种预测性变异测试方法技术

技术编号:13995860 阅读:57 留言:0更新日期:2016-11-15 03:13
本发明专利技术公布了一种预测性变异测试方法,分为训练阶段和预测阶段,通过预测方法来预测每一个变异体的执行结果;训练阶段包括:执行变异体;对已执行变异体进行特征收集,形成特征属性文件;应用分类算法创建分类模型;预测阶段包括:对未执行变异体进行特征收集;对未执行变异体利用分类模型将每一个未执行变异体分类,即获得分类结果。采用本发明专利技术技术方案进行变异测试,可对待测的变异体,直接使用建立的预测模型进行预测,不必执行变异体即可得到变异体的执行结果,可显著降低变异测试代价。

【技术实现步骤摘要】

本专利技术涉及软件测试
,尤其涉及一种可以减小变异测试代价的预测性变异测试方法(Predictive Mutation Testing)。
技术介绍
测试用例在保证软件质量方面扮演着重要角色。相比较于质量差的测试用例,经过良好设计的测试用例能够发现更多的错误。为了衡量测试用例的揭错能力,变异测试(mutation testing)应运而生,并在近几年得到越来越多研究人员和开发人员的广泛关注和使用。简单而言,变异测试通过在程序中植入错误来模拟程序中的真实错误,进而用现有测试用例找出植入错误的能力来预测其找出真实错误的能力。在变异测试中,植入的错误称为变异体(mutant),当测试用例发现某变异体行为和原来程序行为不一致时,称为该测试用例杀死(kill)了变异体。所有被找出的变异体的比例称为变异分数(mutation score),该分数高低即可昭示测试用例质量好坏。由于程序中可以植入很多错误,产生很多变异体,每个变异体均须在每个测试用例上执行,因而变异测试代价极大。高昂的测试代价成为变异测试技术的瓶颈,因而降低变异测试代价问题成为变异测试领域研究的重点和热点。选择性变异测试技术是当前比较热门的变异测试代价降低技术,该技术通过执行程序中的一部分变异体,并用执行过的变异体的变异分数来预测整体变异体的变异分数,但是,这种方法中,每一个变异体的执行结果无法被预测。
技术实现思路
为了克服上述现有技术的不足,本专利技术提供一种预测性变异测试(Predictive MutationTesting)方法,在变异体执行结果准确率和变异测试代价之前寻求平衡。当测试人员急于知道测试用例大概质量而不需要精确变异体执行结果时,该技术可以为开发人员提供很好的选择。本专利技术的原理是:为缓解变异测试高代价的问题,提出一种全新的变异测试技术——预测性变异测试方法。本专利技术利用预测方法(如基于规则的方法、机器学习等)来预测每一个变异体的执行结果,本专利技术称此方法为预测性变异测试方法(Predictive MutationTesting)。该方法通过分析已执行的变异体的特征属性和执行结果,建立分类模型(预测模型)。分类模型的训练为离线阶段。训练得到分类模型后,利用分类模型,针对待预测的变异体,未执行待预测变异体即可将其分类为杀死(killed)或者存活(survived),从而预测变异体的执行结果。本专利技术提供的技术方案是:一种预测性变异测试方法,分为训练阶段和预测阶段,通过预测方法来预测每一个变异体的执行结果,包括如下步骤:一,训练阶段:11)执行变异体;12)对已执行变异体进行特征收集;收集变异体的特征属性,具体地,本专利技术根据代码不同类型的特征,包括:错误必须被执行到(Execution)、有感染性(Infection)、能被传播出来(Propagation)的特征,收集三种类型的特征属性:a)E特征:根据E原则,可收集的特征有:变异体植入错误位置被测试用例执行的总次数、覆盖该位置的测试用例个数;b)I特征:根据I原则,可收集的特征有:变异体被植入错误的语句的类型、生成该变异体的变异算子类型;c)P特征:根据P原则,可收集的特征有:McCabe复杂度、每个方法子方法的数目、代码行数、不稳定性等表征程序特点的计量准则(metric)。13)应用分类算法创建分类模型;利用收集到的变异体的特征属性,本专利技术具体使用weka工具,将特征属性文件(arff)格式作为输入,即可自动生成分类模型(预测模型)。本专利技术实例中,分类算法采用机器学习作为预测方法,来预测变异体执行结果的行为。机器学习方法实际上属于分类行为,即把每个变异体进行分类,分为能被测试用例杀死和不能被测试用例杀死两类。在机器学习的分类算法上,本专利技术支持多种分类算法,如决策树、神经网络、支持向量机等。二,预测阶段:21)对未执行变异体进行特征收集;22)对未执行变异体利用步骤13)所述分类模型进行分类预测,将每一个变异体分为两类,即获得分类结果。每个变异体的类型分为:能被测试用例杀死或不能被测试用例杀死。在实际的变异测试中,被测试用例杀死的变异体往往大于未被杀死的变异体,因此训练集和测试集的数据往往是不均衡的。传统的机器学习中处理不均衡数据的方法主要有三种,一是向上均衡法,方法为根据数目少的那一类的数据特点随机生成该类数据,直至该类数据数量和另外一类均衡;二是向下均衡法,方法为将数目多的那一类随机删掉数据,直至数据数量和另外一类均衡;三是给不同的类别的数据附以不同的权重,以此来消除不均衡数据对分类模型的影响。针对不均衡数据处理问题,本专利技术同时使用两种不均衡数据处理方法:向下均衡法和权重法。本专利技术在具体实施时,将同时使用上述两种不均衡数据处理方法的处理结果和不加不均衡数据处理进行比较,以此来验证不均衡数据的处理对变异体测试执行结果预测的影响。在实际应用中,本专利技术提供的预测性变异测试方法可用于三种应用场景:版本内、跨版本、跨项目。版本内的应用场景利用版本产生的部分变异体及其执行结果作为训练集,来预测剩下的变异体的执行结果。跨版本的应用场景利用前面一个或者多个版本产生的变异体及其执行结果作为训练集,来预测新版本的变异体的执行结果。跨项目的应用场景利用部分项目的变异体及其执行结果,来预测其他项目变异体的执行结果。与现有技术相比,本专利技术的有益效果是:本专利技术方法通过分析已执行的变异体的特征属性和执行结果,建立分类模型,利用预测方法(如基于规则的方法、机器学习等)来预测每一个变异体的执行结果。本专利技术方法需要根据已经执行的变异体建立模型,因此必须执行一部分变异体。但预测模型建立好之后,即可离线一直使用。采用本专利技术技术方案进行变异测试,对于待测的变异体,直接使用预测模型进行预测,不必执行变异体即可得到变异体的执行结果,可显著降低变异测试代价。附图说明图1是本专利技术提供的预测性变异测试方法的流程框图。具体实施方式下面结合附图,通过实施例进一步描述本专利技术,但不以任何方式限制本专利技术的范围。本专利技术提供的预测性变异测试方法可使用在很多测试情境,例如,当测试人员急于了解测试用例的预测质量,但又希望预测结果比较准确的情况。这种情况如采用已有的预测技术,预测准确率低,难以满足测试人员要求。图1所示是本专利技术提供的预测性变异测试方法的流程,包括如下步骤:1)预测模型构建。为构造预测模型,需执行部分变异体(这些变异体产生于被预测程序的上一个版本或者其他程序),并收集这些变异体的特征属性,结合其执行结果输入到分类算法中,产生预测模型。需注意预测模型的构建过程可以是离线的事先构建好的。2)待测程序特征收集。对于待测程序,需产生变异体,并收集这些变异体的特征属性,作为预测模型的输入。3)收集预测结果。收集好的待测程序的变异体特征输入到预测模型中,即可收集被预测的每个变异体的执行结果。预测每个变异体的执行结果分为两种:变异体被杀死或变异体存活。针对步骤1)中收集变异体的特征属性,由于软件中错误被发现必须满足PIE原则,即代码中的错误必须被执行到(Execution)、有感染性(Infection)、能被传播出来(Propagation)。基于这三条原则,本专利技术收集三种类型的特征属性:a)E特征:根据E原则,可收集的特征有:变异体植入错本文档来自技高网...

【技术保护点】
一种预测性变异测试方法,分为训练阶段和预测阶段,通过预测方法来预测每一个变异体的执行结果,包括如下步骤:一,训练阶段:11)执行变异体;12)对已执行变异体进行特征收集,形成特征属性文件;13)应用分类算法创建分类模型;二,预测阶段:21)对未执行变异体进行特征收集;22)对未执行变异体利用步骤13)所述分类模型进行分类预测,将每一个未执行变异体分类,即获得分类结果。

【技术特征摘要】
1.一种预测性变异测试方法,分为训练阶段和预测阶段,通过预测方法来预测每一个变异体的执行结果,包括如下步骤:一,训练阶段:11)执行变异体;12)对已执行变异体进行特征收集,形成特征属性文件;13)应用分类算法创建分类模型;二,预测阶段:21)对未执行变异体进行特征收集;22)对未执行变异体利用步骤13)所述分类模型进行分类预测,将每一个未执行变异体分类,即获得分类结果。2.如权利要求1所述预测性变异测试方法,其特征是,步骤12)所述特征包括三种类型,分别为:错误必须被执行到的E特征、有感染性的I特征、能被传播出来的P特征;所述E特征包括变异体植入错误位置被测试用例执行的总次数和覆盖该位置的测试用例个数;所述I特征包括变异体被植入错误的语句的类型和生成该变异体的变异算子类型;所述P特征包括McCabe复杂度、每个方法子方法的数目、代码行数和不稳定性计量。3.如权利要求1所述预测性变异测试方法,...

【专利技术属性】
技术研发人员:张洁郝丹张令明张路
申请(专利权)人:北京大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1