当前位置: 首页 > 专利查询>罗伯特专利>正文

用于测试计算机程序的方法技术

技术编号:38893090 阅读:8 留言:0更新日期:2023-09-22 14:16
本发明专利技术提供用于测试计算机程序的方法,具有:针对大量输入数据集中用于计算机程序的每个输入数据集执行计算机程序,分别确定计算机程序的覆盖率,其在针对相应输入数据集执行计算机程序时达到;为每个输入数据集产生训练数据元素,其包含为输入数据集确定的覆盖率作为训练输入和输入数据集作为目标输出;使用训练数据元素借助监督学习训练机器学习模型,其具有编码器和解码器,其中编码器设置为从覆盖率中产生表示空间中的表示,解码器设置为从输送给它的来自表示空间的表示中产生计算机程序的输入数据集;从表示空间中选择表示;通过将选择的表示输送给解码器产生附加输入数据集;通过针对产生的附加输入数据集执行计算机程序来测试计算机程序。序来测试计算机程序。序来测试计算机程序。

【技术实现步骤摘要】
用于测试计算机程序的方法


[0001]本公开涉及用于测试计算机程序的方法。

技术介绍

[0002]软件应用开发的一个重要组成部分是测试。特别是应当识别并纠正导致应用失败的错误。软件测试的一个示例是动态软件测试方法——模糊测试(Fuzzing)。
[0003]模糊测试使得能够以良好的测试覆盖率实现高效测试,但它很难用于有状态的计算机程序,即存储内部存储器状态的计算机程序,特别是因为典型地不知道相应的计算机程序可以采取哪些状态。
[0004]因此期望一些方法使得能够测试计算机程序在不同状态下的行为(例如借助于模糊测试),或当计算机的状态并非明确已知时探索计算机程序的状态。

技术实现思路

[0005]根据各种实施方式,提供了一种用于测试计算机程序的方法,具有:针对大量输入数据集中用于所述计算机程序的每个输入数据集执行所述计算机程序;并且分别确定所述计算机程序的覆盖率,所述覆盖率是在针对相应的输入数据集执行所述计算机程序时达到的;为每个输入数据集产生训练数据元素,所述训练数据元素包含为所述输入数据集确定的覆盖率作为训练输入并且包含所述输入数据集作为目标输出;使用产生的训练数据元素借助于监督学习来训练机器学习模型,其中所述机器学习模型具有编码器和随后的解码器,其中所述编码器被设置为从覆盖率中产生表示空间中的表示,而所述解码器被设置为从输送给所述解码器的来自所述表示空间的表示中产生用于所述计算机程序的输入数据集;从所述表示空间中选择表示;通过将所选择的表示输送给所述解码器来产生附加输入数据集;以及通过针对所产生的附加输入数据集执行所述计算机程序来测试所述计算机程序。
[0006]上述方法使得能够从执行计算机程序期间观察到的数据中检测所述计算机程序的状态依赖性,并且使得能够将该知识用于在事先不知道所述计算机程序的状态的情况下测试所述计算机程序。
[0007]在此,新的测试情况是基于ML模型(即机器学习模型)的固有生成能力产生的,无需用户开发的测试情况突变策略。
[0008]下面说明各种实施例。
[0009]实施例1是如上所述的一种用于测试计算机程序的方法。
[0010]实施例2是根据实施例1的方法,其中所述表示是从所述表示空间中随机选择的。
[0011]换句话说,表示是从所述表示空间中采样的。由于在训练后可以预期不同的表示对应于程序的不同状态,因此可以使用额外的输入数据集以高概率实现迄今在测试期间尚未达到的状态。
[0012]实施例3是根据实施例1或2的方法,其中从所述表示空间中选择与所述编码器将
所述训练数据元素的覆盖率映射到的表示不同的表示。
[0013]例如,已知的表示,即编码器将训练数据元素的覆盖率映射到的表示,可能会随机地受到噪声干扰。因此通过由解码器根据所选择的表示产生的附加输入数据集以高概率达到并测试迄今未探索(未测试)的计算机程序状态。
[0014]实施例4是根据实施例1至3任一项所述的方法,其中所述机器学习模型是变分自动编码器。
[0015]变分自动编码器(英语:variational autoencoder,VAE)的训练促使编码器按照以下方式映射到表示空间,即表示空间的大部分以从这些部分任意选择的表示由解码器映射为有意义的输入数据集的方式有意义地构造。因此可以产生对测试计算机程序有用的输入数据集。
[0016]实施例5是根据实施例1至4中任一项的方法,其中用于所述计算机程序的每个输入数据集具有用于所述计算机程序的输入数据元素序列,并且针对所述输入数据集执行所述计算机程序具有执行所述计算机程序,其中所述输入数据元素是根据所述序列依次输送给所述计算机程序的。
[0017]通过这种方式,该序列中的早期元素可以达到特定状态,所述特定状态将由该序列中的另外的元素更准确地探索。
[0018]实施例6是根据实施例1至5中任一项所述的方法,其中所述表示空间是多维的,其中所述机器学习模型被训练为使得以解缠结的形式学习覆盖率的表示,并且其中从所述表示空间中选择表示通过在所选择的维度中设置表示的分量来进行。
[0019]由此可以在一定程度上有针对性地达到计算机程序的状态(或至少状态范围)。
[0020]实施例7是一种软件测试系统,其被设置为执行根据实施例1至6中任一项的方法。
[0021]实施例8是一种具有指令的计算机程序,所述指令在其由处理器执行时促使所述处理器执行根据实施例1

