用于测试计算机程序的方法与流程

xiaoxiao4天前  13


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


背景技术:

1、软件应用程序的开发的一个重要组成部分是测试,并且当发现错误时是对应的错误消除。尤其是,应该识别并且纠正导致应用程序失败的错误。在此,一个重要的方面是关于以下方面的测试,即不以无意的方式(或由攻击者)访问重要的存储器区域,即具有如通过所谓的(存储器)清理器(sanitizer)进行的存储器监控的测试。借助于各种清理器对常见的桌面和服务器硬件(例如x86)上的软件的编译和测试是可以发现诸如心血漏洞(heartbleed-bug)之类的以前长时间保持未发现的错误的措施。

2、还一起包括这样的存储器监控的全面测试特别对于嵌入式系统、诸如经常是与安全相关的用于车辆的控制装置上的计算机程序是重要。然而,对于桌面和服务器硬件所使用的清理器不能或只能很差地被用于这样的系统,因为嵌入式系统典型地拥有受限的资源,并且这样的清理器具有巨大的资源需求,并且因此不能被使用或者甚至可能影响计算机程序的执行,使得从总体上看首先出现错误。

3、因此,用于测试能够实现存储器监控并且适用于嵌入式系统的计算机程序的方法是值得期望的。


技术实现思路

1、根据各种实施方式,提供一种用于测试计算机程序的方法,包括执行计算机程序直至调用用于分配存储器区域的存储器分配命令;给存储器区域扩展具有至少一个存储器位置的保护区;分配所扩展的存储器区域;将监视点设置到保护区的一个或多个存储器位置中的每一个;继续执行计算机程序;以及如果所设置的监视点被触发,则对于每个所设置的监视点表明计算机程序具有错误。

2、上述方法使得能够借助于调试器在嵌入式系统上利用存储器监控(即利用清理器)进行测试。这特别是在利用模糊测试进行测试时适用,因为也可以以调试器控制的方式实现模糊测试,并且以这种方式可以有效地对于嵌入式系统使用模糊测试。

3、清理器可以借助于代码探测来实现。然而,为此要么源代码必须可供使用,要么需要基于二进制文件的特定于指令集的探测(二进制探测),所述二进制文件是非常易受影响的。基于仿真器的替代探测同样是非常特定于平台的,并且每个嵌入式平台都需要自身的仿真器。上述方法使得能够利用调试器控制的清理器进行测试,并且不需要探测或仿真,并且因此在许多情况下可应用。

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

5、实施例1是如上所述的用于控制机器人的方法。

6、实施例2是根据实施例1的方法,包括响应于存储器区域的释放(即尤其是在针对计算机程序中的存储器区域的释放缺乏(freigabefehl)的情况下)删除监视点。

7、从而可以重新分派保护区的存储器位置,而可能不显示错误,即使存储器区域已经被释放。

8、实施例3是根据实施例1或2所述的方法,其中保护区包含至少一个在所述存储器区域前面的存储器位置和至少一个在所述存储器区域后面的存储器位置,并且至少一个监视点被设置到所述存储器区域前面的保护区的存储器位置上以及至少一个监视点被设置到在所述存储器区域后面的保护区的存储器位置上。

9、从而可以检测超出存储器区域的访问,而与所述访问发生的方向无关。

10、实施例4是根据实施例1至3中任一项所述的方法,包括在嵌入式系统上执行计算机程序并且通过与嵌入式系统连接的测试系统来设置监视点和断点。

11、根据各种实施方式,尤其是在嵌入式系统本身上包括存储器监控在内能够实现用于嵌入式系统的计算机程序的测试。

12、实施例5是根据实施例1至4中任一项所述的方法,包括通过由保护区扩展存储器区域根据存储器区域的位置的位移适配关于存储器中的存储器区域的位置的信息。

13、例如,如果保护区的一个或多个存储器位置被插入到存储器区域前面(并且被分配在空闲存储器的开始处),则相应地提高存储器区域的起始地址。从而确保对使用该信息的存储器区域的访问正确地进行。然后,扩展有保护区对于计算机程序可以保持透明。

14、实施例6是根据实施例1至5中任一项所述的方法,包括借助于调试器给存储器区域扩展保护区。

15、这使得能够用保护区进行对于计算机程序透明的扩展。调试器(其也被用于设置断点和监视点)还可以被用于适配关于在存储器中存储器区域的位置的信息。

