一种软件测试数据抽样方法及系统技术方案

技术编号:15124616 阅读:38 留言:0更新日期:2017-04-10 02:51
本申请实施例公开了一种软件测试数据抽样方法及系统,包括:在被测程序的代码分支中加入插桩代码,所述插桩代码用于记录覆盖所述代码分支的输入数据;使用海量数据作为所述被测程序的输入数据,运行所述被测程序,保存所述插桩代码记录的输入数据作为基础抽样数据。通过在被测程序中加入插桩代码,使用海量数据作为被测程序的输入数据,由插桩代码记录覆盖被测程序各个代码分支的输入数据,得到用于测试被测程序的抽样数据,不仅能够大大降低测试软件的数据量,而且能够大大提高抽样数据对被测程序的覆盖率,提高软件测试的效率和准确性。

【技术实现步骤摘要】

本专利技术涉及软件
,尤其涉及一种软件测试数据抽样方法及系统
技术介绍
软件测试是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程,通常对一个软件或软件系统需要进行多次测试。在软件测试中,为了覆盖程序的所有异常情况,通常使用海量的数据作为输入数据。海量的输入数据会使测试耗费大量的系统资源和时间。但实际上,对于被测程序的代码分支而言,很多数据对代码分支是重复覆盖的,例如,对于某个进行字符串处理的代码分支,测试时只需要上限长度和下限长度的字符串即可,不需要对每个输入的字符串都进行处理,亦即在一次软件测试中不需要对代码分支的作用和性能进行重复测试。为了降低软件测试的输入数据量,提高软件测试的效率,常用的做法是对海量数据进行抽样。现有的抽样方法主要为随机抽样,即预备海量数据后,评估被测程序可能需要的输入数据的数据类型、数据长度,在海量数据中随机抽取数据作为测试时的输入数据。但专利技术人在实现本专利技术的过程中发现,上述方法存在三个弊端:一是抽样的数据对被测程序的覆盖率不高,会存在部分代码分支没有输入数据;二是抽样的数据难以覆盖被测程序的全部异常情况,即使数据可以覆盖所有代码分支,但数据的分布很可能不能覆盖代码分支的所有异常情况;三是难以适应被测程序的更新,当被测程序发生代码变更时,不能适应性地提供发生变化的部分代码的输入数据。
技术实现思路
为克服相关技术中软件测试抽样数据对被测程序的覆盖率低的问题,本申请提供一种软件测试数据抽样方法及系统。根据本申请实施例的第一方面,提供一种软件测试数据抽样方法,包括:在被测程序的代码分支中加入插桩代码,所述插桩代码用于记录覆盖所述代码分支的输入数据;使用海量数据作为所述被测程序的输入数据,运行所述被测程序,保存所述插桩代码记录的输入数据作为基础抽样数据。可选的,所述的软件测试数据抽样方法,还包括:监测被测程序是否发生代码变更;当被测程序发生代码变更时,在发生变更的代码中加入插桩代码;使用海量数据作为所述被测程序的输入数据,运行所述被测程序,保存所有插桩代码记录的输入数据作为更新的抽样数据。可选的,所述插桩代码用于记录第一次覆盖所述代码分支的输入数据。可选的,所述的软件测试数据抽样方法,还包括:监测被测程序是否发生代码变更;当被测程序发生代码变更时,在发生变更的代码中加入插桩代码;使用海量数据作为所述被测程序的输入数据,运行所述被测程序,得到发生变更的代码中插桩代码记录的输入数据;根据发生变更的代码中插桩代码记录的输入数据更新所述基础抽样数据,得到更新的抽样数据。与本申请实施例的第一方面相应,根据本申请实施例的第二方面,提供一种软件测试数据抽样系统,包括:第一插桩单元,用于在被测程序的代码分支中加入插桩代码,所述插桩代码用于记录覆盖所述代码分支的输入数据;第一抽样单元,用于使用海量数据作为所述被测程序的输入数据,运行所述被测程序,保存所述插桩代码记录的输入数据作为基础抽样数据。可选的,所述的软件测试数据抽样系统,还包括:代码变更监测单元,用于监测被测程序是否发生代码变更;第二插桩单元,用于当被测程序发生代码变更时,在发生变更的代码中加入插桩代码;第二抽样单元,用于使用海量数据作为所述被测程序的输入数据,运行所述被测程序,保存所有插桩代码记录的输入数据作为更新的抽样数据。可选的,所述插桩代码用于记录第一次覆盖所述代码分支的输入数据。可选的,所述的软件测试数据抽样系统,还包括:代码变更监测单元,用于监测被测程序是否发生代码变更;第二插桩单元,用于当被测程序发生代码变更时,在发生变更的代码中加入插桩代码;第三抽样单元,用于使用海量数据作为所述被测程序的输入数据,运行所述被测程序,得到发生变更的代码中插桩代码记录的输入数据;更新单元,用于根据发生变更的代码中插桩代码记录的输入数据更新所述基础抽样数据,得到更新的抽样数据。本申请实施例提供的技术方案可以包括以下有益效果:通过在被测程序中加入插桩代码,使用海量数据作为被测程序的输入数据,运行被测程序,由插桩代码记录覆盖被测程序各个代码分支的输入数据,得到用于测试被测程序的抽样数据,从而不仅能够大大降低测试软件的数据量,而且能够大大提高抽样数据对被测程序的覆盖率,以及提高软件测试的效率和准确性。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请一示例性实施例示出的一种软件测试数据抽样方法的流程示意图。图2为本申请另一示例性实施例示出的一种软件测试数据抽样方法的流程示意图。图3为本申请又一示例性实施例示出的一种软件测试数据抽样方法的流程示意图。图4为本申请一示例性实施例示出的一种软件测试数据抽样系统的框图。图5为本申请另一示例性实施例示出的一种软件测试数据抽样系统的框图。图6为本申请又一示例性实施例示出的一种软件测试数据抽样系统的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的方法和系统的例子。为了全面理解本申请,在以下详细描述中提到了众多具体的细节,但是本领域技术人员应该理解,本申请可以无需这些具体细节而实现。在其他实施例中,不详细描述公知的方法、过程、组件和系统,以免不必要地导致实施例模糊。为更好的理解本申请,对本申请所涉及的相关技术做简要说明如下。程序插桩是在保证被测程序原有逻辑完整性的基础上在程序中插入一些“探针”,所插入的“探针”可称为插桩代码,通过插桩代码的执行可以记录和抛出程序运行的输入数据和特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息。根据本申请实施例的第一方面,提供一种软件测试数据抽样方法。图1为本申请一示例性实施例示出的一种软件测试数据抽样方法的流程示意图,如图1所示,所述方法...