6中任一项的方法。
[0022]实施例9是一种存储指令的计算机可读介质,所述指令在其由处理器执行时促使所述处理器执行根据实施例1

6中任一项的方法。
附图说明
[0023]在附图中,相似的附图标记通常指代完全不同的视图中相同的部分。附图不一定按比例绘制,而是通常将重点放在显示本专利技术的原理上。在以下描述中,参考以下附图描述各个方面。
[0024]图1示出了用于开发和/或测试软件应用的计算机。
[0025]图2示出了借助于模糊器来测试模糊目标的布置。
[0026]图3示出了根据一个实施方式的ML模型。
[0027]图4示出了显示根据一个实施方式的用于测试计算机程序的方法的流程图。
具体实施方式
[0028]以下详细描述参考附图,所述附图为了解释示出了本公开的可以实施本专利技术的具体细节和方面。可以使用其他方面并且可以进行结构的、逻辑的和电气的改变而不脱离本专利技术的范围。本公开的各个方面不一定相互排斥,因为本公开的一些方面可以与本公开的
一个或多个其他方面组合以形成新的方面。
[0029]下面更详细地描述各种示例。
[0030]图1示出了用于开发和/或测试软件应用的计算机100。
[0031]计算机100具有CPU(Central Processing Unit,中央处理单元)101和工作存储器(RAM)102。工作存储器102用于例如从硬盘103加载程序代码,并且CPU 101执行所述程序代码。
[0032]在当前示例中,假定用户打算使用计算机100来开发和/或测试软件应用。
[0033]为此,用户在CPU 101上执行软件开发环境104。
[0034]软件开发环境104使得用户能够为各种设备106开发和测试应用(即软件)105,所述各种设备即目标硬件,如用于控制包括机器人手臂和自主车辆在内的机器人设备的嵌入式系统,或者也为移动(通信)设备开发和测试应用(即软件)105。为此,CPU 101可以执行仿真器作为软件开发环境104的一部分,以模拟正在或已经为其开发了应用的相应设备106的行为。如果仅用于测试来自其他来源的软件,则软件开发环境104也可以被视为或设计为软件测试环境。
[0035]用户可以经由通信网络107将完成的应用分发到对应的设备106。代替经由通信网络107,这也可以通过其他方式进行,例如借助于USB 记忆棒。
[0036]然而在这样做本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于测试计算机程序的方法,包括:针对大量输入数据集中用于所述计算机程序的每个输入数据集执行所述计算机程序,并且分别确定所述计算机程序的覆盖率,所述覆盖率是在针对相应的输入数据集执行所述计算机程序时达到的;为每个输入数据集产生训练数据元素,所述训练数据元素包含为所述输入数据集确定的覆盖率作为训练输入并且包含所述输入数据集作为目标输出;使用产生的训练数据元素借助于监督学习来训练机器学习模型,其中所述机器学习模型具有编码器和随后的解码器,其中所述编码器被设置为从覆盖率中产生表示空间中的表示,而所述解码器被设置为从输送给所述解码器的来自所述表示空间的表示中产生用于所述计算机程序的输入数据集;从所述表示空间中选择表示;通过将所选择的表示输送给所述解码器来产生附加输入数据集;以及通过针对所产生的附加输入数据集执行所述计算机程序来测试所述计算机程序。2.根据权利要求1所述的方法,其中所述表示是从所述表示空间中随机选择的。3.根据权利要求1或2所述的方法,其中从所述表示空间中选择与所述编码器将...

【专利技术属性】
技术研发人员:I
申请(专利权)人:罗伯特
类型:发明
国别省市:

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

1