CN106155893A - 判断应用程序测试覆盖范围的方法及程序测试设备 - Google Patents

判断应用程序测试覆盖范围的方法及程序测试设备 Download PDF

Info

Publication number
CN106155893A
CN106155893A CN201510157653.5A CN201510157653A CN106155893A CN 106155893 A CN106155893 A CN 106155893A CN 201510157653 A CN201510157653 A CN 201510157653A CN 106155893 A CN106155893 A CN 106155893A
Authority
CN
China
Prior art keywords
node
section point
ast
text
information
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.)
Granted
Application number
CN201510157653.5A
Other languages
English (en)
Other versions
CN106155893B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201510157653.5A priority Critical patent/CN106155893B/zh
Publication of CN106155893A publication Critical patent/CN106155893A/zh
Application granted granted Critical
Publication of CN106155893B publication Critical patent/CN106155893B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开一种判断应用程序测试覆盖范围的方法及其设备,其中方法包括如下步骤:当对目标程序进行测试时,对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的AST文本;基于所述AST文本获取所述目标函数的起始位置信息;按照所述起始位置信息对所述目标程序进行插桩测试。采用本发明,可以提升对程序的测试效果以及测试效率。

Description

判断应用程序测试覆盖范围的方法及程序测试设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种判断应用程序测试覆盖范围的方法及程序测试设备。
背景技术
现如今,各种终端应用影响着人们的日常生活,为用户提供便利,因此对于终端应用的程序进行测试尤为重要。目前对于程序进行测试的过程是通过人为手动进行测试,然而人为手动测试容易造成对某段代码的重复测试或者所进行的测试未覆盖到某段代码,降低了对程序的测试效果以及测试效率,进而对后续的程序开发造成了影响。
发明内容
本发明实施例提供一种判断应用程序测试覆盖范围的方法及程序测试设备,可以提升对程序的测试效果以及测试效率。
本发明实施例第一方面提供了一种判断应用程序测试覆盖范围的方法,可包括:
当对目标程序进行测试时,对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的抽象语法树(Abstract Syntax Tree,AST)文本;
基于所述AST文本获取所述目标函数的起始位置信息;
按照所述起始位置信息对所述目标程序进行插桩测试。
本发明实施例第二方面提供了一种程序测试设备,可包括:
文本生成单元,用于当对目标程序进行测试时,对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的AST文本;
信息获取单元,用于基于所述AST文本获取所述目标函数的起始位置信息;
程序测试单元,用于按照所述起始位置信息对所述目标程序进行插桩测试。
在本发明实施例中,当需要对目标程序进行测试时,通过对目标程序中的目标函数进行预处理,并在预处理后生成目标函数对应的AST文本,可以基于AST文本获取目标函数的起始位置信息,最终按照起始位置信息对目标程序进行插桩测试。实现了对目标程序的自动测试,通过基于预先生成的AST文本获取目标函数的起始位置信息,保证了对程序进行覆盖测试的全面性,避免了对后续的程序开发的影响,提升了对程序的测试效果和测试效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种判断应用程序测试覆盖范围的方法的流程示意图;
图2是本发明实施例提供的另一种判断应用程序测试覆盖范围的方法的流程示意图;
图3是本发明实施例提供的又一种判断应用程序测试覆盖范围的方法的流程示意图;
图4是本发明实施例提供的一种程序测试设备的结构示意图;
图5是本发明实施例提供的一种信息获取单元的结构示意图;
图6是本发明实施例提供的另一种信息获取单元的结构示意图;
图7是本发明实施例提供的另一种程序测试设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的判断应用程序测试覆盖范围的方法可以应用于对系统平台的应用程序进行插桩测试的场景,例如:对于针对IOS系统平台、Android系统平台等,当对目标程序进行测试时,程序测试设备可以对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的AST文本,所述程序测试设备基于所述AST文本获取所述目标函数的起始位置信息,所述程序测试设备按照所述起始位置信息对所述目标程序进行插桩测试的场景等。实现了对目标程序的自动测试,通过基于预先生成的AST文本获取目标函数的起始位置信息,保证了对程序进行覆盖测试的全面性,避免了对后续的程序开发的影响,提升了对程序的测试效果和测试效率。
本发明实施例涉及的程序测试设备可以包括:平板电脑、智能手机、笔记本电脑、掌上电脑、个人计算机以及移动互联网设备(MID)等具备程序处理功能的终端设备。
下面将结合附图1-附图3,对本发明实施例提供的判断应用程序测试覆盖范围的方法进行详细介绍。
请参见图1,为本发明实施例提供了一种判断应用程序测试覆盖范围的方法的流程示意图。如图1所示,本发明实施例的所述方法可以包括以下步骤S101-步骤S103。
S101,当对目标程序进行测试时,对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的AST文本;
具体的,当需要对目标程序进行测试时,程序测试设备可以对所述目标程序中的目标函数进行预处理以生成所述目标函数对应的AST文本,优选的,所述程序测试设备可以调用Clang工具对所述目标函数生成所述AST文本,Clang是一个C语言、C++、Objective-C、Objective-C++语言的轻量级编译器,所述预处理的过程可以包括所述程序测试设备对所述目标函数进行预编译处理,并对预编译处理后的目标函数进行翻译,最终生成所述目标函数对应的AST文本。
可以理解的是,所述AST包括所述目标函数对应的第一节点以及所述目标函数中函数体对应的第二节点,所述目标函数中可以包含一个或多个函数体,因此,针对多个函数体,每个函数体都分别对应有一个第二节点。以下的第二节点均表示所检测的当前节点对应的第二节点。
S102,基于所述AST文本获取所述目标函数的起始位置信息;
具体的,针对本发明实施例的第一种实现方式,当检测到当前节点为第二节点,且所述当前节点的父节点为所述第一节点时,所述程序测试设备解析所述AST文本获取所述第一节点的节点信息和所述第二节点的节点信息,并根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
针对本发明实施例的第二种实现方式,当检测到当前节点为第一节点时,所述程序测试设备解析所述AST文本获取所述第一节点的节点信息,当检测到当前节点为第二节点时,所述程序测试设备解析所述AST文本获取所述第二节点的节点信息,所述程序测试设备根据最终所收集的所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
可以理解的是,所述程序测试设备中预先存储有函数和函数体在所述AST文本中所对应的第一节点的关键词和第二节点的关键词,例如:针对Objective-C语言,其函数对应的第一节点的关键词为ObjectCMethodDecl,其函数体对应的第二节点的关键词为CompoundStmt;针对C语言,其函数对应的第一节点的关键词为FunctionDecl,其函数体对应的第二节点的关键词为CompoundStmt等,因此AST文本的表达方式通常为:
|-ObjectCMethodDecl 0x102873ee0<line:22:1,line:39:1>-……
||-……
||-……
||-……
||`-CompoundStmt 0x102880ae8<line:23:1,line:39:1>
|||……
|||`……
……
以上仅举例针对Objective-C语言中的一种AST文本的表达方式,其中每个节点的下一行相同缩进的起始位置标识若为“|-”或“-”,则表示下一行所表示的节点为当前节点的子节点,并且“-”表示下一行所表示的节点为当前节点的最后一个子节点。
针对第一种实现方式,其具体采用的是堆栈的方式进行起始位置信息的获取,因此所述程序测试设备需先对节点在AST文本中的位置进行确认,所述程序测试设备可以按照所述第一节点和所述第二节点的排列顺序,依次获取所述AST文本中每一行所表示的节点,判断所述第二节点的节点属性,所述节点属性具体可以包括所述第二节点为上一行所表示的节点的子节点,或者所述第二节点为上一行所表示的节点的兄弟节点中的任一种,由于所述AST文本中的第一行通常为目标函数对应的第一节点,因此将第一行所表示的第一节点直接入栈,从第二行起将依次入栈对所述第二节点的节点属性进行判断,当检测到当前行所表示的第二节点为上一行所表示的节点的子节点或者检测到当前行所表示的第二节点为上一行所表示的节点的兄弟节点,则确定所述第二节点的起始位置标识,当然,所述AST文本中除了第一节点和第二节点,还包括其它声明类节点,例如:TypedefDecl、ObjcInterfaceDecl、ObjcProtocolDecl、ParmVarDecl等,其也作为起始位置标识确定的一些节点,但本发明实施例不具体关注这些节点。因此,当检测到当前行所表示的当前节点为第二节点,且所述当前节点的父节点为所述第一节点时,所述程序测试设备解析所述AST文本分别获取所述第一节点的节点信息和所述第二节点的节点信息,所述程序测试设备根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
针对第二种实现方式,其具体采用的是关键字提取的方式进行起始位置信息的获取,所述程序测试设备可以按照所述第一节点和所述第二节点的排列顺序,依次读取一行所表示的当前节点,并获取当前节点的关键字,若关键字为“ObjectCMethodDecl”,则说明所述当前节点为第一节点,所述程序测试设备可以解析所述AST文本获取所述第一节点的节点信息;若关键字为“CompoundStmt”,则说明所述当前节点为第二节点,所述程序测试设备可以解析所述AST文本获取所述第二节点的节点信息,需要说明的是,由于在第二节点所表示的函数体中仍可以出现其它的函数体,而本发明实施例所获取的第二节点的节点信息仅限于父节点为第一节点,且位于第一节点下的第一个第二节点,因此可以通过设置一预设函数标识,当检测到当前节点为第一节点时,所述程序测试设备可以将预设函数标识的当前数值从默认数值设置为启动数值,例如:默认数值为“0”,启动数值为“1”,从默认数值设置为启动数值的作用为表示当前已经找到目标函数开始的位置,接下来期望的关键字为“CompoundStmt”;而当检测到当前节点为第二节点时,则需先判断所述预设函数标识的当前数值是否为启动数值,若是,则将所述预设函数标识的当前数值从启动数值设置为默认数值,从启动数值设置为默认数值的作用为表示当前已经找到第一个函数体开始的位置,接下来无需在查找其它剩余函数体开始的位置,即表示为接下来将开始检测新的函数开始的位置。所述程序测试设备根据所收集的所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
需要说明的是,所述第一节点的节点信息具体包括所述第一节点的函数名称、起始位置标识所指示的起始位置坐标等,所述第二节点的节点信息具体包括所述第二节点的起始位置标识所指示的起始位置坐标等。优选的,所述程序测试设备还可以将检测过的节点再依次放入节点路径栈中,同时所述程序测试设备还可以获取所述函数的结束位置信息以及函数体的结束位置信息,可以便于测试人员对所述目标函数的测试结果进行分析以及进行评价,保证测试的效果以及有效性。
S103,按照所述起始位置信息对所述目标程序进行插桩测试;
具体的,所述程序测试设备按照所述起始位置信息对所述目标程序进行插桩测试。
在本发明实施例中,当需要对目标程序进行测试时,通过对目标程序中的目标函数进行预处理,并在预处理后生成目标函数对应的AST文本,可以基于AST文本获取目标函数的起始位置信息,最终按照起始位置信息对目标程序进行插桩测试。实现了对目标程序的自动测试,通过基于预先生成的AST文本获取目标函数的起始位置信息,保证了对程序进行覆盖测试的全面性,避免了对后续的程序开发的影响,提升了对程序的测试效果和测试效率。
请参见图2,为本发明实施例提供了另一种判断应用程序测试覆盖范围的方法的流程示意图。如图2所示,本发明实施例的所述方法用于说明上述第一种实现方式的执行过程,可以包括以下步骤S201-步骤S206。
S201,当对目标程序进行测试时,对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的AST文本;
S202,按照所述第一节点和所述第二节点的排列顺序,判断所述第二节点的节点属性;
S203,根据所述节点属性确定所述第二节点的起始位置标识;
具体的,所述程序测试设备中预先存储有函数和函数体在所述AST文本中所对应的第一节点的关键词和第二节点的关键词,例如:针对Objective-C语言,其函数对应的第一节点的关键词为ObjectCMethodDecl,其函数体对应的第二节点的关键词为CompoundStmt;针对C语言,其函数对应的第一节点的关键词为FunctionDecl,其函数体对应的第二节点的关键词为CompoundStmt等,因此AST文本的表达方式通常为:
|-ObjectCMethodDecl 0x102873ee0<line:22:1,line:39:1>-……
||-……
||-……
||-……
||`-CompoundStmt 0x102880ae8<line:23:1,line:39:1>
|||……
|||`……
……
以上仅举例针对Objective-C语言中的一种AST文本的表达方式,其中每个节点的下一行相同缩进的起始位置标识若为“|-”或“-”,则表示下一行所表示的节点为当前节点的子节点,并且“-”表示下一行所表示的节点为当前节点的最后一个子节点。
本发明实施例具体采用的是堆栈的方式进行起始位置信息的获取,因此所述程序测试设备需先对节点在AST文本中的位置进行确认,所述程序测试设备可以按照所述第一节点和所述第二节点的排列顺序,依次获取所述AST文本中每一行所表示的节点,判断所述第二节点的节点属性,所述节点属性具体可以包括所述第二节点为上一行所表示的节点的子节点,或者所述第二节点为上一行所表示的节点的兄弟节点中的任一种,由于所述AST文本中的第一行通常为目标函数对应的第一节点,因此将第一行所表示的第一节点直接入栈,从第二行起将依次入栈对所述第二节点的节点属性进行判断,当检测到当前行所表示的第二节点为上一行所表示的节点的子节点或者检测到当前行所表示的第二节点为上一行所表示的节点的兄弟节点,则确定所述第二节点的起始位置标识,当然,所述AST文本中除了第一节点和第二节点,还包括其它声明类节点,例如:TypedefDecl、ObjcInterfaceDecl、ObjcProtocolDecl、ParmVarDecl等,其也作为起始位置标识确定的一些节点,但本发明实施例不具体关注这些节点。
S204,当检测到当前节点为第二节点,且所述当前节点的父节点为所述第一节点时,解析所述AST文本获取所述第一节点的节点信息和所述第二节点的节点信息;
S205,根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息;
具体的,当检测到当前行所表示的当前节点为第二节点,且所述当前节点的父节点为所述第一节点时,所述程序测试设备解析所述AST文本分别获取所述第一节点的节点信息和所述第二节点的节点信息,所述程序测试设备根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
需要说明的是,所述第一节点的节点信息具体包括所述第一节点的函数名称、起始位置标识所指示的起始位置坐标等,所述第二节点的节点信息具体包括所述第二节点的起始位置标识所指示的起始位置坐标等。优选的,所述程序测试设备还可以将检测过的节点再依次放入节点路径栈中,同时所述程序测试设备还可以获取所述函数的结束位置信息以及函数体的结束位置信息,可以便于测试人员对所述目标函数的测试结果进行分析以及进行评价,保证测试的效果以及有效性。
S206,按照所述起始位置信息对所述目标程序进行插桩测试。
其中,本发明实施例的步骤S201和步骤S206可以分别参见图1所示实施例的步骤S101和步骤S103,在此不进行赘述。
在本发明实施例中,当需要对目标程序进行测试时,通过对目标程序中的目标函数进行预处理,并在预处理后生成目标函数对应的AST文本,可以基于AST文本获取目标函数的起始位置信息,最终按照起始位置信息对目标程序进行插桩测试。通过堆栈的方式实现了对目标程序的自动测试;通过基于预先生成的AST文本获取目标函数的起始位置信息,保证了对程序进行覆盖测试的全面性,避免了对后续的程序开发的影响,提升了对程序的测试效果和测试效率;通过将检测过的节点再依次放入节点路径栈中,并同时获取函数的结束位置信息以及函数体的结束位置信息,可以便于测试人员对目标函数的测试结果进行分析以及进行评价,保证测试的效果以及有效性。
请参见图3,为本发明实施例提供了又一种判断应用程序测试覆盖范围的方法的流程示意图。如图3所示,本发明实施例的所述方法用于说明上述第二种实现方式的执行过程,可以包括以下步骤S301-步骤S308。
S301,当对目标程序进行测试时,对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的抽象语法树AST文本;
需要说明的是,当检测到当前节点为第一节点时,将执行步骤S302-步骤S303;当检测到当前节点为第二节点时,将执行步骤S304-步骤S306。
S302,当检测到当前节点为第一节点时,将预设函数标识的当前数值从默认数值设置为启动数值;
S303,解析所述AST文本获取所述第一节点的节点信息;
具体的,所述程序测试设备中预先存储有函数和函数体在所述AST文本中所对应的第一节点的关键词和第二节点的关键词,例如:针对Objective-C语言,其函数对应的第一节点的关键词为ObjectCMethodDecl,其函数体对应的第二节点的关键词为CompoundStmt;针对C语言,其函数对应的第一节点的关键词为FunctionDecl,其函数体对应的第二节点的关键词为CompoundStmt等,因此AST文本的表达方式通常为:
|-ObjectCMethodDecl 0x102873ee0<line:22:1,line:39:1>-……
||-……
||-……
||-……
||`-CompoundStmt 0x102880ae8<line:23:1,line:39:1>
|||……
|||`……
……
以上仅举例针对Objective-C语言中的一种AST文本的表达方式,其中每个节点的下一行相同缩进的起始位置标识若为“|-”或“-”,则表示下一行所表示的节点为当前节点的子节点,并且“-”表示下一行所表示的节点为当前节点的最后一个子节点。
本发明实施例具体采用的是关键字提取的方式进行起始位置信息的获取,所述程序测试设备可以按照所述第一节点和所述第二节点的排列顺序,依次读取一行所表示的当前节点,并获取当前节点的关键字,若关键字为“ObjectCMethodDecl”,则说明所述当前节点为第一节点,所述程序测试设备可以解析所述AST文本获取所述第一节点的节点信息。需要说明的是,由于在第二节点所表示的函数体中仍可以出现其它的函数体,而本发明实施例所获取的第二节点的节点信息仅限于父节点为第一节点,且位于第一节点下的第一个第二节点,因此可以通过设置一预设函数标识,当检测到当前节点为第一节点时,所述程序测试设备可以将预设函数标识的当前数值从默认数值设置为启动数值,例如:默认数值为“0”,启动数值为“1”,从默认数值设置为启动数值的作用为表示当前已经找到目标函数开始的位置,接下来期望的关键字为“CompoundStmt”。
需要说明的是,所述第一节点的节点信息具体包括所述第一节点的函数名称、起始位置标识所指示的起始位置坐标等。优选的,所述程序测试设备还可以将检测过的节点再依次放入节点路径栈中,同时所述程序测试设备还可以获取所述函数的结束位置信息以及函数体的结束位置信息,可以便于测试人员对所述目标函数的测试结果进行分析以及进行评价,保证测试的效果以及有效性。
S304,当检测到当前节点为第二节点时,判断预设函数标识的当前数值是否为启动数值;
S305,将所述预设函数标识的当前数值从启动数值设置为默认数值;
S306,解析所述AST文本获取所述第二节点的节点信息;
具体实现中,若关键字为“CompoundStmt”,则说明所述当前节点为第二节点,所述程序测试设备可以解析所述AST文本获取所述第二节点的节点信息,需要说明的是,当检测到当前节点为第二节点时,则需先判断所述预设函数标识的当前数值是否为启动数值,若是,则将所述预设函数标识的当前数值从启动数值设置为默认数值,从启动数值设置为默认数值的作用为表示当前已经找到第一个函数体开始的位置,接下来无需在查找其它剩余函数体开始的位置,即表示为接下来将开始检测新的函数开始的位置。
需要说明的是,所述第二节点的节点信息具体包括所述第二节点的起始位置标识所指示的起始位置坐标等。优选的,所述程序测试设备还可以将检测过的节点再依次放入节点路径栈中,同时所述程序测试设备还可以获取所述函数的结束位置信息以及函数体的结束位置信息,可以便于测试人员对所述目标函数的测试结果进行分析以及进行评价,保证测试的效果以及有效性。
S307,根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息;
具体的,所述程序测试设备根据所收集的所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
S308,按照所述起始位置信息对所述目标程序进行插桩测试。
其中,本发明实施例的步骤S301和步骤S308可以分别参见图1所示实施例的步骤S101和步骤S103,在此不进行赘述。
在本发明实施例中,当需要对目标程序进行测试时,通过对目标程序中的目标函数进行预处理,并在预处理后生成目标函数对应的AST文本,可以基于AST文本获取目标函数的起始位置信息,最终按照起始位置信息对目标程序进行插桩测试。通过关键字提取的方式实现了对目标程序的自动测试;通过基于预先生成的AST文本获取目标函数的起始位置信息,保证了对程序进行覆盖测试的全面性,避免了对后续的程序开发的影响,提升了对程序的测试效果和测试效率;通过将检测过的节点再依次放入节点路径栈中,并同时获取函数的结束位置信息以及函数体的结束位置信息,可以便于测试人员对目标函数的测试结果进行分析以及进行评价,保证测试的效果以及有效性。
下面将结合附图4-附图6,对本发明实施例提供的程序测试设备进行详细介绍。需要说明的是,附图4-附图6所示的程序测试设备,用于执行本发明图1-图3所示实施例的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明图1-图3所示的实施例。
请参见图3,为本发明实施例提供了一种程序测试设备的结构示意图。如图3所示,本发明实施例的所述程序测试设备1可以包括:文本生成单元11、信息获取单元12和程序测试单元13。
文本生成单元11,用于当对目标程序进行测试时,对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的AST文本;
具体实现中,当需要对目标程序进行测试时,所述文本生成单元11可以对所述目标程序中的目标函数进行预处理以生成所述目标函数对应的AST文本,优选的,所述文本生成单元11可以调用Clang工具对所述目标函数生成所述AST文本,Clang是一个C语言、C++、Objective-C、Objective-C++语言的轻量级编译器,所述预处理的过程可以包括所述文本生成单元11对所述目标函数进行预编译处理,并对预编译处理后的目标函数进行翻译,最终生成所述目标函数对应的AST文本。
可以理解的是,所述AST包括所述目标函数对应的第一节点以及所述目标函数中函数体对应的第二节点,所述目标函数中可以包含一个或多个函数体,因此,针对多个函数体,每个函数体都分别对应有一个第二节点。以下的第二节点均表示所检测的当前节点对应的第二节点。
信息获取单元12,用于基于所述AST文本获取所述目标函数的起始位置信息;
具体实现中,针对本发明实施例的第一种实现方式,当检测到当前节点为第二节点,且所述当前节点的父节点为所述第一节点时,所述信息获取单元12解析所述AST文本获取所述第一节点的节点信息和所述第二节点的节点信息,并根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
针对本发明实施例的第二种实现方式,当检测到当前节点为第一节点时,所述信息获取单元12解析所述AST文本获取所述第一节点的节点信息,当检测到当前节点为第二节点时,所述信息获取单元12解析所述AST文本获取所述第二节点的节点信息,所述信息获取单元12根据最终所收集的所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
具体的,请一并参见图5,为本发明实施例提供了一种信息获取单元的结构示意图。如图5所示,本发明实施例的所述信息获取单元12用于执行上述第一种实现方式的过程,可以包括:
属性判断子单元121,用于按照所述第一节点和所述第二节点的排列顺序,判断所述第二节点的节点属性;
标识确定子单元122,用于根据所述节点属性确定所述第二节点的起始位置标识;
具体实现中,所述程序测试设备1中预先存储有函数和函数体在所述AST文本中所对应的第一节点的关键词和第二节点的关键词,例如:针对Objective-C语言,其函数对应的第一节点的关键词为ObjectCMethodDecl,其函数体对应的第二节点的关键词为CompoundStmt;针对C语言,其函数对应的第一节点的关键词为FunctionDecl,其函数体对应的第二节点的关键词为CompoundStmt等,因此AST文本的表达方式通常为:
|-ObjectCMethodDecl 0x102873ee0<line:22:1,line:39:1>-……
||-……
||-……
||-……
||`-CompoundStmt 0x102880ae8<line:23:1,line:39:1>
|||……
|||`……
……
以上仅举例针对Objective-C语言中的一种AST文本的表达方式,其中每个节点的下一行相同缩进的起始位置标识若为“|-”或“-”,则表示下一行所表示的节点为当前节点的子节点,并且“-”表示下一行所表示的节点为当前节点的最后一个子节点。
本发明实施例具体采用的是堆栈的方式进行起始位置信息的获取,因此所述信息获取单元12需先对节点在AST文本中的位置进行确认,所述属性判断子单元121可以按照所述第一节点和所述第二节点的排列顺序,依次获取所述AST文本中每一行所表示的节点,判断所述第二节点的节点属性,所述节点属性具体可以包括所述第二节点为上一行所表示的节点的子节点,或者所述第二节点为上一行所表示的节点的兄弟节点中的任一种,由于所述AST文本中的第一行通常为目标函数对应的第一节点,因此将第一行所表示的第一节点直接入栈,从第二行起将依次入栈对所述第二节点的节点属性进行判断,当检测到当前行所表示的第二节点为上一行所表示的节点的子节点或者检测到当前行所表示的第二节点为上一行所表示的节点的兄弟节点,则所属标识确定子单元122确定所述第二节点的起始位置标识,当然,所述AST文本中除了第一节点和第二节点,还包括其它声明类节点,例如:TypedefDecl、ObjcInterfaceDecl、ObjcProtocolDecl、ParmVarDecl等,其也作为起始位置标识确定的一些节点,但本发明实施例不具体关注这些节点。
信息解析子单元123,用于当检测到当前节点为第二节点,且所述当前节点的父节点为所述第一节点时,解析所述AST文本获取所述第一节点的节点信息和所述第二节点的节点信息;
第一信息生成子单元124,用于根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息;
具体实现中,当检测到当前行所表示的当前节点为第二节点,且所述当前节点的父节点为所述第一节点时,所述信息解析子单元123解析所述AST文本分别获取所述第一节点的节点信息和所述第二节点的节点信息,所述第一信息生成子单元124根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
需要说明的是,所述第一节点的节点信息具体包括所述第一节点的函数名称、起始位置标识所指示的起始位置坐标等,所述第二节点的节点信息具体包括所述第二节点的起始位置标识所指示的起始位置坐标等。优选的,所述程序测试设备1还可以将检测过的节点再依次放入节点路径栈中,同时所述程序测试设备1还可以获取所述函数的结束位置信息以及函数体的结束位置信息,可以便于测试人员对所述目标函数的测试结果进行分析以及进行评价,保证测试的效果以及有效性。
具体的,请一并参见图6,为本发明实施例提供了另一种信息获取单元的结构示意图。如图6所示,本发明实施例的所述信息获取单元12用于执行上述第二种实现方式的过程,需要说明的是,当检测到当前节点为第一节点时,将通知数值设置子单元126和信息获取子单元127执行相应操作;当检测到当前节点为第二节点时,将通知判断单元125、数值设置子单元126、信息获取子单元127执行相应操作。所述信息获取单元12可以包括:
数值设置子单元126,用于当检测到当前节点为第一节点时,将预设函数标识的当前数值从默认数值设置为启动数值;
信息获取子单元127,用于解析所述AST文本获取所述第一节点的节点信息;
具体实现中,所述程序测试设备1中预先存储有函数和函数体在所述AST文本中所对应的第一节点的关键词和第二节点的关键词,例如:针对Objective-C语言,其函数对应的第一节点的关键词为ObjectCMethodDecl,其函数体对应的第二节点的关键词为CompoundStmt;针对C语言,其函数对应的第一节点的关键词为FunctionDecl,其函数体对应的第二节点的关键词为CompoundStmt等,因此AST文本的表达方式通常为:
|-ObjectCMethodDecl 0x102873ee0<line:22:1,line:39:1>-……
||-……
||-……
||-……
||`-CompoundStmt 0x102880ae8<line:23:1,line:39:1>
|||……
|||`……
……
以上仅举例针对Objective-C语言中的一种AST文本的表达方式,其中每个节点的下一行相同缩进的起始位置标识若为“|-”或“-”,则表示下一行所表示的节点为当前节点的子节点,并且“-”表示下一行所表示的节点为当前节点的最后一个子节点。
本发明实施例具体采用的是关键字提取的方式进行起始位置信息的获取,所述信息获取单元12可以按照所述第一节点和所述第二节点的排列顺序,依次读取一行所表示的当前节点,并获取当前节点的关键字,若关键字为“ObjectCMethodDecl”,则说明所述当前节点为第一节点,所述信息获取子单元127可以解析所述AST文本获取所述第一节点的节点信息。需要说明的是,由于在第二节点所表示的函数体中仍可以出现其它的函数体,而本发明实施例所获取的第二节点的节点信息仅限于父节点为第一节点,且位于第一节点下的第一个第二节点,因此可以通过设置一预设函数标识,当检测到当前节点为第一节点时,所述数值设置子单元126可以将预设函数标识的当前数值从默认数值设置为启动数值,例如:默认数值为“0”,启动数值为“1”,从默认数值设置为启动数值的作用为表示当前已经找到目标函数开始的位置,接下来期望的关键字为“CompoundStmt”。
需要说明的是,所述第一节点的节点信息具体包括所述第一节点的函数名称、起始位置标识所指示的起始位置坐标等。优选的,所述程序测试设备1还可以将检测过的节点再依次放入节点路径栈中,同时所述程序测试设备1还可以获取所述函数的结束位置信息以及函数体的结束位置信息,可以便于测试人员对所述目标函数的测试结果进行分析以及进行评价,保证测试的效果以及有效性。
可选的,所述信息获取单元12可以包括:
判断单元125,用于当检测到当前节点为第二节点时,判断预设函数标识的当前数值是否为启动数值;
所述数值设置子单元126,还用于若所述判断单元125判断预设函数标识的当前数值是否为启动数值的判断结果为是,则将所述预设函数标识的当前数值从启动数值设置为默认数值;
所述信息获取子单元127,还用于解析所述AST文本获取所述第二节点的节点信息;
具体实现中,若关键字为“CompoundStmt”,则说明所述当前节点为第二节点,所述信息获取子单元127可以解析所述AST文本获取所述第二节点的节点信息,需要说明的是,当检测到当前节点为第二节点时,所述判断单元125需先判断所述预设函数标识的当前数值是否为启动数值,若所述判断单元125判断预设函数标识的当前数值是否为启动数值的判断结果为是,则所述数值设置子单元126将所述预设函数标识的当前数值从启动数值设置为默认数值,从启动数值设置为默认数值的作用为表示当前已经找到第一个函数体开始的位置,接下来无需在查找其它剩余函数体开始的位置,即表示为接下来将开始检测新的函数开始的位置。
需要说明的是,所述第二节点的节点信息具体包括所述第二节点的起始位置标识所指示的起始位置坐标等。优选的,所述程序测试设备1还可以将检测过的节点再依次放入节点路径栈中,同时所述程序测试设备1还可以获取所述函数的结束位置信息以及函数体的结束位置信息,可以便于测试人员对所述目标函数的测试结果进行分析以及进行评价,保证测试的效果以及有效性。
第二信息生成子单元128,用于根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息;
具体实现中,所述第二信息生成子单元128根据所述信息获取子单元127所收集的所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
程序测试单元13,用于按照所述起始位置信息对所述目标程序进行插桩测试。
具体实现中,所述程序测试单元13按照所述起始位置信息对所述目标程序进行插桩测试。
在本发明实施例中,当需要对目标程序进行测试时,通过对目标程序中的目标函数进行预处理,并在预处理后生成目标函数对应的AST文本,可以基于AST文本获取目标函数的起始位置信息,最终按照起始位置信息对目标程序进行插桩测试。通过堆栈的方式或关键字提取的方式实现了对目标程序的自动测试;通过基于预先生成的AST文本获取目标函数的起始位置信息,保证了对程序进行覆盖测试的全面性,避免了对后续的程序开发的影响,提升了对程序的测试效果和测试效率;通过将检测过的节点再依次放入节点路径栈中,并同时获取函数的结束位置信息以及函数体的结束位置信息,可以便于测试人员对目标函数的测试结果进行分析以及进行评价,保证测试的效果以及有效性。
请参见图7,为本发明实施例提供了另一种程序测试设备的结构示意图。如图7所示,所述程序测试设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图7所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及测试应用程序。
在图7所示的程序测试设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的测试应用程序,并具体执行以下操作:
当对目标程序进行测试时,对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的AST文本;
基于所述AST文本获取所述目标函数的起始位置信息;
按照所述起始位置信息对所述目标程序进行插桩测试。
在一个实施例中,所述处理器1001在执行对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的AST文本时,具体执行以下操作:
对所述目标函数进行预编译处理,并对预编译处理后的目标函数进行翻译,以生成所述目标函数对应的AST文本。
在一个实施例中,所述AST包括所述目标函数对应的第一节点以及所述目标函数中函数体对应的第二节点;
所述处理器1001在执行基于所述AST文本获取所述目标函数的起始位置信息时,具体执行以下操作:
当检测到当前节点为第二节点,且所述当前节点的父节点为所述第一节点时,解析所述AST文本获取所述第一节点的节点信息和所述第二节点的节点信息;
根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
所述处理器1001在当检测到当前节点为第二节点,且所述当前节点的父节点为所述第一节点之前,还执行以下操作:
按照所述第一节点和所述第二节点的排列顺序,判断所述第二节点的节点属性;
根据所述节点属性确定所述第二节点的起始位置标识。
在一个实施例中,所述AST包括所述目标函数对应的第一节点以及所述目标函数中函数体对应的第二节点;
所述处理器1001在执行基于所述AST文本获取所述目标函数的起始位置信息时,具体执行以下操作:
当检测到当前节点为第一节点时,解析所述AST文本获取所述第一节点的节点信息;
当检测到当前节点为第二节点时,解析所述AST文本获取所述第二节点的节点信息;
根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
所述处理器1001在执行解析所述AST文本获取所述第一节点的节点信息之前,还执行以下操作:
将预设函数标识的当前数值从默认数值设置为启动数值;
所述处理器1001在执行解析所述AST文本获取所述第二节点的节点信息之前,还执行以下操作:
判断预设函数标识的当前数值是否为启动数值;
若是,则将所述预设函数标识的当前数值从启动数值设置为默认数值。
在本发明实施例中,当需要对目标程序进行测试时,通过对目标程序中的目标函数进行预处理,并在预处理后生成目标函数对应的AST文本,可以基于AST文本获取目标函数的起始位置信息,最终按照起始位置信息对目标程序进行插桩测试。通过堆栈的方式或关键字提取的方式实现了对目标程序的自动测试;通过基于预先生成的AST文本获取目标函数的起始位置信息,保证了对程序进行覆盖测试的全面性,避免了对后续的程序开发的影响,提升了对程序的测试效果和测试效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (12)

