测试计算机程序模块的多种组成中的计算机程序的方法与流程

文档序号:36718095发布日期:2024-01-16 12:18阅读:19来源:国知局
测试计算机程序模块的多种组成中的计算机程序的方法与流程

本公开涉及用于测试计算机程序模块的多种组成中的计算机程序的方法。


背景技术:

1、软件开发的重要组成部分是测试,并且在发现错误时消除对应的错误。特别是应当识别和校正导致计算机程序失败的错误。

2、然而,一个计算机程序通常可以由许多不同的模块(即程序部分)组成。由于可能存在大量这样的模块(例如,数量随着时间的推移而增长),对应地也存在计算机程序的大量的组合并且由此大量的配置。测试所有这些需要付出巨大的努力。例如,汽车标准规定了特定的开发和测试方法,这些开发和测试方法需要耗时的体力劳动并且无法规避。根据应用,代码库通常会增长数十年,其包含大量遗留代码以及难以维护的代码结构。遗留代码必须就这样被采用,这意味着在运行时无法对变化进行适配。这个复杂的代码库不再是人类可以管理的,因此开发人员通常不会清除它。正常情况下,也不存在完整描述是否允许一对模块的规范。这种知识最多隐含在正式规范中。

3、由于特别是测试新添加的配置的集合(例如,通过引入或替换一个或多个模块)伴随着大量的努力(和成本),因此通常在使用中测试软件。然而,这并不解决可能出现错误的问题,而且未经测试的软件导致具有不可预测后果的风险。

4、因此,期望一种有效测试可能具有不同配置(即程序部分的组合)的软件的措施。


技术实现思路

1、根据各种实施方式,提供了一种用于测试计算机程序模块的多种组成中的计算机程序的方法,具有执行多个测试运行,其中在每个测试运行中从为该测试运行预给定的基本测试输入集合中选择基本测试输入,其中每个基本测试输入是计算机程序模块集合的计算机程序模块子集,所述计算机程序可以由所述计算机程序模块组成,根据随机数生成器的输出将所述基本测试输入更改为测试输入,将所述计算机程序的程序代码编译为所述计算机程序在由更改的测试输入给出的计算机程序模块组成中的版本,测试所述计算机程序的所述版本,确定通过测试所述计算机程序的所述版本实现的测试度量的值的增长,并且根据所述测试度量的值的增长将更改的测试输入作为基本测试输入添加到所述基本测试输入集合中以用于后续测试运行。

2、显然,模糊测试是在编译之前而不是在执行之前(或附加于执行)应用的,即测试输入不(或不仅)确定执行计算机程序所使用的输入数据,而且确定计算机程序的组成,即该计算机程序是由哪些程序部分(即由哪些程序代码片段)编译的。这使得能够有效地测试计算机程序的配置。

3、下面说明各种实施例。

4、实施例1是一种如上所述用于测试计算机程序模块的多种组成中的计算机程序的方法。

5、实施例2是根据实施例1的方法,其中所述测试度量是通过所述多个测试运行中所执行的测试运行实现的测试覆盖率。

6、与例如纯随机测试(即纯随机测试输入)相比,考虑测试覆盖率来选择测试输入导致高的测试效率。

7、实施例3是根据实施例1或2的方法,其中更改的测试输入说明所述计算机程序模块组成,其方式是根据更改的测试输入在所述程序代码中设置或执行预编译器开关、宏或内联函数。

8、由此显然将模糊测试从待测试的已编译计算机程序的输入扩展到涉及将所述程序代码编译为所述计算机程序(即,创建可执行计算机程序)的输入。

9、实施例4是根据实施例1至3之一的方法,其中如果对于更改的基本测试输入不能将所述计算机程序的程序代码编译为所述计算机程序在由更改的测试输入给出的计算机程序模块组成中的版本,则进行注册,并且搜索所述计算机程序在尽可能少的计算机程序模块和/或尽可能少的程序代码的组成中的版本,该版本能够被编译并且没有错误。

10、在测试时,可以同时找到计算机程序的尽可能轻量级的配置(能够运行且无错误的)版本。

11、实施例5是根据实施例1至4之一的方法,其中测试所述计算机程序的所述版本具有利用随机测试输入或伪随机(即,所生成的测试输入的顺序是可再现的)测试输入进行多个测试运行。

12、换句话说,在测试运行(在该测试运行中选择所述计算机程序的配置)内提供用于测试所述配置的模糊测试。这可以被视为分层模糊测试,其中外部分层层面布置在所述编译之前,并且在所述外部分层层面的每个测试运行内执行所述计算机程序的相应版本的多个测试运行。由此可以有效地研究可能的配置,并有效地分别测试这些配置。

13、实施例6是一种测试系统,其被设置为执行根据实施例1至5之一的方法。

14、实施例7是一种计算机程序,具有指令,当所述指令由处理器执行时所述指令使得所述处理器执行根据实施例1-5之一所述的方法。

15、实施例8是一种存储指令的计算机可读介质,当所述指令由处理器执行时所述指令使得所述处理器执行根据实施例1-5之一所述的方法。



技术特征:

1.一种用于测试计算机程序模块的多种组成中的计算机程序的方法,具有:

2.根据权利要求1所述的方法,其中所述测试度量是通过所述多个测试运行中所执行的测试运行实现的测试覆盖率。

3.根据权利要求1或2所述的方法,其中更改的测试输入说明所述计算机程序模块组成,其方式是根据更改的测试输入在所述程序代码中设置或执行预编译器开关、宏或内联函数。

4.根据权利要求1至3中任一项所述的方法,其中如果对于更改的基本测试输入不能将所述计算机程序的程序代码编译为所述计算机程序在由更改的测试输入给出的计算机程序模块组成中的版本,则进行注册,并且搜索所述计算机程序在尽可能少的计算机程序模块和/或尽可能少的程序代码的组成中的版本,该版本能够被编译并且没有错误。

5.根据权利要求1至4中任一项所述的方法,其中测试所述计算机程序的所述版本包括利用随机测试输入或伪随机测试输入进行多个测试运行。

6.一种测试系统,其被设置为执行根据权利要求1至5中任一项所述的方法。

7.一种计算机程序,具有指令,当所述指令由处理器执行时,所述指令使得所述处理器执行根据权利要求1至5中任一项所述的方法。

8.一种存储指令的计算机可读介质,当所述指令由处理器执行时,所述指令使得所述处理器执行根据权利要求1至5中任一项所述的方法。


技术总结
根据各种实施方式,提供了用于测试计算机程序模块的多种组成中的计算机程序的方法,具有执行多个测试运行,其中在每个测试运行中从为该测试运行预给定的基本测试输入集合中选择基本测试输入,其中每个基本测试输入是计算机程序模块集合的计算机程序模块子集,该计算机程序可以由计算机程序模块组成,根据随机数生成器的输出将基本测试输入更改为测试输入,将计算机程序的程序代码编译为计算机程序在由更改的测试输入给出的计算机程序模块组成中的版本,测试计算机程序的该版本,确定通过测试计算机程序的该版本实现的测试度量的值的增长,并根据测试度量的值的增长将更改的测试输入作为基本测试输入添加到基本测试输入集合中以用于后续测试运行。

技术研发人员:C·胡斯,M·德雷赫尔
受保护的技术使用者:罗伯特·博世有限公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1