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

一种基于遗传算法和带权匹配算法的测试案例自动生成方法技术

技术编号:4008142 阅读:223 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及工程测试中的测试案例自动生成方法,属于系统测试技术领域,是一种能够显著提高测试案例自动生成质量的方法,其特点是在现有测试案例自动生成方法中融入遗传算法和带权匹配算法,使得应用该方法能够自动获得高质量的测试案例集:测试案例集中包括多个测试案例,每个测试案例的长度相同,同时该长度由测试人员指定;每个测试案例相互独立,且每个测试案例都各自覆盖了一定数量的功能覆盖点;能够在较快时间里得到一个测试案例集,该测试案例集中的测试案例都运行之后,能保证需要覆盖的功能点都能被测试到。

【技术实现步骤摘要】

本专利技术涉及系统测试
,特别涉及工程测试中的测试案例自动生成方法, 是一种能够显著提高测试案例自动生成质量的方法。
技术介绍
在当前的系统工程测试中,白盒测试和黑盒测试是两种普遍应用的测试方法。其 中,黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。在设计 测试案例时,黑盒测试不需要考虑程序的内部结构和内部特性,即避免了引入代码细节,使 得测试案例的设计可以只需依赖程序的功能要求,而不必像白盒测试那样等到代码正式开 发完成再针对代码进行测试案例设计。而黑盒测试案例的生成十分耗费人力,而且测试案 例设计的质量往往与测试人员的专业素质息息相关。例如一个测试案例的使用可能涉及到 很多功能,而这些功能的不同使用顺序会导致不同的测试结果。假设一个应用涉及到300 个相互作用的功能,若需要人力来进行测试案例的设计和生成,很可能就是按照测试人员 的逻辑思维将这300个功能简单串联起来成为一个测试案例,容易漏掉一些潜在的会出错 的功能测试序列。而借助计算机自动进行测试案例的生成就能将这种出错的可能性大大减 小,从而减少对测试人员能力的依赖,同时使得测试案例的生成变得简单和高效。一种典型 的测试案例自动生成方法包括如下步骤1.测试人员选取测试的功能点并加以定义。这些需要测试的功能点可以通过项目 功能说明书进行划定,待测功能点的粒度大小及数量可以按照项目的实际情况进行确定。2.测试人员根据步骤1所定义的功能点设计一个测试案例生成方法,以产生由这 些待测功能点组成的测试案例。其中实现的策略可以是随机、暴力枚举等。在生成测试案 例的过程中,还需要生成对应测试案例的预期测试结果用以比对;生成过程根据测试人员 的要求生成包含不同功能点的测试案例。3.根据步骤2所生成的测试案例及其对应的预期测试结果,测试人员将这些测试 案例在被测对象中进行执行,并将得到的实际运行结果与预期测试结果进行比较,如此就 完成了一个测试案例的测试。在上述自动生成测试案例的方法的实现过程中,使用最多的便是通过随机算法进 行功能操作的枚举,虽然随机枚举这种实现方式能够克服测试人员设计测试案例时的主观 因素,但是由于随机的不可控性,在一个测试案例中会产生很多连续的冗余的代码段,而且 随着生成功能点的增多,生成的测试案例将会变得非常庞大,一旦出现错误,开发人员的调 试任务将会非常繁重。例如,假如需要产生一个300个功能点使用的测试案例,我们假设 1个功能点对应一个操作,那么,一个随机产生的测试案例可能包含有超过1000个功能调 用。但是我们希望这些功能调用尽量精简(这样在交付给开发人员后定位错误比较方便)。如此就产生了一个矛盾既要保证功能点的充分包含,同时还要让测试案例的长 度维持在一个合理的范围,而且还不能丢掉代码生成的随机性。如何很好地解决这一技术4问题,成为本领域技术人员函待解决的技术难题。
技术实现思路
本专利技术的目标是设计一种新型的测试案例自动生成方法,其能够获得高质量的测 试案例集该测试案例集中可以包括多个测试案例,每个测试案例的长度都是相同的,同时 该长度是由测试人员所指定的;每个测试案例都是相互独立的,且每个测试案例都各自覆 盖了一定数量的功能覆盖点;最后能够在比较快的时间里得到一个测试案例集,该测试案 例集中的测试案例都运行之后,能保证需要覆盖的功能点都能被测试到。为了解决上述问题,本专利技术公开了一种基于遗传算法和带权匹配算法的测试案例 自动生成方法,其包括如下步骤(1)提取并形成测试案例数据结构,该数据结构中包含一个测试案例的具体内容, 同时还包含一个第一覆盖向量,其用来记录该测试中有哪些功能点会被测试到;(2)提取并形成测试案例集的集数据结构,在该集数据结构中,包含若干个测试案 例数据结构,该集数据结构包含一个第二覆盖向量,其用来记录该测试案例集中的测试案 例能够保证哪些功能点被测试到;(3)建立初始种群;(4)根据所述集数据结构建立遗传算法的适应性函数;(5)进入遗传算法部分,在进行交叉的过程中,先基于遗传算法和带权匹配算法对 待交叉的两个个体进行处理,再继续进行遗传算法的交叉,变异,选择过程;(6)迭代得出符合要求的测试案例集,生成测试案例。优选地,步骤(5)中所述的基于遗传算法和带权匹配算法对待交叉的两个个体进 行处理包括如下步骤a以每个个体的适应度为依据,根据概率选择一个适应度高的个体,其具有功能覆盖向量;b在当前种群中通过相似函数寻找一个与该个体最互补的互补个体,互补个体具 有功能覆盖向量,其中所述个体与互补个体是不相同的个体;c将这两个个体所包含的内容映射到对应的二分图中,该二分图的每个顶点代表 某个测试案例;且二分图的边这样连接对于左半部分的每一个顶点,我们都与另一半边 的顶点相连接,除了与其代表同一测试案例的顶点不连接;使用相似函数衡量每一对测试 案例的相似度,该值作为这个二分图边的权值;将这个二分图作为输入,让带权匹配算法进 行处理,得到需要的相似对,使得总的相似度和最大;d通过返回的测试案例相似对,对该个体和互补个体中的测试案例进行重新调整; 这两个调整过的个体被作为待交叉操作的两个个体,进行余下的交叉操作。优选地,所述相似函数为一辅助函数,其接收两个功能覆盖向量,并返回这两个功 能覆盖向量所关联的两个测试案例或两个测试案例集所覆盖的功能点的相似度。优选地,所述第二覆盖向量的值由该测试案例集中的每一个测试案例的第一覆盖 向量来综合获得。优选地,所述带权匹配算法为Kuhn-Munkres算法。优选地,采用显式编码对存储测试案例的所述案例数据结构和集数据结构的具体5的内容进行编码。优选地,在所述步骤(1)和(2)中还包括为功能覆盖向量赋值的步骤。优选地,所述为功能覆盖向量赋值的步骤包括a对于每一个测试案例集,通过随机的方法生成指定数量、指定长度的测试案例;b对每个测试案例都进行分析,记录其覆盖了多少功能点,同时赋值每个测试案例 相关的功能覆盖向量;c对于每一个测试案例集,通过其包含的测试案例对应的功能覆盖向量,综合得到 该测试案例集的功能覆盖向量。优选地,步骤(4)中所述的适应性函数通过测试案例集的功能覆盖向量统计出个 体中所包含的测试案例总共覆盖的功能点个数。优选地,所述适应函数为 其中k为功能点个数,di为表示第i个 功能点是否被覆盖的二元变量(取1时覆盖,取0时未覆盖),p为功能覆盖向量,f(p)为 计算测试案例或测试案例集覆盖的不同功能点数量的函数。本专利技术与现有的方法相比,具备以下优点1.该方法能够解决普通遗传算法所不 能解决的测试案例覆盖质量的问题,具有很大的应用价值;2.该方法对于原测试框架没有 影响,整合进入比较方便;在涉及的测试案例自动生成的地方,该方法都能比较简单的整入 到原来的测试流程中,从而提高生成的测试案例的质量;3.该方法的提出建立在两个成熟 算法之上,使用较为安全。附图说明图1 传统的遗传算法流程图;图2本专利技术中涉及的A和B个体所包含测试案例的功能点覆盖向量图;图3本专利技术中涉及的优化算法在整个遗传算法框架中所处的位置示意图;图4本专利技术中涉及的优化算法流程图;图5本专利技术中的测试案例的编码形式示意图;图6本专利技术中的测试案例在二分图中与顶点的映射关系示意图;图7本专利技术本文档来自技高网
...

【技术保护点】
一种基于遗传算法和带权匹配算法的测试案例自动生成方法,其特征在于,具体包括以下步骤:(1)提取并形成测试案例数据结构,该数据结构中包含一个测试案例的具体内容,同时还包含一个第一覆盖向量(Pc),其用来记录该测试中有哪些功能点会被测试到;(2)提取并形成测试案例集的集数据结构,在该集数据结构中,包含若干个测试案例数据结构,该集数据结构包含一个第二覆盖向量(Ps),其用来记录该测试案例集中的测试案例能够保证哪些功能点被测试到;(3)建立初始种群;(4)根据所述集数据结构建立遗传算法的适应性函数;(5)进入遗传算法部分,在进行交叉的过程中,先基于遗传算法和带权匹配算法对待交叉的两个个体进行处理,再继续进行遗传算法的交叉,变异,选择过程;(6)迭代得出符合要求的测试案例集,生成测试案例。

【技术特征摘要】

【专利技术属性】
技术研发人员:顾宗华李红周霖姚刘杰张成硕王铸
申请(专利权)人:浙江大学
类型:发明
国别省市:86[中国|杭州]

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

1