1.一种判断应用程序测试覆盖范围的方法,其特征在于,包括:
当对目标程序进行测试时,对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的抽象语法树AST文本;
基于所述AST文本获取所述目标函数的起始位置信息;
按照所述起始位置信息对所述目标程序进行插桩测试。
2.根据权利要求1所述的方法,其特征在于,所述对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的AST文本,包括:
对所述目标函数进行预编译处理,并对预编译处理后的目标函数进行翻译,以生成所述目标函数对应的AST文本。
3.根据权利要求1或2所述的方法,其特征在于,所述AST包括所述目标函数对应的第一节点以及所述目标函数中函数体对应的第二节点;
所述基于所述AST文本获取所述目标函数的起始位置信息,包括:
当检测到当前节点为第二节点,且所述当前节点的父节点为所述第一节点时,解析所述AST文本获取所述第一节点的节点信息和所述第二节点的节点信息;
根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
4.根据权利要求3所述的方法,其特征在于,所述当检测到当前节点为第二节点,且所述当前节点的父节点为所述第一节点之前,还包括:
按照所述第一节点和所述第二节点的排列顺序,判断所述第二节点的节点属性;
根据所述节点属性确定所述第二节点的起始位置标识。
5.根据权利要求1或2所述的方法,其特征在于,所述AST包括所述目标函数对应的第一节点以及所述目标函数中函数体对应的第二节点;
所述基于所述AST文本获取所述目标函数的起始位置信息,包括:
当检测到当前节点为第一节点时,解析所述AST文本获取所述第一节点的节点信息;
当检测到当前节点为第二节点时,解析所述AST文本获取所述第二节点的节点信息;
根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
6.根据权利要求5所述的方法,其特征在于,所述解析所述AST文本获取所述第一节点的节点信息之前,还包括:
将预设函数标识的当前数值从默认数值设置为启动数值;
所述解析所述AST文本获取所述第二节点的节点信息之前,还包括:
判断预设函数标识的当前数值是否为启动数值;
若是,则将所述预设函数标识的当前数值从启动数值设置为默认数值。
7.一种程序测试设备,其特征在于,包括:
文本生成单元,用于当对目标程序进行测试时,对所述目标程序中的目标函数进行预处理,并在预处理后生成所述目标函数对应的AST文本;
信息获取单元,用于基于所述AST文本获取所述目标函数的起始位置信息;
程序测试单元,用于按照所述起始位置信息对所述目标程序进行插桩测试。
8.根据权利要求7所述的设备,其特征在于,所述文本生成单元具体用于当对目标程序进行测试时,对所述目标函数进行预编译处理,并对预编译处理后的目标函数进行翻译,以生成所述目标函数对应的AST文本。
9.根据权利要求7或8所述的设备,其特征在于,所述AST包括所述目标函数对应的第一节点以及所述目标函数中函数体对应的第二节点;
所述信息获取单元包括:
信息解析子单元,用于当检测到当前节点为第二节点,且所述当前节点的父节点为所述第一节点时,解析所述AST文本获取所述第一节点的节点信息和所述第二节点的节点信息;
第一信息生成子单元,用于根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
10.根据权利要求9所述的设备,其特征在于,所述信息获取单元还包括:
属性判断子单元,用于按照所述第一节点和所述第二节点的排列顺序,判断所述第二节点的节点属性;
标识确定子单元,用于根据所述节点属性确定所述第二节点的起始位置标识。
11.根据权利要求7或8所述的设备,其特征在于,所述AST包括所述目标函数对应的第一节点以及所述目标函数中函数体对应的第二节点;
所述信息获取单元包括:
信息获取子单元,用于当检测到当前节点为第一节点时,解析所述AST文本获取所述第一节点的节点信息;
所述信息获取子单元,还用于当检测到当前节点为第二节点时,解析所述AST文本获取所述第二节点的节点信息;
第二信息生成子单元,用于根据所述第一节点的节点信息和所述第二节点的节点信息生成所述目标函数的起始位置信息。
12.根据权利要求11所述的设备,其特征在于,所述信息获取单元还包括:
数值设置子单元,用于当检测到当前节点为第一节点时,将预设函数标识的当前数值从默认数值设置为启动数值;
判断单元,用于当检测到当前节点为第二节点时,判断预设函数标识的当前数值是否为启动数值;
所述数值设置子单元,还用于若所述判断单元判断预设函数标识的当前数值是否为启动数值的判断结果为是,则将所述预设函数标识的当前数值从启动数值设置为默认数值。
CN201510157653.5A 2015-04-03 2015-04-03 判断应用程序测试覆盖范围的方法及程序测试设备 Active CN106155893B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510157653.5A CN106155893B (zh) 2015-04-03 2015-04-03 判断应用程序测试覆盖范围的方法及程序测试设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510157653.5A CN106155893B (zh) 2015-04-03 2015-04-03 判断应用程序测试覆盖范围的方法及程序测试设备

