基于日志的面向回归测试的黑盒测试用例排序方法技术

技术编号:34039712 阅读:14 留言:0更新日期:2022-07-06 13:10
本发明专利技术公开了一种基于日志的面向回归测试的黑盒测试用例排序方法,步骤1、对日志进行解析,得到日志事件;步骤2、将测试用例的日志事件数据进行向量化处理;步骤3、基于日志事件的语义信息进行自适应测试用例排序。与现有技术相比,本发明专利技术1)充分利用日志丰富的自然语言语义信息以及输出日志的语句在源代码中的位置信息,提升黑盒测试用例排序方法的排序效果,弥补传统黑盒测试用例排序方法无法获得被测系统内部信息的不足,缩小黑盒与白盒两种测试用例排序之间的差距;2)适用性广泛,可应用于所有能产生日志的被测系统,特别适用于测试人员无法获得被测系统源码以及测试用例源码的情况,提升传统黑盒测试用例排序方法的健壮性。性。性。

【技术实现步骤摘要】
基于日志的面向回归测试的黑盒测试用例排序方法


[0001]本专利技术涉及软件测试领域,特别是涉及一种测试用例排序方法。

技术介绍

[0002]关于回归测试:回归测试是将已有的测试用例应用在更改后的代码上,从而保证代 码的更改并不影响原功能的实现。为了保证整个系统的质量,在实际应用中通常执行全 部的测试用例。但是,当被测系统复杂而庞大时,回归测试的测试用例数目繁多,执行 过程耗时。因此,为了尽早地暴露出更多的缺陷,研究人员进行了各种探索,比如:根 据代码的变化选择相关的测试用例、测试用例最小化、测试用例排序、通过已有的测试 用例生成新测试用例等技术。其中,测试用例排序方法会保留原有的测试用例,因此成 为最主流的方法。
[0003]关于测试用例排序:测试用例排序旨在通过改变测试用例的执行顺序,尽早地发现 出更多的软件缺陷。测试用例排序的方法根据是否已知被测系统的源代码以及相关的信 息,分为白盒与黑盒两个大类:
[0004]1)白盒的测试用例排序方法:测试人员对被测系统的源代码进行静态或动态的分 析。在众多白盒测试用例排序方法中,基于覆盖的方法最为主流,测试人员利用测试用 例覆盖的具体路径范围实现排序。基于覆盖的白盒测试用例排序按照覆盖的粒度可分为 以下三种:基于语句覆盖的测试用例排序、基于条件覆盖的测试用例排序以及基于方法 覆盖的测试用例排序。其中,基于语句的测试用例排序方法的粒度最细,因此成为三者 中最主流的白盒测试用例排序方法。另外,基于覆盖的白盒测试用例排序方法常常通过 贪婪算法,使用动态的覆盖信息进行排序,分为全局的测试用例排序和增量的测试用例 排序。其中,全局的测试用例排序方法旨在按照测试用例的覆盖对象的数量由多到少排 序,而增量的测试用例排序方法旨在按照未被覆盖的对象的数量对测试用例进行排序。 另外,一些方法把在执行测试用例后才能获取的信息考虑进来,以助力测试用例排序, 例如测试用例的执行成本、发现的故障的级别等等。尽管这类白盒方法可以直接获得内 部的代码逻辑并达到很好的效果,但是它们的实现代价相当昂贵。通常,测试人员通过 源代码插桩的方式获得测试覆盖信息,即解析源代码的语法结构后,插入特定代码,运 行测试用例,最后对得到的测试结果进行分析,得到测试覆盖信息。这一获取动态信息 的过程工作量巨大,因此目前主流的研究方向是从静态信息入手,对白盒测试用例排序 方法进行更多的探索,比如通过被测代码的调用关系来模拟测试用例的覆盖信息。但实 际上,在工业实践中受限于测试规模和有限的资源,因此白盒测试并不实用。
[0005]2)黑盒的测试用例排序方法:测试人员无需已知被测代码,仅仅通过测试用例的 输入输出或者测试用例的代码进行排序。经过不断探索,研究人员发现:相似的测试用 例能发现相似的故障。因此,在黑盒测试用例排序中,通常利用测试用例的相似性使测 试用例的多样性最大化。比如,基于主题的测试用例排序方法利用测试代码中的语言信 息进行主题建模,为每个测试用例生成一个基于主题的向量,并通过每次找到与已排序 的测试用
例的平均欧氏距离最大的一个测试用例,最终得到测试用例排序结果。另外, 基于字符串的编辑距离的测试用例排序方法则是将测试代码视为字符串,并得到每两个 测试用例之间的文本欧氏距离,在每次迭代时选择与已排序的测试用例集具有最大欧氏 距离的测试用例,使多样性最大化。还有一些黑盒的测试用例排序方法需要利用需求文 档、代码更改等信息进行辅助,而在实际应用场景中,测试人员通常难以获得这些信息, 所以这类方法并没有成为主流的黑盒测试用例排序方法。另外,由于黑盒测试用例排序 方法没有接触到被测代码内部逻辑,因此黑盒方法通常不如白盒有效。但是,由于黑盒 的方法摆脱了深入理解待测程序源代码的限制,因此它在实际生产生活中得到非常广泛 的应用。
[0006]为了弥合黑盒与白盒两种测试用例排序之间的差距,需要借助其他的信息构建测试 用例,这些信息应具有以下两点特征:
[0007]特征一、尽可能多地包含程序源代码的相关信息,如代码位置、执行顺序和执行逻 辑等;
[0008]特征二、获取难度较低,相对容易理解,并且能够使用自动化的手段进行分析。
[0009]而系统日志恰恰符合上述两点条件:日志记录了系统运行信息,易于获取与理解, 因此日志被广泛用于各种可靠性保证任务。
[0010]系统在运行时通常会产生大量日志信息,日志通常由代码中的日志生成语句输出得 到,如print()和logger.info()。生成的日志通常包含时间戳、日志级别(即INFO、 DEBUG、WARNING、ERROR等)、日志内容等运行信息。其中,日志内容包含模板 和参数两部分,日志模板为固定的文本,用来描述系统运行状态,也称为日志事件;而 日志参数是向模板里添加的实时内容,比如内存使用量、进程的id和网络速度等信息。 开发人员可以自行设置日志模板和日志参数,并通过输出的日志得知系统当时的状态与 活动,例如系统当时正在调用某个进程、从某个IP地址接收到某段数据包、与某个数 据库进行某种交互等等。因此,日志被广泛应用于众多可靠性保证任务中,比如:通过 检查日志理解系统的运行状态、检测系统异常和定位系统故障的根因。
[0011]由于在回归测试中需要把已执行过的测试用例应用在更改后的代码上重新测试,因 此可以获得之前执行测试用例时产生的日志。因此,如何利用日志信息弥合黑盒与白盒 两种测试用例排序之间的差距、进而提高测试用例排序方法的效果,是本专利技术亟待解决 的技术问题。