【技术保护点】
一种软件测试数据抽样方法,其特征在于,包括:在被测程序的代码分支中加入插桩代码,所述插桩代码用于记录覆盖所述代码分支的输入数据;使用海量数据作为所述被测程序的输入数据,运行所述被测程序,保存所述插桩代码记录的输入数据作为基础抽样数据。

【技术特征摘要】
1.一种软件测试数据抽样方法,其特征在于,包括:
在被测程序的代码分支中加入插桩代码,所述插桩代码用于记录覆盖所述代码分支
的输入数据;
使用海量数据作为所述被测程序的输入数据,运行所述被测程序,保存所述插桩代
码记录的输入数据作为基础抽样数据。
2.如权利要求1所述的软件测试数据抽样方法,其特征在于,还包括:
监测被测程序是否发生代码变更;
当被测程序发生代码变更时,在发生变更的代码中加入插桩代码;
使用海量数据作为所述被测程序的输入数据,运行所述被测程序,保存所有插桩代
码记录的输入数据作为更新的抽样数据。
3.如权利要求1或2所述的软件测试数据抽样方法,其特征在于,所述插桩代码用
于记录第一次覆盖所述代码分支的输入数据。
4.如权利要求1所述的软件测试数据抽样方法,其特征在于,还包括:
监测被测程序是否发生代码变更;
当被测程序发生代码变更时,在发生变更的代码中加入插桩代码;
使用海量数据作为所述被测程序的输入数据,运行所述被测程序,得到发生变更的
代码中插桩代码记录的输入数据;
根据发生变更的代码中插桩代码记录的输入数据更新所述基础抽样数据,得到更新
的抽样数据。
5.一种软件测试数据抽样系统,其特征在于,包括:
第一插桩单元,用于在被测程序的代码分支中...

【专利技术属性】
技术研发人员:陈诚
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1