CN116775454A - 用于测试计算机程序的方法 - Google Patents
用于测试计算机程序的方法 Download PDFInfo
- Publication number
- CN116775454A CN116775454A CN202310244135.1A CN202310244135A CN116775454A CN 116775454 A CN116775454 A CN 116775454A CN 202310244135 A CN202310244135 A CN 202310244135A CN 116775454 A CN116775454 A CN 116775454A
- Authority
- CN
- China
- Prior art keywords
- program
- branch
- input
- computer program
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000004590 computer program Methods 0.000 title claims abstract description 40
- 230000008859 change Effects 0.000 claims description 2
- 230000000717 retained effect Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 16
- 238000001514 detection method Methods 0.000 description 11
- 230000015654 memory Effects 0.000 description 11
- 230000003068 static effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
描述了用于测试计算机程序的方法,其具有:在计算机程序中选择分枝,该分枝可引导到多个程序分支,所述多个程序分支中的该分枝引导到的程序分支取决于是否满足与该分枝关联的分枝条件;选择所述多个程序分支中的该分枝应引导到的一个程序分支;借助于调试器针对输入来逐步执行计算机程序,其中针对每条被执行的指令检查该指令是否访问该输入的值,且如果该指令访问该输入的值,则记录该指令,其中如果在执行计算机程序时到达分枝,则确定分枝条件所取决于的一个或多个输入值,使得分枝引导到所选择的程序分支,其中考虑所记录的指令如何处理输入值;而且针对具有一个或多个输入值的被更改的输入来执行计算机程序,在执行时检查计算机程序的错误。
Description
技术领域
本公开涉及用于测试计算机程序的方法。
背景技术
软件应用程序开发的一个重要组成部分是测试。尤其是旨在识别和纠正会导致应用程序失败的错误。软件测试的示例是动态软件测试方法“混合执行(konkolische Ausführung)”(英文concolic execution),也称为混合测试。该动态软件测试方法提供沿着具体执行路径(即针对具体输入)的符号执行。为了在执行时到达程序中的新分支,在具体执行(即使用具体输入)时,以符号方式来收集条件并且将条件求解为使得确定输入以便到达这些新分支。然而,这一点尤其是当在其上(使用具体输入)执行该程序的目标系统在经由该程序被测试的测试或软件开发环境的访问及其透明度方面受到限制时有困难。此外,被测试的程序可以在其执行时从外部组件(例如传感器)获得具体值。
因此,需要能够对在这方面受到限制的系统、尤其是嵌入式系统的软件进行混合测试的方法。
发明内容
按照各种实施方式,提供了一种用于测试计算机程序的方法,该方法具有:在具有多个程序分支的该计算机程序中选择分枝,该分枝可以引导到所述多个程序分支,其中所述多个程序分支中的该分枝引导到的程序分支取决于是否满足与该分枝关联的分枝条件;选择所述多个程序分支中的该分枝应该引导到的一个程序分支;借助于调试器针对输入来逐步执行该计算机程序,其中针对每条被执行的指令检查该指令是否访问该输入的值,并且如果该指令访问该输入的值,则记录该指令,其中如果在执行该计算机程序时到达该分枝,则确定该分枝条件所取决于的一个或多个输入值,使得该分枝引导到所选择的程序分支,其中考虑所记录的指令如何处理输入值;而且针对具有所述一个或多个输入值的被更改的输入来执行该计算机程序,其中在该执行时检查该计算机程序的错误。
上述方法能够在访问和透明度受限的如嵌入式系统等(目标)系统上通过在相应目标系统上使用该调试器来实现混合测试。
在下文说明了各种实施例。
实施例1是一种如上所述的用于测试计算机程序的方法。
实施例2是根据实施例1所述的方法,该方法具有:向执行该计算机程序的系统发送该输入;并且借助于该调试器,确定该系统将该输入存储在哪里。
这样,对于(目标)系统来说、即对于执行该测试(例如选择该分枝和该程序分支并且供应输入数据)的系统来说,也可以借助于该调试器来查明哪些指令访问输入值(即使是间接访问)。这可以通过如下方式来完成:当该程序开始处理该输入时,借助于该调试器来暂停该程序的执行。
实施例3是根据实施例1或2所述的方法,其中借助于所记录的指令以符号方式来创建所述一个或多个输入值的条件,输入值必须满足这些条件,以便到达所选择的程序分支。
关于该分枝条件所取决于的输入值或变量,进行符号执行。这能够高效地确定输入值,以便到达所选择的程序分支。
实施例4是根据实施例1至3中任一项所述的方法,其中确定该分枝条件取决于该输入的哪些值,并且将该分枝条件并不取决于的该输入的值至少部分地保留在被更改的输入中。
因此,执行混合测试,其中使用并且保留具体输入值,但是关于所希望的处理路径以符号方式来确定条件,以便到达该处理路径。这能够进行高效的测试,原因在于不需要以符号方式对整组输入值或变量进行处理。
实施例5是根据实施例1至4中任一项所述的方法,其中针对访问该输入的值的每条指令,确定该指令是否改变该输入的值和/或该指令是否根据该输入的值来改变程序流程,而且在确定所述一个或多个输入值时考虑所记录的指令如何改变该输入的值以及该程序流程。
即,在逐步执行时,不仅考虑对所考虑的(所选择的)分枝所取决于的值(例如变量)有影响的指令,而且考虑这种必要时在所选择的分枝之前就已经能够改变该程序流程的指令。例如,所述一个或多个输入值被确定为使得甚至即使在再次执行(使用被更改的输入)时也会到达所选择的分枝。
实施例6是根据实施例1至5中任一项所述的方法,其中该计算机程序是用于机器人装置的控制程序,而且该机器人装置根据对该计算机程序的测试的结果使用该计算机程序来被控制。
实施例7是一种测试系统,该测试系统被设立为执行根据实施例1至6中任一项所述的方法。
实施例8是一种计算机程序,该计算机程序具有命令,当这些命令由处理器执行时,这些命令引起:该处理器执行根据实施例1至6中任一项所述的方法。
实施例9是一种计算机可读介质,该计算机可读介质存储命令,当这些命令由处理器执行时,这些命令引起:该处理器执行根据实施例1至6中任一项所述的方法。
附图说明
在附图中,相似的附图标记通常涉及在所有不同视图中的相同部分。这些附图不一定比例正确,其中重点反而通常在于呈现本发明的原理。在下文的描述中,参考如下附图来描述不同方面。
图1示出了用于开发和/或测试软件应用程序的计算机。
图2示出了按照实施方式的混合测试的数据流。
图3示出了用于测试在目标系统上执行的程序的流程。
图4示出了流程图,该流程图呈现了按照实施方式的用于测试计算机程序的方法。
下文的详细描述涉及随附的附图,这些附图为了阐述而示出了本公开的其中可实施本发明的特殊细节和方面。在不脱离本发明的保护范围的情况下,可以使用其它方面并且可以执行结构更改、逻辑更改和电更改。本公开的不同方面不一定是相互排斥的,因为本公开的一些方面可以与本公开的一个或多个其它方面相结合,以便形成新的方面。
具体实施方式
在下文更详细地描述了各种示例。
图1示出了用于开发和/或测试软件应用程序的计算机100。
计算机100具有CPU(中央处理单元(Central Processing Unit))101和工作存储器(RAM)102。工作存储器102被用于加载程序代码、例如从硬盘103加载程序代码,并且CPU101执行该程序代码。
在当前示例中,假定用户打算使用计算机100来开发和/或测试软件应用程序。
为此,用户在CPU 101上运行软件开发环境104。
软件开发环境104使得用户能够为各种设备106、即目标硬件、如用于控制包括机器人臂和自主车辆在内的机器人装置的嵌入式系统或者也为移动(通信)设备开发和测试应用程序105。为此,CPU 101可以运行模拟器作为软件开发环境104的一部分,以便模拟正在或已经为其开发应用程序的相应设备106的行为。如果该软件开发环境仅用于测试来自其它来源的软件,则该软件开发环境104也可以被视为或者被设计为软件测试环境。
用户可以将完成的应用程序经由通信网络107分发给相对应的设备106。替代经由通信网络107,这也可以以其它方式来进行,例如借助于USB记忆棒。
然而,在这样做之前,用户应该对应用程序105进行测试,以避免将未正常发挥作用的应用程序分发给设备106。如果用户不是自己在计算机100上编写该应用程序105的,则情况也可能如此。尤其可能出现用户没有该应用程序的源代码而是仅拥有该应用程序的可执行代码(即二进制程序)的情况。
一种测试方法是混合执行(英文concolic execution)。“混合(Konkolisch)”是“具体(konkret)”与“符号(symbolisch)”的合成词(或者concolic由“concrete(具体)”和“symbolic(符号)”组成)。
混合执行也称为混合测试或者动态符号执行(英文dynamic symbolicexecution)。混合测试是一种混合软件验证技术,其中沿着具体执行路径(有关特定输入进行测试)来进行符号执行,该符号执行将程序变量作为符号变量来处理。
符号执行是一种用于分析程序以查明哪些输入会引起程序的哪些部分被执行的方法。在此,解释器遵循该程序并且为该程序的输入采用符号值,而不是像正常执行该程序那样采用实际输入。这样,该解释器得出为该程序中的表达式和变量以及用于该程序在分枝处所采用的可能分支的这些符号的约束(条件)来表达这些符号,其方式是针对引导到该程序中的某个位置的执行来收集(记录)引导到该位置的符号的条件。最后,可以根据这些条件来确定在分枝处引导到特定分支的可能的输入。
在下文描述与混合测试相结合地使用的术语:
·具体执行是使用具体值来执行程序。为此,该程序例如可以在真实硬件上或者在模拟器中被执行。
·执行路径是程序的可能的运行(控制流)。
·符号值是一种数学符号,该数学符号表示可被分派给变量的任意值。
·目标程序是待测试软件。
·目标系统是应该在其上运行该目标程序的系统。
·静态检测(Instrumentierung)是将指令插入(待测试)程序中,以便获得关于该执行的反馈。该静态检测通常通过编译器来实现,并且例如可以指示在该执行期间所到达的代码块。
·动态检测是在运行时控制(待测试)程序的执行,以便从该执行中生成反馈。该动态检测通常通过操作系统的系统功能或者通过使用模拟器或调试器来实现。
·调试器是一种装置或程序,其可以控制目标设备或目标程序并且可以提供功能,例如用于调用寄存器或存储器值并且用于单步地暂停和执行目标程序。
·断点(Breakpoint)通过调试器被设置到目标程序或设备的指令上,以便在到达时使该执行停止并且将其通知控制进程。
·数据观察点(Daten-Watchpoint)通过调试器被设置到目标程序或目标设备的存储地址上,以便当访问该存储地址时使该执行停住并且通过触发中断来将其通知控制进程。
当调试器连接到嵌入式设备上时,可以使用指令断点,以便使该执行在所希望的代码位置停住,而且可以使用数据观察点,以便在访问特定存储位置时使该执行停住。然而,断点和观察点的数量通常是有限的,并且取决于所使用的系统,例如,对于典型微控制器来说的最大数量是四个断点和两个数据观察点。
对于混合执行来说,需要对输入的处理进行完整跟踪。测试环境的符号执行组件、即以符号形式确定该程序的分枝条件的组件,需要来自具体执行中的信息。这些信息至少包括针对该程序的包含具体值的输入的执行路径。这种具体值尤其包含目标系统为了执行该程序而从传感器和执行器等外部组件读取的那些值。
为了从具体执行中获取信息并且以符号方式确定该程序的分枝条件,可以使用模拟器。然而,为嵌入式系统设立模拟器可能意味着巨大的工作量。其原因在于:嵌入式系统的软件通常依赖于传感器和执行器等外部组件的可用性。如果在模拟器中缺少这些组件,则该软件在其执行时很有可能经过与在存在这些组件时不同的路径,并且因而无法将该软件在测试中的执行与真实执行进行比较。此外,如果在模拟器中缺少外部组件,则测试环境104不会从该外部组件获得具体值用于符号执行部分。
此外,对于混合执行来说,通常难以从嵌入式设备的具体软件执行中获得反馈。例如,对于在嵌入式系统上执行的软件来说,出于以下原因而难以实现静态检测:
·在这种情况下,测试环境104在与待测试软件不同的计算机上运行,诸如在计算机100上运行,而嵌入式系统对应于设备106中的一个设备(或者嵌入到该设备中)。因而,数据(尤其是反馈)并且在该计算机与该嵌入式系统之间传输。
·待测试软件可能包含来自第三方提供商的库以及来自其他制造商或开发者的软件组件。如果这些组件作为二进制文件来被提供,则这些组件可以被视为闭源(ClosedSource),这些组件的源代码无法被轻易修改。因而,闭源组件无法被编译器检测。
·静态检测会增加代码大小,这在受限的嵌入式系统上可能很关键,即可能没有足够的存储器用于检测。
在嵌入式系统的软件的情况下,也难以实现用于检测的动态二进制翻译(dynamicbinary translation),原因在于测试环境在与该软件不同的计算机上运行,并且该检测会增加该程序的大小。此外,执行该动态二进制翻译的程序与目标程序在同一系统上运行。这也会增加程序代码大小。此外,动态二进制翻译工具仅适用于嵌入式系统通常不会使用的操作系统。通过静态二进制重写(英文static binary rewriting)来添加静态检测通常也是不可能的。通常同样无法使用基于跟踪的方法,原因在于许多嵌入式系统不支持硬件跟踪,而且硬件跟踪机制无法用于从外部组件获得具体值。这些具体值进而必须通过其它方法来被获取。
按照各种实施方式,测试环境104经由调试器接口来获取符号执行组件从具体执行中所需的值。借此,对于混合测试来说,不需要模拟器、动态二进制翻译、静态检测或硬件跟踪机制。
符号执行组件可以在目标设备外部被执行,例如作为在目标设备106外部的计算机100上的测试环境104的一部分。符号执行组件所需的信息可以从调试器获得并且由目标设备经由调试器接口输出给该符号执行组件。调试器接口通常存在于嵌入式系统处(例如不同于硬件跟踪)。此外,不需要对目标程序进行更改。
图2示出了按照实施方式的混合测试的数据流。
符号执行组件(例如符号执行引擎)201在主机系统202(例如对应于计算机101)上被执行。该符号执行组件例如是测试环境104的一部分。主机系统202经由调试器接口203向目标系统206发送调试命令204,并且经由调试器接口203从该目标系统获得调试应答205,该目标系统执行目标程序207并且例如对应于目标设备106之一。
调试命令204例如是执行程序步骤(即程序207的命令),或者是读取该程序的指令、读取在目标系统206的存储器208中的位置或者读取目标系统206的寄存器209。调试应答205是相对应的应答,诸如存储内容、指令的信息等等。
例如经由串行接口、Wi-Fi、蓝牙或其它通信信道,主机系统202还向目标系统206提供输入数据210。这取决于目标程序207所期望的输入的形式。
图3示出了用于测试在目标系统206上执行的程序207的流程。
在301,执行用于设置(Setup)或初始化的操作。这包含以下内容:
·主机系统202(例如按照用户输入)指定在目标系统206中的目标分枝,该目标分枝的输出应该通过修改该目标分枝所取决于的值来被切换。在此,目标通常在于到达程序207中的在先前的测试中(例如到目前为止在模糊测试中)尚未到达过的分支。分枝是包含分枝条件的程序指令,其中根据是否满足该分枝条件,程序207以不同方式来运行(即分枝到另一程序分支,即引导到另一程序分支,并且借此遵循另一执行路径)。例如,用户指定该指令的地址。
·调试器与目标系统206相链接(即提供调试器接口203)。目标系统206例如可以具有板载调试器(On-Board-Debugger)。在这种情况下,主机系统201可以与该板载调试器连接。
·主机系统202向目标程序发送输入210。
·借助于调试器来执行该目标程序,其中当该目标程序开始处理输入210时使该执行停住。为此,主机系统202可以将硬件断点(Hardware-Breakpoint)(例如按照用户输入)设置到在读取输入210之后的指令上。
·主机系统202(借助于调试器接口203)获取在存储器208中的地址(或地址范围),输入210在目标系统206上存储于该地址(或地址范围),并且该主机系统将该地址(这些地址)交给符号执行组件201。像Angr那样的符号执行引擎需要输入在目标系统中存储于哪里的信息,以便稍后获取这些输入的条件。
在302,主机系统202命令目标系统206执行目标程序207的程序步骤(指令)并且然后使该执行停住。这可以借助于用于以单步或硬件断点来执行的调试功能来实现。
在303,主机系统借助于调试器接口203来读取目标系统206刚刚执行了哪条指令,并且确定该指令的地址(在目标系统206的程序存储区内)。
在304,主机系统202确定该指令是不是从目标系统206的寄存器209或存储器208中读取一个或多个值的指令。如果情况如此,则该主机系统(借助于调试器接口203)获取一个或多个读取值并且接着以306来继续。如果该指令没有读取任何值,则该主机系统直接以306来继续。
在306,主机系统202将所读取的指令及其地址以及必要时将读取值或(具体)读取值交给符号执行组件201。如上所述,像Angr那样的符号执行引擎需要输入在目标系统中存储于哪里的信息,以便稍后获取这些输入的条件。
在307,主机系统202确定是否已到达在301指定的目标分枝。如果情况如此,则该主机系统以308来继续。否则,该主机系统返回302,即操控目标系统206来执行程序207的下一条指令。换言之,主机系统201借助于调试器接口203在目标系统206上逐步(逐条指令地)执行在目标系统206上的程序207,直至到达所指定的分枝为止。在此,
“已‘到达’所指定的分枝”意味着:分枝指令已被执行,即尤其是分枝条件已被检查。在301,分枝的地址已被指定;并且在303,最后执行的指令的地址已被确定。如果最后执行的指令的地址等于在301指定的地址,则已到达所指定的分枝。
如果到达所指定的分枝,则在308,符号执行组件基于所获得的信息(存储地址、命令和具体值)来生成条件,否定一个或多个条件,并且例如在使用SMT(可满足性模理论(Satisfiability Modulo Theories))求解器的情况下确定满足这些条件的新输入210。如所提到的,在此否定一个或多个条件,尤其是例如所考虑的(即在301所选择的)分枝的条件,使得在向目标系统206或程序207供应新输入的执行中,该分枝引导到另一程序分支,即例如到达到目前为止尚未到达过的分支(以及借此执行路径),该分支可以以这种方式来被测试。
概括来说,按照各种实施方式,提供了一种如图4中所示的方法。
图4示出了流程图400,该流程图呈现了按照实施方式的用于测试计算机程序的方法。
在401,在具有多个程序分支的该计算机程序中选择分枝,该分枝可以引导到所述多个程序分支。(所述多个程序分支中的)该分枝引导到的程序分支取决于是否满足与该分枝关联的分枝条件。
在402,选择所述多个程序分支中的该分枝应该引导到的一个程序分支。
在403,借助于调试器针对输入来逐步执行该计算机程序,其中针对每条被执行的指令检查该指令是否访问该输入的值,并且如果该指令访问该输入的值,则记录该指令。(在404)如果在执行该计算机程序时到达该分枝,则确定该分枝条件所取决于的一个或多个输入值,使得该分枝引导到所选择的程序分支,其中考虑所记录的指令如何处理输入值。
在405,针对具有所述一个或多个输入值的被更改的输入来执行该计算机程序,而且在该执行时检查该计算机程序的错误。
应当注意:不一定必须在开始执行该程序之前选择该分枝应该引导到的程序分支。例如,可以选择在该执行时尚未到达过的程序分支,使得在多次执行的过程中测试该计算机程序的各种可能的执行路径。
图4的方法可以通过具有一个或多个数据处理单元的一个或多个计算机来被执行。术语“数据处理单元”可以被理解成能够处理数据或信号的任何类型的实体。例如,这些数据或信号可以按照至少一个(也就是说一个或超过一个)特定功能来被处理,所述功能由数据处理单元来执行。数据处理单元可以包括模拟电路、数字电路、逻辑电路、微处理器、微控制器、中央单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、可编程门阵列(FPGA)的集成电路或者它们的任意组合或者由这些来构造。用于实现本文中更详细地描述的相应功能的任何其它方式也可以被理解成数据处理单元或者逻辑电路装置。这里详细描述的方法步骤中的一个或多个可以由数据处理单元通过一个或多个特定功能来实施(例如实现),这些功能由该数据处理单元来执行。
图4的方法用于测试程序、例如针对机器人装置的控制软件。术语“机器人装置”可以被理解成涉及任何技术系统,诸如受计算机控制的机器、车辆、家用电器、电动工具、制造机器、私人助理或门禁系统。该控制软件也可以用于诸如导航设备等数据处理系统。
尽管这里呈现和描述了特定实施方式,但是本领域技术人员认识到:所示出和描述的特定实施方式可以被替换成多种替代和/或等效的实现方案,而不脱离本发明的保护范围。本申请应该涵盖这里所讨论的特定实施方式的任何调整或变化。因而旨在仅通过权利要求书及其等效物来限制本发明。
Claims (9)
1.一种用于测试计算机程序的方法,所述方法具有:
在具有多个程序分支的所述计算机程序中选择分枝,所述分枝能够引导到所述多个程序分支,其中所述多个程序分支中的所述分枝引导到的程序分支取决于是否满足与所述分枝关联的分枝条件;
选择所述多个程序分支中的所述分枝应该引导到的一个程序分支;
借助于调试器针对输入来逐步执行所述计算机程序,其中针对每条被执行的指令检查所述指令是否访问所述输入的值,并且如果所述指令访问所述输入的值,则记录所述指令,
其中如果在执行所述计算机程序时到达所述分枝,则确定所述分枝条件所取决于的一个或多个输入值,使得所述分枝引导到所选择的程序分支,其中考虑所记录的指令如何处理输入值;而且
针对具有所述一个或多个输入值的被更改的输入来执行所述计算机程序,其中在所述执行时检查所述计算机程序的错误。
2.根据权利要求1所述的方法,所述方法具有:向执行所述计算机程序的系统发送所述输入;并且借助于所述调试器,确定所述系统将所述输入存储在哪里。
3.根据权利要求1或2所述的方法,其中借助于所记录的指令以符号方式来创建所述一个或多个输入值的条件,所述输入值必须满足所述条件,以便到达所选择的程序分支。
4.根据权利要求1至3中任一项所述的方法,其中确定所述分枝条件取决于所述输入的哪些值,并且将所述分枝条件并不取决于的所述输入的值至少部分地保留在被更改的输入中。
5.根据权利要求1至4中任一项所述的方法,其中针对访问所述输入的值的每条指令,确定所述指令是否改变所述输入的值和/或所述指令是否根据所述输入的值来改变程序流程,而且在确定所述一个或多个输入值时考虑所记录的指令如何改变所述输入的值以及所述程序流程。
6.根据权利要求1至5中任一项所述的方法,其中所述计算机程序是用于机器人装置的控制程序,而且所述机器人装置根据对所述计算机程序的测试的结果使用所述计算机程序来被控制。
7.一种测试系统,所述测试系统被设立为执行根据权利要求1至6中任一项所述的方法。
8.一种计算机程序,所述计算机程序具有命令,当所述命令由处理器执行时,所述命令引起:所述处理器执行根据权利要求1至6中任一项所述的方法。
9.一种计算机可读介质,所述计算机可读介质存储命令,当所述命令由处理器执行时,所述命令引起:所述处理器执行根据权利要求1至6中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102022202541.5 | 2022-03-15 | ||
DE102022202541.5A DE102022202541A1 (de) | 2022-03-15 | 2022-03-15 | Verfahren zum Testen eines Computerprogramms |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775454A true CN116775454A (zh) | 2023-09-19 |
Family
ID=87849276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310244135.1A Pending CN116775454A (zh) | 2022-03-15 | 2023-03-13 | 用于测试计算机程序的方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116775454A (zh) |
DE (1) | DE102022202541A1 (zh) |
-
2022
- 2022-03-15 DE DE102022202541.5A patent/DE102022202541A1/de active Pending
-
2023
- 2023-03-13 CN CN202310244135.1A patent/CN116775454A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102022202541A1 (de) | 2023-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8266608B2 (en) | Post-compile instrumentation of object code for generating execution trace data | |
US9152531B2 (en) | Post-compile instrumentation of object code for generating execution trace data | |
US7171653B2 (en) | Systems and methods for providing communication between a debugger and a hardware simulator | |
US6430741B1 (en) | System and method for data coverage analysis of a computer program | |
US7950001B2 (en) | Method and apparatus for instrumentation in a multiprocessing environment | |
JP4472615B2 (ja) | プログラマブルデバイスのモデリング方法および装置 | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
US9898388B2 (en) | Non-intrusive software verification | |
US20110047529A1 (en) | Method for automatic script generation for testing the validity of operational software of a system onboard an aircraft and device for implementing the same | |
WO2005111801A2 (en) | Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems | |
US20080127118A1 (en) | Method and system for dynamic patching of software | |
EP3769222B1 (en) | Testing kernel mode computer code by executing the computer code in user mode | |
US20180157571A1 (en) | Method for the realistic estimation of function run times in pil simulation | |
CN116775454A (zh) | 用于测试计算机程序的方法 | |
US10705933B2 (en) | System integration using virtualization | |
US10650174B1 (en) | System and method for visualizing event sequences for expressions using both hardware and software state information | |
US9069900B2 (en) | Method for determining whether a machine code instruction of a machine code program is executed in the machine code program | |
CN108614704A (zh) | 代码编译方法及装置 | |
US20100077383A1 (en) | Simulation method and storage medium for storing program | |
US7546589B2 (en) | Semi-automated desk checking system and method | |
Nakamoto et al. | Virtual software execution environments for distributed embedded control systems | |
US20240231347A1 (en) | Fault injection test method and apparatus, and fault injection method | |
US20230315616A1 (en) | Method for testing a data processing distributed to multiple programs | |
CN116737533A (zh) | 用于测试计算机程序的方法 | |
US11294647B1 (en) | Support apparatus and design support method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |