一种基于运行时路径特征与测试场景聚类的测试样例约减方法技术

技术编号:23932483 阅读:19 留言:0更新日期:2020-04-25 01:57
本发明专利技术公开了一种基于运行时路径特征与测试场景聚类的测试样例约减方法,该方法包括:a)代码插桩:在软件程序中插入探针,用于检测程序的运行状态;b)测试执行:执行所有的测试样例,生成运行时数据;c)路径特征提取:把运行时的路径数据转化为特征向量;d)场景聚类:使用聚类方法,对测试样例进行分类;e)测试样例约减:在聚类结果的基础之上,对测试样例进行筛选、约减,从而生成高质量的测试样例集合。本发明专利技术可以有效地提高测试样例集合的质量,提高软件测试的充分性,同时能够减少软件测试的时间开销。

A test sample reduction method based on run-time path characteristics and test scenario clustering

【技术实现步骤摘要】
一种基于运行时路径特征与测试场景聚类的测试样例约减方法
本专利技术属于软件测试
,特别是涉及到了一种基于运行时路径特征与测试场景聚类的测试样例约减方法。
技术介绍
在软件开发生命周期中,软件测试用于保障软件程序的正确性与可靠性,是不可忽略的环节。随着软件系统规模的日益扩大,以及软件应用领域的不断扩展,软件测试环节变得愈加复杂与困难,同时更加重要。测试样例,指的是软件测试环节中使用到的数据。对于每一条测试样例,确定软件程序是否通过测试的方法,叫做测试准则。常用的测试准则可以是,给定测试样例的预期输出,比较在软件程序上实际运行的输出与预期输出是否一致,若两者一致,则通过测试。评价一个测试样例集合的质量好坏,需要考虑两个方面:充分性与精简性。充分性,指软件测试时,能够对软件程序的功能、代码等测试点,实现充分的覆盖;精简性,指软件测试时,对与每一个独立的测试点,不会进行大量不必要的重复测试。测试样例生成的过程,在传统上是由人工完成的,这是一个十分消耗人力与时间的过程,并且生成测试样例的质量往往会受到一定限制。随着软件自动化测试的发展,可以对测试样例进行自动化地生成,从而在保证质量的同时,减小人力与时间的消耗。测试样例削减方法,是进行高质量自动化测试样例生成过程中,必要且重要的环节。仅进行自动化测试样例生成,可以保证测试样例集合的充分性,但是无法保证精简性。通过测试样例削减,可以去除冗余的测试样例,减少不必要的重复测试,从而保证精简性。
技术实现思路
本专利技术的目的是,针对相关自动化技术生成的测试样例集合,提供一种测试样例削减方法。该方法不仅能够有效地降低测试样例集合的精简性,同时能够根据测试场景对其进行分类,从而有助于测试样例的分类与管理。实现本专利技术目的的具体技术方案是:一种基于运行时路径特征与测试场景聚类的测试样例约减方法,该方法包括以下具体步骤:步骤1:代码插桩在软件程序源代码的每个代码分支处,都插入一个探针;每当探针被触发时,这段标识性代码将被执行,探针的唯一标识将会输出到日志文件中;代码插桩具体为:1)每当执行方法调用语句时,在方法调用语句之前,插入一个探针;2)每当一个方法调用结束时,在返回语句之前,插入一个探针;3)每当执行分支语句时,在分支代码块的开头,插入一个探针;4)每当执行循环语句时,在循环体代码块的开头,插入一个探针;步骤2:测试执行以步骤1生成的插桩之后的软件程序源代码作为被测软件程序;以已有的测试样例作为输入数据,执行被测软件程序,生成日志文件;从日志文件中获取探针信息,通过分析探针的触发顺序,获得每条测试样例对应的分支执行路径信息;对于软件程序的所有测试样例,都需要独立地执行一遍,并且存储每条测试样例的分支执行路径信息;步骤3:路径特征提取将两个连续触发的探针称为一个“跳转”;如果两个跳转具有相同的探针,并且探针的触发顺序一致,则称这两个跳转是“相同”的,否则为“不同”的;所有“相同”的跳转,称为同一“种类”的跳转;首先,提取步骤2中存储的所有测试样例的分支执行路径信息,统计所有跳转的种类数量,路径特征向量的维度等于所有跳转的种类数量;然后,针对每一条测试样例的分支执行路径信息,统计其中跳转种类的数量,并且统计同一种类跳转的重复次数;每一种类的跳转,对应路径特征向量中的一个唯一位置的维度,该位置的特征值等于这一种类的跳转的重复次数;最终,对于每一条测试样例,生成一个路径特征向量;步骤4:场景聚类使用路径特征向量作为特征,通过K-均值聚类算法进行聚类操作;给定类簇数量n,使用K-均值聚类算法,将所有测试样例对应的路径特征向量,分为n个类簇,把相似的测试样例聚集到相同的类簇中;步骤5:测试样例约减对已聚类的测试样例进行约减,生成新测试数据集:首先,将新测试数据集初始化为空集,给定新测试数据集的大小s,获取K-均值聚类算法的类簇数量n;从每个类簇中,随机抽取条测试样例,将这些测试样例加入新测试数据集;然后,从所有类簇中随机选取个备选类簇,从每一个备选类簇中随机挑选一条测试样例,加入新测试数据集;最终,该新测试数据集就是约减之后的结果。在测试样例削减的过程中,本专利技术使用到了一种基于测试场景的聚类方法。测试场景指的是执行测试样例时,不同的样例可能涉及到不同的逻辑功能状态。这些不同的逻辑功能状态,称为场景。通过在执行测试样例时,收集运行时路径特征,可以有效地对测试场景进行区分,从而能够通过聚类算法,将对应不同测试场景的测试样例聚集到一起。使用基于测试场景的聚类方法,有助于测试样例的分类和管理。本专利技术通过插桩的方式获取测试样例的运行时路径特征;然后通过聚类的方式,对测试场景进行聚类;最后使用测试样例约减方法,获得精简测试样例集合。相比其他的测试样例约减方法,本专利技术使用了运行时路径特征,其包含了丰富的路径信息,能够保证生成的精简测试样例集合具有更好的质量;其次,对测试场景进行聚类,可以方便测试样例的管理与分类。附图说明图1为本专利技术流程图;图2为本专利技术实施例软件程序的控制流图;图3为本专利技术实施例所有软件程序执行路径示意图。具体实施方式下面结合附图及实施例对本专利技术详细描述。参阅图1,本专利技术包括以下步骤:步骤1:代码插桩对被测的软件程序进行插桩,从而能够记录软件运行时的数据。插桩,指的是向软件代码中插入探针,用于在程序运行时检测程序的运行状态。此处的软件代码,包括但不限于软件程序源代码、字节码、二进制文件。探针技术,指的是向软件代码的特定位置,插入一段特定的功能性代码;每当这段代码被执行时,会对当前的软件运行信息进行记录;探针通常会将软件的状态信息,保存在文件或者日志中,甚至可以直接将这些信息输出到控制台。对于本专利技术的代码插桩步骤,每当程序执行到探针所在的位置时,将会触发该探针,从而向日志中记录一条消息。每一个插入的探针都是独一无二的,可以通过一定的标识来唯一确定。因此,可以通过分析日志信息,获取每条测试样例的覆盖率信息、执行路径信息。根据探针插入的位置不同,可以收集到不同程度的运行时信息,包括但不限于行覆盖率、行执行路径、分支覆盖率、分支执行路径、方法覆盖率、方法调用路径。本专利技术使用了分支执行路径的信息,因为这类信息包含了最丰富的数据内容。具体插桩策略为:1)每当执行方法调用语句时,在方法调用语句值前,插入一个探针;2)每当一个方法调用结束时,在方法返回语句之前,插入一个探针;3)每当执行分支语句时,在分支代码块的开头,插入一个探针;4)每当执行循环语句时,在循环体代码块的开头,插入一个探针。步骤2:测试执行测试执行,指的是将实际的测试样例作为输入数据,运行被测软件程序的过程。该步骤不需要本文档来自技高网...