技术实现思路

[0012]本专利技术旨在弥合黑盒与白盒两种测试用例排序之间的差距,而提出一种基于日志的 面向回归测试的黑盒测试用例排序方法,通过分析测试用例生成的日志,充分利用日志 丰富的自然语言语义信息以及输出日志的语句在源代码中的位置信息,实现了在回归测 试中辅助黑盒测试用例排序。
[0013]本专利技术利用以下技术方案实现:
[0014]一种基于日志的面向回归测试的黑盒测试用例排序方法,该方法具体包括以下步 骤:
[0015]步骤1、进行日志解析,即在收集测试用例生成的日志内容后,通过日志解析得到 每个测试用例在系统执行过程所对应的日志事件序列;
而得到应该从未排序的测试用例中选择放入已排序测试用例的序列中的第next_index 个测试用例,即得到已排序的测试用例集合具有最大欧氏距离的测试用例为 ts
next_index
,如公式(4)所示:
[0029][0030]其中,d(x)表示未排序的测试用例ts
x
与已排序测试用例的最小欧氏距离, 表示求在1≤x≤f范围内使d(x)值最大的x;
[0031]重复步骤3,每次从未排序的测试用例中选择一个测试用例加入排序结果序列,直 到所有测试用例都被排序完,得到基于日志事件的自适应测试用例排序的排序结果 R
event

[0032]与现有技术相比,本专利技术能够达成以下有益的技术效果:
[0033]1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于日志的面向回归测试的黑盒测试用例排序方法,其特征在于,该方法具体包括以下步骤:步骤1、进行日志解析,即在收集测试用例生成的日志内容后,通过日志解析得到每个测试用例在系统执行过程所对应的日志事件序列;步骤2、将测试用例的日志事件数据进行向量化处理,具体包括:从单词的语义向量得到日志事件的向量表示,以及从日志事件的向量表示到测试用例的向量表示;日志事件的向量V
e
,如公式(1)所示:其中,#w
i
表示单词w
i
在这句日志事件出现的次数,n表示该日志事件中单词的总个数,#S
E
表示所有不重复的日志事件的个数,表示在#S
E
中包含单词w
i
的日志事件的个数,表示该单词的语义向量;TF(w
i
)表示单词w
i
在该日志事件中出现的频率,IDF(w
i
)表示单词w
i
在所有不重复的日志事件中出现的逆文档频率;得到测试用例的向量V
ts
,如公式(2)所示:其中,#e
j
表示第j个日志事件e
j
在该测试用例的日志序列中出现的次数,m表示该测试用例中日志序列的总个数,#S
T
表示所有不重复的测试用例日志序列的个数,表示在#S
T
中包含第j个日志事件e
j
的测试用例日志序列的个数,表示第j个日志事件e
j
的向量表示;TF(e
j
)表示第j个日志事件e
j
在日志序列中出现的频率,IDF(e
j
)表示第j个日志事件e
...

【专利技术属性】
技术研发人员:王维靖王赞陈俊洁陈志超贾勇哲马国宁
申请(专利权)人:天津泰凡科技有限公司
类型:发明
国别省市:

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

1