CN104572424B - 测试方法及装置 - Google Patents

测试方法及装置 Download PDF

Info

Publication number
CN104572424B
CN104572424B CN201310469986.2A CN201310469986A CN104572424B CN 104572424 B CN104572424 B CN 104572424B CN 201310469986 A CN201310469986 A CN 201310469986A CN 104572424 B CN104572424 B CN 104572424B
Authority
CN
China
Prior art keywords
breakpoint
code branch
code
branch
tested program
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.)
Expired - Fee Related
Application number
CN201310469986.2A
Other languages
English (en)
Other versions
CN104572424A (zh
Inventor
丁世远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201310469986.2A priority Critical patent/CN104572424B/zh
Publication of CN104572424A publication Critical patent/CN104572424A/zh
Application granted granted Critical
Publication of CN104572424B publication Critical patent/CN104572424B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种测试方法及装置。本申请实施例通过获取被测程序中的代码分支信息,所述代码分支信息用于指示所述被测程序所包含的代码分支,进而根据所述代码分支信息,在所述被测程序中设置断点,若执行所述被测程序的停止位置为所述断点,执行调试操作,若没有执行所述断点之后的代码分支,获取所述断点所在代码分支中的变量状态,使得能够根据变量状态调整测试用例重新执行所述被测程序,由于没有对测试程序的代码进行修改,操作简单,且准确率高,从而提高了测试操作的效率和可靠性。

Description

测试方法及装置
【技术领域】
本申请涉及测试技术,尤其涉及一种测试方法及装置。
【背景技术】
在软件测试过程例如,单元测试中,为了避免程序的风险,需要利用设计的测试用例,执行被测程序,以覆盖尽量多的代码分支。现有技术中,可以通过打桩方法,将测试程序从产品项目中分离出来,使之能够独立编译、链接,并独立运行。桩,还可以称为桩代码,是指用来代替关联代码或者未实现代码的代码。因此,将测试程序之外的,并且与测试程序相关的代码,用桩来代替,从而能够实现分离测试程序。
然而,由于对测试程序的代码进行了修改,操作复杂,且容易出错,从而导致了测试操作的效率和可靠性的降低。
【发明内容】
本申请的多个方面提供一种测试方法及装置,用以提高测试操作的效率和可靠性。
本申请的一方面,提供一种测试方法,包括:
获取被测程序中的代码分支信息,所述代码分支信息用于指示所述被测程序所包含的代码分支;
根据所述代码分支信息,在所述被测程序中设置断点;
若执行所述被测程序的停止位置为所述断点,执行调试操作;
若没有执行所述断点之后的代码分支,获取所述断点所在代码分支中的变量状态,以供调整测试用例重新执行所述被测程序。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述代码分支信息,在所述被测程序中设置断点,包括:
根据所述代码分支信息,利用MI命令,在所述被测程序中设置断点。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述代码分支信息,在所述被测程序中设置断点,包括:
在所述代码分支信息所指示的代码分支之前,设置所述断点。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述若执行所述被测程序的停止位置为所述断点,执行调试操作,包括:
若执行所述被测程序的停止位置为所述断点,执行下一步操作。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述下一步操作包括下一行操作或下一断点操作。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述若执行所述被测程序的停止位置为所述断点,执行调试操作之后,还包括:
若没有执行所述断点之后的代码分支,在未执行分支池中添加所述断点之后的代码分支的状态信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述若执行所述被测程序的停止位置为所述断点,执行调试操作之后,还包括:
若执行所述断点之后的代码分支,在未执行分支池中删除所述断点之后的代码分支的状态信息。
本申请的另一方面,提供一种测试装置,包括:
获取单元,用于获取被测程序中的代码分支信息,所述代码分支信息用于指示所述被测程序所包含的代码分支;
设置单元,用于根据所述代码分支信息,在所述被测程序中设置断点;
调试单元,用于若执行所述被测程序的停止位置为所述断点,执行调试操作;
所述获取单元,还用于若没有执行所述断点之后的代码分支,获取所述断点所在代码分支中的变量状态,以供调整测试用例重新执行所述被测程序。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述设置单元,具体用于
根据所述代码分支信息,利用MI命令,在所述被测程序中设置断点。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述设置单元,具体用于
在所述代码分支信息所指示的代码分支之前,设置所述断点。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述调试单元,具体用于
若执行所述被测程序的停止位置为所述断点,执行下一步操作。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述下一步操作包括下一行操作或下一断点操作。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述装置还包括操作单元,用于
若没有执行所述断点之后的代码分支,在未执行分支池中添加所述断点之后的代码分支的状态信息。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述操作单元,还用于
若执行所述断点之后的代码分支,在未执行分支池中删除所述断点之后的代码分支的状态信息。
由上述技术方案可知,本申请实施例通过获取被测程序中的代码分支信息,所述代码分支信息用于指示所述被测程序所包含的代码分支,进而根据所述代码分支信息,在所述被测程序中设置断点,若执行所述被测程序的停止位置为所述断点,执行调试操作,若没有执行所述断点之后的代码分支,获取所述断点所在代码分支中的变量状态,使得能够根据变量状态调整测试用例重新执行所述被测程序,由于没有对测试程序的代码进行修改,操作简单,且准确率高,从而提高了测试操作的效率和可靠性。
另外,采用本申请提供的技术方案,能够自动获取未执行代码分支所对应的变量状态即所述断点所在代码分支中的变量状态,无需操作人员对未执行的代码分支进行分析,准确率高,能够进一步提高测试操作的效率和可靠性。
【附图说明】
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的测试方法的流程示意图;
图2为本申请另一实施例提供的测试装置的结构示意图;
图3为本申请另一实施例提供的测试装置的结构示意图。
【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中所述的被测程序可以包括但不限于C语言代码编译的程序、C++语言代码编译的程序或java语言代码编译的程序,其他任何可实现编译的程序语言均在本申请保护范围之内,本申请对此并不做特别限定。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1为本申请一实施例提供的测试方法的流程示意图,如图1所示。
101、获取被测程序中的代码分支信息,所述代码分支信息用于指示所述被测程序所包含的代码分支。
其中,所述代码分支信息可以用于指示所述被测程序所包含的一个代码分支,或者还可以用于指示所述被测程序所包含的两个或两个以上代码分支。所述代码分支信息可以包括但不限于代码分支行号。
可选地,所述代码分支信息还可以进一步包括代码分支内容。
具体地,可以利用编译的脚本例如,指令列模式(Bash Shell)脚本等,从被测程序中,获取所述被测程序所包含的代码分支的代码分支信息。
102、根据所述代码分支信息,在所述被测程序中设置断点。
这样,就可以利用所设置的断点,暂时中止所述被测程序的执行,以进入调试状态。
可以理解的是,在编译被测程序时,需要将调试信息加到源代码中,才能够在被测程序中设置断点。具体地,具体可以使用编程语言编译器例如,CC编译器、GUN编译组件合集(GNU Compiler Collection,GCC)编译器或G++编译器等,的g参数,在源代码中加入调试信息。这样,才能够看到被测程序的函数名、变量名等,以便对其执行调试操作,否则,所代替的全是运行时的内存地址。其中,
CC编译器,是C语言编译器;
GCC编译器,原名为Gun C语言编译器,因为它原本只能处理C语言,但GCC编译器很快地扩展,包含了很多编译器,例如C语言编译器、C++语言编译器、Objective-C语言编译器、Ada语言编译器、Fortran语言编译器和Java语言编译器等;
G++编译器,是C++语言编译器。
可选地,在本实施例的一个可能的实现方式中,针对被测程序为C语言代码编译的程序或C++语言代码编译的程序的场景,具体可以根据所述代码分支信息,利用机器接口(Machine Interface,MI)命令,在所述被测程序中设置断点。
其中,MI命令属于GDB命令。GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。MI命令是GDB命令的一部分,主要目的是为一些目标系统如集成开发环境(Integrated Development Environment,IDE)等提供调试功能。这部分MI命令是给机器使用的接口,不需要操作人员的介入,并且返回的结果是结构化数据,有利于代码编译和代码分析。
可选地,在本实施例的一个可能的实现方式中,具体可以在所述代码分支信息所指示的代码分支之前,设置所述断点。其中,每个断点可以用于拦截一个代码分支的执行。
具体地,可以在所述代码分支信息所指示的一个代码分支之前,设置一个断点,或者还可以在所述代码分支信息所指示的两个或两个以上代码分支中每个代码分支之前,均设置一个断点。
103、若执行所述被测程序的停止位置为所述断点,执行调试操作。
可以理解的是,在103之前,需要根据被测程序,预先设计测试用例,以覆盖被测程序所包含的尽量多的代码分支。这样,利用测试用例,执行所述被测程序,以进行测试。
具体地,可以对执行所述被测程序的停止位置是否为所述断点进行判断。若执行所述被测程序的停止位置为所述断点,则可以执行调试操作,以使得所述被测程序进入调试状态;若执行所述被测程序的停止位置不为所述断点,例如,停止位置为暂停点等,则可以结束测试操作。
例如,若执行所述被测程序的停止位置为所述断点,则可以执行下一行操作,即执行下一行的被测代码。
或者,再例如,若执行所述被测程序的停止位置为所述断点,则可以执行下一断点操作,即执行下面一行或几行的被测代码,直到下一个断点为止。
可以理解的是,上述的举例只是本申请实施例中优选实施例,在具体应用中可以执行其他调试操作,以便对被测程序进行调试。其他任何可实现本申请目的的实施方式均在本申请保护范围之内,本申请对此并不做特别限定。
104、若没有执行所述断点之后的代码分支,获取所述断点所在代码分支中的变量状态,以供调整测试用例重新执行所述被测程序。
其中,所述没有执行所述断点之后的代码分支,或者还可以描述为,所述断点之后的代码分支没有被执行,本申请实施例对表述方式不进行特别限定。
可选地,在本实施例的一个可能的实现方式中,针对被测程序为C语言代码编译的程序或C++语言代码编译的程序的场景,具体可以根据所述代码分支信息,利用MI命令,获取所述断点所在代码分支中的变量状态。
需要说明的是,如果执行完毕所述断点之后的代码分支,则可以将所述断点删除。
这样,由于没有对测试程序的代码进行修改,操作简单,且准确率高,从而提高了测试操作的效率和可靠性。
本实施例中,还可以进一步申请指定大小的内存,作为未执行分支池。这个未执行分支池用于存储没有执行的代码分支的状态信息,以供对没有执行的代码分支进行进一步分析,设计能够覆盖该代码分支的测试用例。这里所存储的内容即没有执行的代码分支的状态信息,可以包括但不限于没有执行的代码分支和没有执行的代码分支之前的断点所在代码分支中的变量状态等信息。
这样,可以通过对未执行分支池执行添加操作和删除操作,以实现添加代码分支和删除代码分支的目的,能够防止频繁的内存操作对系统性能造成影响,从而进一步提高了系统性能。
可选地,在本实施例的一个可能的实现方式中,在103之后,还可以进一步执行若没有执行所述断点之后的代码分支,或者还可以描述为,所述断点之后的代码分支没有被执行,在未执行分支池中添加所述断点之后的代码分支的状态信息的状态信息的操作。
具体地,可以判断所述断点之后的代码分支是否被执行。
若所述断点之后的代码分支被执行,则可以判断所述断点之后的代码分支是否在未执行分支池中。如果所述断点之后的代码分支不在未执行分支池中,则继续执行103和104,以对下一个断点之后的代码分支是否被执行进行判断,以及相应的后续操作;如果所述断点之后的代码分支在未执行分支池中,则在未执行分支池中删除所述断点之后的代码分支的状态信息。
若所述断点之后的代码分支没有被执行,则可以判断所述断点之后的代码分支是否在未执行分支池中。如果所述断点之后的代码分支不在未执行分支池中,则可以在未执行分支池中添加所述断点之后的代码分支的状态信息;如果所述断点之后的代码分支在未执行分支池中,则继续执行103和104,以对下一个断点之后的代码分支是否被执行,以及相应的后续操作。
这样,可以根据所获取的所述断点所在代码分支中的变量状态,以及所述断点之后的代码分支,调整测试用例重新执行所述被测程序。若执行所述断点之后的代码分支,或者还可以描述为,所述断点之后的代码分支被执行,在未执行分支池中删除所述断点之后的代码分支的状态信息。
这样,由于没有采用添加(new)命令和删除(delete)命令直接操作内存,而是采用预先申请内存以建立未执行分支池的操作,通过对未执行分支池执行添加操作和删除操作,即可以实现添加代码分支和删除代码分支的目的,能够防止频繁的内存操作对系统性能造成影响,从而进一步提高了系统性能。
本实施例中,通过获取被测程序中的代码分支信息,所述代码分支信息用于指示所述被测程序所包含的代码分支,进而根据所述代码分支信息,在所述被测程序中设置断点,若执行所述被测程序的停止位置为所述断点,执行调试操作,若没有执行所述断点之后的代码分支,获取所述断点所在代码分支中的变量状态,使得能够根据变量状态调整测试用例重新执行所述被测程序,由于没有对测试程序的代码进行修改,操作简单,且准确率高,从而提高了测试操作的效率和可靠性。
另外,采用本申请提供的技术方案,能够自动获取未执行代码分支所对应的变量状态即所述断点所在代码分支中的变量状态,无需操作人员对未执行的代码分支进行分析,准确率高,能够进一步提高测试操作的效率和可靠性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图2为本申请另一实施例提供的测试装置的结构示意图,如图2所示。本实施例的测试装置可以包括获取单元21、设置单元22和调试单元23。其中,
获取单元21,用于获取被测程序中的代码分支信息,所述代码分支信息用于指示所述被测程序所包含的代码分支。其中,所述代码分支信息可以用于指示所述被测程序所包含的一个代码分支,或者还可以用于指示所述被测程序所包含的两个或两个以上代码分支。所述代码分支信息可以包括但不限于代码分支行号。
可选地,所述代码分支信息还可以进一步包括代码分支内容。
设置单元22,用于根据所述代码分支信息,在所述被测程序中设置断点。这样,就可以利用所设置的断点,暂时中止所述被测程序的执行,以进入调试状态。
调试单元23,用于若执行所述被测程序的停止位置为所述断点,执行调试操作。
所述获取单元21,还用于若没有执行所述断点之后的代码分支,获取所述断点所在代码分支中的变量状态,以供调整测试用例重新执行所述被测程序。其中,所述没有执行所述断点之后的代码分支,或者还可以描述为,所述断点之后的代码分支没有被执行,本申请实施例对表述方式不进行特别限定。
具体地,所述获取单元21可以利用编译的脚本工具例如,指令列模式(BashShell)脚本等,从被测程序中,获取所述被测程序所包含的代码分支的代码分支信息。
可以理解的是,在编译被测程序时,需要将调试信息加到源代码中,才能够在被测程序中设置断点。具体地,具体可以使用编程语言编译器例如,CC编译器、GUN编译组件合集(GNU Compiler Collection,GCC)编译器或G++编译器等,的g参数,在源代码中加入调试信息。这样,才能够看到被测程序的函数名、变量名等,以便对其执行调试操作,否则,所代替的全是运行时的内存地址。其中,
CC编译器,是C语言编译器;
GCC编译器,原名为Gun C语言编译器,因为它原本只能处理C语言,但GCC编译器很快地扩展,包含了很多编译器,例如C语言编译器、C++语言编译器、Objective-C语言编译器、Ada语言编译器、Fortran语言编译器和Java语言编译器等;
G++编译器,是C++语言编译器。
可选地,在本实施例的一个可能的实现方式中,针对被测程序为C语言代码编译的程序或C++语言代码编译的程序的场景,所述设置单元22,具体可以用于根据所述代码分支信息,利用机器接口(Machine Interface,MI)命令,在所述被测程序中设置断点。
其中,MI命令属于GDB命令。GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。MI命令是GDB命令的一部分,主要目的是为一些目标系统如集成开发环境(Integrated Development Environment,IDE)等提供调试功能。这部分MI命令是给机器使用的接口,不需要操作人员的介入,并且返回的结果是结构化数据,有利于代码编译和代码分析。
可选地,在本实施例的一个可能的实现方式中,所述设置单元22,具体可以用于在所述代码分支信息所指示的代码分支之前,设置所述断点。其中,每个断点可以用于拦截一个代码分支的执行。
具体地,所述设置单元22可以在所述代码分支信息所指示的一个代码分支之前,设置一个断点,或者还可以在所述代码分支信息所指示的两个或两个以上代码分支中每个代码分支之前,均设置一个断点。
可以理解的是,本实施例提供的装置所包括的每个功能单元执行相应操作之前,该装置还需要根据被测程序,预先设计测试用例,以覆盖被测程序所包含的尽量多的代码分支。这样,该装置所包括的各个功能单元才能够利用测试用例,执行所述被测程序,以进行测试。
具体地,所述调试单元23可以对执行所述被测程序的停止位置是否为所述断点进行判断。若执行所述被测程序的停止位置为所述断点,所述调试单元23则可以执行调试操作,以使得所述被测程序进入调试状态;若执行所述被测程序的停止位置不为所述断点,例如,停止位置为暂停点等,所述调试单元23则可以结束测试操作。
例如,所述调试单元23若执行所述被测程序的停止位置为所述断点,则可以执行下一行操作,即执行下一行的被测代码。
或者,再例如,所述调试单元23若执行所述被测程序的停止位置为所述断点,则可以执行下一断点操作,即执行下面一行或几行的被测代码,直到下一个断点为止。
可以理解的是,上述的举例只是本申请实施例中优选实施例,所述调试单元23在具体应用中可以执行其他调试操作,以便对被测程序进行调试。其他任何可实现本申请目的的实施方式均在本申请保护范围之内,本申请对此并不做特别限定。
可选地,在本实施例的一个可能的实现方式中,针对被测程序为C语言代码编译的程序或C++语言代码编译的程序的场景,所述获取单元21具体可以根据所述代码分支信息,利用MI命令,获取所述断点所在代码分支中的变量状态。
需要说明的是,如果执行完毕所述断点之后的代码分支,所述调试单元23则可以将所述断点删除。
如图3所示,本实施例提供的测试装置还可以进一步包括操作单元31。所述操作单元31还可以进一步申请指定大小的内存,作为未执行分支池。这个未执行分支池用于存储没有执行的代码分支的状态信息,以供对没有执行的代码分支进行进一步分析,设计能够覆盖该代码分支的测试用例。这里所存储的内容即没有执行的代码分支的状态信息,可以包括但不限于没有执行的代码分支和没有执行的代码分支之前的断点所在代码分支中的变量状态等信息。
这样,所述操作单元31可以通过对未执行分支池执行添加操作和删除操作,以实现添加代码分支和删除代码分支的目的,能够防止频繁的内存操作对系统性能造成影响,从而进一步提高了系统性能。
可选地,在本实施例的一个可能的实现方式中,所述操作单元31还可以进一步用于若没有执行所述断点之后的代码分支,在未执行分支池中添加所述断点之后的代码分支的状态信息。
具体地,所述操作单元31可以判断所述断点之后的代码分支是否被执行。
若所述断点之后的代码分支被执行,所述操作单元31则可以判断所述断点之后的代码分支是否在未执行分支池中。如果所述断点之后的代码分支不在未执行分支池中,所述操作单元31则指示调试单元23和获取单元21继续执行相应的操作,以对下一个断点之后的代码分支是否被执行进行判断,以及相应的后续操作;如果所述断点之后的代码分支在未执行分支池中,所述操作单元31则在未执行分支池中删除所述断点之后的代码分支的状态信息。
若所述断点之后的代码分支没有被执行,所述操作单元31则可以判断所述断点之后的代码分支是否在未执行分支池中。如果所述断点之后的代码分支不在未执行分支池中,所述操作单元31则可以在未执行分支池中添加所述断点之后的代码分支的状态信息;如果所述断点之后的代码分支在未执行分支池中,所述操作单元31则指示调试单元23和获取单元21继续执行相应的操作,以对下一个断点之后的代码分支是否被执行,以及相应的后续操作。
这样,可以根据获取单元21所获取的所述断点所在代码分支中的变量状态,以及所述断点之后的代码分支,调整测试用例重新执行所述被测程序。所述操作单元31还可以进一步用于若执行所述断点之后的代码分支,在未执行分支池中删除所述断点之后的代码分支的状态信息。
这样,由于没有采用添加(new)命令和删除(delete)命令直接操作内存,而是采用操作单元31预先申请内存以建立未执行分支池的操作,通过对未执行分支池执行添加操作和删除操作,即可以实现添加代码分支和删除代码分支的目的,能够防止频繁的内存操作对系统性能造成影响,从而进一步提高了系统性能。
本实施例中,通过获取单元获取被测程序中的代码分支信息,所述代码分支信息用于指示所述被测程序所包含的代码分支,进而由设置单元根据所述代码分支信息,在所述被测程序中设置断点,若执行所述被测程序的停止位置为所述断点,调试单元则可以执行调试操作,若没有执行所述断点之后的代码分支,所述获取单元则可以获取所述断点所在代码分支中的变量状态,使得能够根据变量状态调整测试用例重新执行所述被测程序,由于没有对测试程序的代码进行修改,操作简单,且准确率高,从而提高了测试操作的效率和可靠性。
另外,采用本申请提供的技术方案,能够自动获取未执行代码分支所对应的变量状态即所述断点所在代码分支中的变量状态,无需操作人员对未执行的代码分支进行分析,准确率高,能够进一步提高测试操作的效率和可靠性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或页面组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (12)

1.一种测试方法,其特征在于,包括:
获取被测程序中的代码分支信息,所述代码分支信息用于指示所述被测程序所包含的代码分支;
根据所述代码分支信息,在所述被测程序中设置断点;
若执行所述被测程序的停止位置为所述断点,执行调试操作;
若没有执行所述断点之后的代码分支,获取所述断点所在代码分支中的变量状态,以供调整测试用例重新执行所述被测程序;
在未执行分支池中添加所述断点之后的代码分支的状态信息;
所述状态信息包括:没有执行的所述断点之后的代码分支和所述变量状态。
2.根据权利要求1所述的方法,其特征在于,所述根据所述代码分支信息,在所述被测程序中设置断点,包括:
根据所述代码分支信息,利用MI命令,在所述被测程序中设置断点。
3.根据权利要求1所述的方法,其特征在于,所述根据所述代码分支信息,在所述被测程序中设置断点,包括:
在所述代码分支信息所指示的代码分支之前,设置所述断点。
4.根据权利要求1所述的方法,其特征在于,所述若执行所述被测程序的停止位置为所述断点,执行调试操作,包括:
若执行所述被测程序的停止位置为所述断点,执行下一步操作。
5.根据权利要求4所述的方法,其特征在于,所述下一步操作包括下一行操作或下一断点操作。
6.根据权利要求1所述的方法,其特征在于,所述若执行所述被测程序的停止位置为所述断点,执行调试操作之后,还包括:
若执行所述断点之后的代码分支,在未执行分支池中删除所述断点之后的代码分支的状态信息。
7.一种测试装置,其特征在于,包括:
获取单元,用于获取被测程序中的代码分支信息,所述代码分支信息用于指示所述被测程序所包含的代码分支;
设置单元,用于根据所述代码分支信息,在所述被测程序中设置断点;
调试单元,用于若执行所述被测程序的停止位置为所述断点,执行调试操作;
所述获取单元,还用于若没有执行所述断点之后的代码分支,获取所述断点所在代码分支中的变量状态,以供调整测试用例重新执行所述被测程序;
操作单元,用于在未执行分支池中添加所述断点之后的代码分支的状态信息;
所述状态信息包括:没有执行的所述断点之后的代码分支和所述变量状态。
8.根据权利要求7所述的装置,其特征在于,所述设置单元,具体用于根据所述代码分支信息,利用MI命令,在所述被测程序中设置断点。
9.根据权利要求7所述的装置,其特征在于,所述设置单元,具体用于在所述代码分支信息所指示的代码分支之前,设置所述断点。
10.根据权利要求7所述的装置,其特征在于,所述调试单元,具体用于
若执行所述被测程序的停止位置为所述断点,执行下一步操作。
11.根据权利要求10所述的装置,其特征在于,所述下一步操作包括下一行操作或下一断点操作。
12.根据权利要求7所述的装置,其特征在于,所述操作单元,还用于
若执行所述断点之后的代码分支,在未执行分支池中删除所述断点之后的代码分支的状态信息。
CN201310469986.2A 2013-10-09 2013-10-09 测试方法及装置 Expired - Fee Related CN104572424B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310469986.2A CN104572424B (zh) 2013-10-09 2013-10-09 测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310469986.2A CN104572424B (zh) 2013-10-09 2013-10-09 测试方法及装置

Publications (2)

Publication Number Publication Date
CN104572424A CN104572424A (zh) 2015-04-29
CN104572424B true CN104572424B (zh) 2018-04-20

Family

ID=53088558

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310469986.2A Expired - Fee Related CN104572424B (zh) 2013-10-09 2013-10-09 测试方法及装置

Country Status (1)

Country Link
CN (1) CN104572424B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038058B (zh) * 2017-02-08 2021-12-24 创新先进技术有限公司 一种代码处理方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103218297A (zh) * 2013-05-15 2013-07-24 百度在线网络技术(北京)有限公司 测试数据的筛选方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041315A1 (en) * 2001-08-21 2003-02-27 International Business Machines Corporation Debugger with automatic detection of control points influencing program behavior
US8839203B2 (en) * 2011-05-25 2014-09-16 Microsoft Corporation Code coverage-based taint perimeter detection

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103218297A (zh) * 2013-05-15 2013-07-24 百度在线网络技术(北京)有限公司 测试数据的筛选方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于调试的测试技术";sihanjishu;《http://www.51testing.com/index.php?uid/159438/action/viewspace/itemid/806143/php/1》;20120116;文章第3页第10-14行,第4页第8-9行,第5页第14-16行 *

Also Published As

Publication number Publication date
CN104572424A (zh) 2015-04-29

Similar Documents

Publication Publication Date Title
US10621068B2 (en) Software code debugger for quick detection of error root causes
EP3213216B1 (en) Diagnostic workflow for production debugging
CN104412229B (zh) 自适应可移植库
CN103425574B (zh) 一种测试应用程序的方法及装置
US7089535B2 (en) Code coverage with an integrated development environment
CN106471476A (zh) 用于对经优化代码的编辑并继续以及增强的经优化调试的技术
CN106462434A (zh) 整个程序代码的增量式编译
US20190236750A1 (en) Optimizing compilation of shaders
CN107111544A (zh) 生产诊断中的历史控制流可视化
CN107423048A (zh) 数据收集的方法、装置、介质和计算设备
CN102667730A (zh) 设计时调试
CN104731566B (zh) 集成开发环境测试装置、方法及系统
CN107015841B (zh) 一种程序编译的预处理方法及程序编译设备
CN102222012A (zh) 针对外部数据源的静态类型检查
CN105404794B (zh) Java应用软件的保护方法和装置
US20140229921A1 (en) Method and System for Computer Assisted Hot-Tracing Mechanism
US10664377B2 (en) Automation of software verification
CN102859489A (zh) 可恢复的方法
CN106557351A (zh) 嵌入式应用程序的数据处理方法及装置
CN107545182A (zh) 一种ios应用中绕过函数调用链检测的方法及系统
CN106371997A (zh) 一种代码检查方法及装置
CN102968259B (zh) 执行程序的方法及装置
CN107665167A (zh) 程序调试方法、装置及程序开发设备
CN104199713A (zh) 一种嵌入式Linux操作系统裁剪定制方法
US8683494B1 (en) Constructing event sequences in event-driven programs

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180420