【技术保护点】
1.一种基于运行时路径特征与测试场景聚类的测试样例约减方法,其特征在于,该方法包括以下具体步骤:/n步骤1:代码插桩/n在软件程序源代码的每个代码分支处,都插入一个探针;每当探针被触发时,这段标识性代码将被执行,探针的唯一标识将会输出到日志文件中;/n代码插桩具体为:/n1)每当执行方法调用语句时,在方法调用语句之前,插入一个探针;/n2)每当一个方法调用结束时,在返回语句之前,插入一个探针;/n3)每当执行分支语句时,在分支代码块的开头,插入一个探针;/n4)每当执行循环语句时,在循环体代码块的开头,插入一个探针;/n步骤2:测试执行/n以步骤1生成的插桩之后的软件程序源代码作为被测软件程序;/n以已有的测试样例作为输入数据,执行被测软件程序,生成日志文件;/n从日志文件中获取探针信息,通过分析探针的触发顺序,获得每条测试样例对应的分支执行路径信息;/n对于软件程序的所有测试样例,都需要独立地执行一遍,并且存储每条测试样例的分支执行路径信息;/n步骤3:路径特征提取/n将两个连续触发的探针称为一个“跳转”;/n如果两个跳转具有相同的探针,并且探针的触发顺序一致,则称这两个跳转是“相同”的,否则为“不同”的;/n所有“相同”的跳转,称为同一“种类”的跳转;/n首先,提取步骤2中存储的所有测试样例的分支执行路径信息,统计所有跳转的种类数量,路径特征向量的维度等于所有跳转的种类数量;/n然后,针对每一条测试样例的分支执行路径信息,统计其中跳转种类的数量,并且统计同一种类跳转的重复次数;/n每一种类的跳转,对应路径特征向量中的一个唯一位置的维度,该位置的特征值等于这一种类的跳转的重复次数;/n最终,对于每一条测试样例,生成一个路径特征向量;/n步骤4:场景聚类/n使用路径特征向量作为特征,通过K-均值聚类算法进行聚类操作;/n给定类簇数量n,使用K-均值聚类算法,将所有测试样例对应的路径特征向量,分为n个类簇,把相似的测试样例聚集到相同的类簇中;/n步骤5:测试样例约减/n对已聚类的测试样例进行约减,生成新测试数据集:/n首先,将新测试数据集初始化为空集,给定新测试数据集的大小s,获取K-均值聚类算法的类簇数量n;/n从每个类簇中,随机抽取...