16、实施例7是根据实施例1至6中任一项所述的方法,包括借助于利用多个测试用例进行模糊测试来测试计算机程序,其中每个测试用例指定(一个或多个)存储器分配命令的相应集合,并且对于每个具有为测试用例指定的集合的存储器分配命令:执行计算机程序直至调用用于分配存储器区域的存储器分配命令;给存储器区域扩展具有至少一个存储器位置的保护区;分配所扩展的存储器区域;将监视点设置到保护区的一个或多个存储器位置中的每一个;继续执行计算机程序;以及如果所设置的监视点被触发,则对于每个所设置的监视点表明计算机程序具有错误。

17、因此,存储器监控可以是模糊测试的一部分,其中模糊器可以选择被监控的存储器分配。由此,对于计算机程序和计算机程序的子程序的许多不同输入,即使仅特定数量的断点和监视点在执行计算机程序的(例如嵌入式)系统上可供使用,也可以找到关于超出所分配的存储器区域的访问的错误(也即例如溢出)。

18、实施例8是根据实施例1至7中任一项所述的方法,其中计算机程序是用于机器人装置的控制程序,并且根据计算机程序的测试的结果利用计算机程序来控制机器人装置。

19、换句话说,可以提供一种用于控制机器人装置的方法,其中通过借助于清理器进行测试来保证针对堆存储器中的存储器区域的溢出的安全性。

20、实施例9是一种测试装置,所述测试装置被设立用于执行根据实施例1至8中任一项所述的方法。

21、实施例10是一种具有命令的计算机程序,当所述命令由处理器执行时,所述命令引起所述处理器执行根据实施例1至8中任一项所述的方法。

22、实施例11是一种存储命令的计算机可读介质,当所述命令由处理器执行时,所述命令引起所述处理器执行根据权利要求1至8中任一项所述的方法。



技术特征:

1.一种用于测试计算机程序(105)的方法,包括:

2.根据权利要求1所述的方法,包括响应于所述存储器区域的释放而删除所述监视点。

3.根据权利要求1或2所述的方法,其中所述保护区包含至少一个在所述存储器区域前面的存储器位置和至少一个在所述存储器区域后面的存储器位置,并且至少一个监视点被设置到所述存储器区域前面的保护区的存储器位置上以及至少一个监视点被设置到在所述存储器区域后面的保护区的存储器位置上。

4.根据权利要求1至3中任一项所述的方法,包括在嵌入式系统(106)上执行所述计算机程序(105)并且通过与所述嵌入式系统(106)连接的测试系统(100)来设置所述监视点和所述断点。

5.根据权利要求1至4中任一项所述的方法,包括通过由所述保护区扩展所述存储器区域根据所述存储器区域的位置的位移适配关于存储器中的存储器区域的位置的信息。

6.根据权利要求1至5中任一项所述的方法,包括借助于调试器给所述存储器区域扩展所述保护区。

7.根据权利要求1至6中任一项所述的方法,包括借助于利用多个测试用例进行模糊测试来测试所述计算机程序(105),其中每个测试用例指定存储器分配命令的相应集合,并且对于每个具有为测试用例指定的集合的存储器分配命令,执行所述计算机程序(105)直至调用用于分配存储器区域的存储器分配命令,给所述存储器区域扩展具有至少一个存储器位置的保护区,分配所扩展的存储器区域,将监视点设置到所述保护区的一个或多个存储器位置中的每一个上,继续执行所述计算机程序(105);以及如果所设置的监视点被触发,则对于每个所设置的监视点表明所述计算机程序(105)具有错误。

8.根据权利要求1至7中任一项所述的方法,其中所述计算机程序(105)是用于机器人装置的控制程序,并且根据所述计算机程序(105)的测试的结果利用所述计算机程序(105)来控制所述机器人装置。

9.一种测试装置,所述测试装置被设立用于执行根据权利要求1至8中任一项所述的方法。

10.一种具有命令的计算机程序,当所述命令由处理器执行时,所述命令引起所述处理器执行根据权利要求1至8中任一项所述的方法。

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


技术总结
用于测试计算机程序的方法。根据各种实施方式,描述一种用于测试计算机程序(105)的方法,包括执行计算机程序(105)直至调用用于分配存储器区域的存储器分配命令;给存储器区域扩展具有至少一个存储器位置的保护区;分配所扩展的存储器区域;将监视点设置到保护区的一个或多个存储器位置中的每一个上;继续执行计算机程序(105);并且如果所设置的监视点被触发,则对于每个所设置的监视点表明所述计算机程序(105)具有错误。

技术研发人员:C·胡斯,M·C·埃塞莱
受保护的技术使用者:罗伯特·博世有限公司
技术研发日:
技术公布日:2024/9/23

最新回复(0)