Publications (2)

Publication Number Publication Date
CN106155893A true CN106155893A (zh) 2016-11-23
CN106155893B CN106155893B (zh) 2021-03-02

Family

ID=57338539

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510157653.5A Active CN106155893B (zh) 2015-04-03 2015-04-03 判断应用程序测试覆盖范围的方法及程序测试设备

Country Status (1)

Country Link
CN (1) CN106155893B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110008108A (zh) * 2018-11-12 2019-07-12 阿里巴巴集团控股有限公司 回归范围确定方法、装置、设备及计算机可读存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826256A (en) * 1991-10-22 1998-10-20 Lucent Technologies Inc. Apparatus and methods for source code discovery
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN101873323A (zh) * 2010-06-21 2010-10-27 南京邮电大学 基于程序切片技术的Web服务平台
CN101908006A (zh) * 2010-07-30 2010-12-08 北京理工大学 一种基于gcc抽象语法树的缓冲区溢出漏洞检测方法
US8087010B2 (en) * 2007-09-26 2011-12-27 International Business Machines Corporation Selective code generation optimization for an advanced dual-representation polyhedral loop transformation framework
CN102339252A (zh) * 2011-07-25 2012-02-01 大连理工大学 基于xml中间模型以及缺陷模式匹配的静态检测系统
CN103365774A (zh) * 2013-08-22 2013-10-23 北京航空航天大学 基于函数调用关系的瞬时错误检测方法
CN103778061A (zh) * 2014-01-17 2014-05-07 南京航空航天大学 数组越界错误的自动检测和校正方法
CN103927473A (zh) * 2013-01-16 2014-07-16 广东电网公司信息中心 检测移动智能终端的源代码安全的方法、装置及系统
WO2014158897A1 (en) * 2013-03-14 2014-10-02 Whitehat Security, Inc. Techniques for traversing representations of source code
US8881122B1 (en) * 2011-12-09 2014-11-04 Google Inc. Predicate matching library for complex program analysis
CN104462095A (zh) * 2013-09-13 2015-03-25 阿里巴巴集团控股有限公司 一种查询语句公共部分的提取方法及装置

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826256A (en) * 1991-10-22 1998-10-20 Lucent Technologies Inc. Apparatus and methods for source code discovery
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
US8087010B2 (en) * 2007-09-26 2011-12-27 International Business Machines Corporation Selective code generation optimization for an advanced dual-representation polyhedral loop transformation framework
CN101873323A (zh) * 2010-06-21 2010-10-27 南京邮电大学 基于程序切片技术的Web服务平台
CN101908006A (zh) * 2010-07-30 2010-12-08 北京理工大学 一种基于gcc抽象语法树的缓冲区溢出漏洞检测方法
CN102339252A (zh) * 2011-07-25 2012-02-01 大连理工大学 基于xml中间模型以及缺陷模式匹配的静态检测系统
US8881122B1 (en) * 2011-12-09 2014-11-04 Google Inc. Predicate matching library for complex program analysis
CN103927473A (zh) * 2013-01-16 2014-07-16 广东电网公司信息中心 检测移动智能终端的源代码安全的方法、装置及系统
WO2014158897A1 (en) * 2013-03-14 2014-10-02 Whitehat Security, Inc. Techniques for traversing representations of source code
CN103365774A (zh) * 2013-08-22 2013-10-23 北京航空航天大学 基于函数调用关系的瞬时错误检测方法
CN104462095A (zh) * 2013-09-13 2015-03-25 阿里巴巴集团控股有限公司 一种查询语句公共部分的提取方法及装置
CN103778061A (zh) * 2014-01-17 2014-05-07 南京航空航天大学 数组越界错误的自动检测和校正方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘春燕: "基于规则的C/C++代码静态检测方法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
王相懂 等: "基于GCC的抽象语法树对C++源程序结构的分析", 《计算机工程与应用》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110008108A (zh) * 2018-11-12 2019-07-12 阿里巴巴集团控股有限公司 回归范围确定方法、装置、设备及计算机可读存储介质
CN110008108B (zh) * 2018-11-12 2022-10-18 创新先进技术有限公司 回归范围确定方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN106155893B (zh) 2021-03-02