【技术特征摘要】
1.一种基于运行时路径特征与测试场景聚类的测试样例约减方法,其特征在于,该方法包括以下具体步骤:
步骤1:代码插桩
在软件程序源代码的每个代码分支处,都插入一个探针;每当探针被触发时,这段标识性代码将被执行,探针的唯一标识将会输出到日志文件中;
代码插桩具体为:
1)每当执行方法调用语句时,在方法调用语句之前,插入一个探针;
2)每当一个方法调用结束时,在返回语句之前,插入一个探针;
3)每当执行分支语句时,在分支代码块的开头,插入一个探针;
4)每当执行循环语句时,在循环体代码块的开头,插入一个探针;
步骤2:测试执行
以步骤1生成的插桩之后的软件程序源代码作为被测软件程序;
以已有的测试样例作为输入数据,执行被测软件程序,生成日志文件;
从日志文件中获取探针信息,通过分析探针的触发顺序,获得每条测试样例对应的分支执行路径信息;
对于软件程序的所有测试样例,都需要独立地执行一遍,并且存储每条测试样例的分支执行路径信息;
步骤3:路径特征提取
将两个连续触发的探针称为一个“跳转”;
如果两个跳转具有相同的探针,并且探针的触发顺序一致,则称这两个跳转是“相同”的,否则为“不同”的;...

【专利技术属性】
技术研发人员:徐立华龚鑫汪庆顺贺樑
申请(专利权)人:上海笃策信息科技有限公司
类型:发明
国别省市:上海;31

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

1