Similar Documents

Publication Publication Date Title
CN109346059B (zh) 一种方言语音的识别方法及电子设备
US20210027788A1 (en) Conversation interaction method, apparatus and computer readable storage medium
CN110427331B (zh) 基于接口测试工具自动生成性能测试脚本的方法
CN106875949B (zh) 一种语音识别的校正方法及装置
CN109325091B (zh) 兴趣点属性信息的更新方法、装置、设备及介质
CN109410664B (zh) 一种发音纠正方法及电子设备
CN105786797A (zh) 一种基于语音输入的信息处理方法及装置
CN105931644A (zh) 一种语音识别方法及移动终端
CN108305618B (zh) 语音获取及搜索方法、智能笔、搜索终端及存储介质
CN103916513A (zh) 在通信终端记录通话信息的方法和设备
CN111292751B (zh) 语义解析方法及装置、语音交互方法及装置、电子设备
CN108550054A (zh) 一种内容质量评估方法、装置、设备和介质
CN111368303A (zh) 一种PowerShell恶意脚本的检测方法及装置
CN114401431A (zh) 一种虚拟人讲解视频生成方法及相关装置
CN110111778B (zh) 一种语音处理方法、装置、存储介质及电子设备
CN116821290A (zh) 面向多任务对话的大语言模型训练方法和交互方法
CN112036843A (zh) 基于rpa及ai的流程元素定位方法、装置、设备和介质
CN106155893A (zh) 判断应用程序测试覆盖范围的方法及程序测试设备
CN106599312B (zh) 知识库的检验方法、装置及终端
CN112231234B (zh) 跨平台用户界面自动化测试方法、装置、设备和存储介质
CN113435217B (zh) 语言测试处理方法、装置及电子设备
US20190279623A1 (en) Method for speech recognition dictation and correction by spelling input, system and storage medium
CN103778210A (zh) 一种待分析文件的文件具体类型的判断方法及装置
CN115221047A (zh) 测试用例自动生成方法及电子设备
CN106155892A (zh) 判断应用程序测试覆盖范围的方法及程序测试设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant