CN112631904A - 函数调用信息的记录方法及设备 - Google Patents

函数调用信息的记录方法及设备 Download PDF

Info

Publication number
CN112631904A
CN112631904A CN202011503055.6A CN202011503055A CN112631904A CN 112631904 A CN112631904 A CN 112631904A CN 202011503055 A CN202011503055 A CN 202011503055A CN 112631904 A CN112631904 A CN 112631904A
Authority
CN
China
Prior art keywords
function
called
information
program
hook
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
Application number
CN202011503055.6A
Other languages
English (en)
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.)
Spreadtrum Communications Shanghai Co Ltd
Original Assignee
Spreadtrum Communications Shanghai 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 Spreadtrum Communications Shanghai Co Ltd filed Critical Spreadtrum Communications Shanghai Co Ltd
Priority to CN202011503055.6A priority Critical patent/CN112631904A/zh
Publication of CN112631904A publication Critical patent/CN112631904A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供一种函数调用信息的记录方法及设备,方法包括:确定待测试程序中被调用函数的函数信息,根据该函数信息生成钩子函数,并将生成的钩子函数插入被调用函数中,该钩子函数用于在待测试程序运行过程中记录被调用函数的调用信息,从而有助于在单元测试过程中基于被调用函数的调用信息来确定待测试程序是否准确执行。

Description

函数调用信息的记录方法及设备
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种函数调用信息的记录方法及设备。
背景技术
单元测试,是指对软件中的最小可测试单元进行检查和验证。充分的单元测试,可以在早期发现软件BUG并进行修复,大大提高软件质量,降低后期维护成本。
在单元测试项目中,函数的调用信息是判断待测试程序是否准确执行的重要依据,而如何统计单元测试过程中被调用函数的调用信息是目前亟需解决的技术问题。
发明内容
本申请实施例提供一种函数调用信息的记录方法及设备,可以在单元测试过程中记录被调用函数的调用信息。
第一方面,本申请实施例提供一种函数调用信息的记录方法,该方法包括:
确定待测试程序中被调用函数的函数信息;
根据所述函数信息生成钩子函数,并将所述钩子函数插入所述被调用函数中,所述钩子函数用于在所述待测试程序运行过程中记录所述被调用函数的调用信息。
在一种可能的设计方式中,所述确定待测试程序中被调用函数的函数信息,包括:
确定待测试程序中被调用函数的函数原型与所述被调用函数中可插入钩子函数的位置信息。
在一种可能的设计方式中,所述根据所述函数信息生成钩子函数,并将所述钩子函数插入所述被调用函数中,包括:
根据所述被调用函数的函数原型生成所述钩子函数,并根据所述被调用函数中可插入钩子函数的位置信息,将所述钩子函数插入所述被调用函数中。
在一种可能的设计方式中,所述被调用函数的调用信息包括以下信息中的至少一项:所述被调用函数的调用次数、所述被调用函数的输入参数、所述被调用函数的跳转信息。
在一种可能的设计方式中,所述钩子函数中包括以下子函数中的至少一个:
第一子函数,用于在所述待测试程序运行过程中记录所述被调用函数的调用次数;
第二子函数,用于在所述待测试程序运行过程中检测是否存在所述被调用函数对应的参数输入函数,若存在,则调用所述参数输入函数,并基于所述参数输入函数记录所述被调用函数的输入参数;
第三子函数,用于在所述待测试程序运行过程中检测是否存在mock函数,若存在,则调用所述mock函数,并根据所述mock函数记录所述被调用函数的跳转信息。
第二方面,本申请实施例提供一种函数调用信息的记录装置,该装置包括:
确定模块,用于确定待测试程序中被调用函数的函数信息;
处理模块,用于根据所述函数信息生成钩子函数,并将所述钩子函数插入所述被调用函数中,所述钩子函数用于在所述待测试程序运行过程中记录所述被调用函数的调用信息。
在一种可能的设计方式中,所述确定模块用于:
确定待测试程序中被调用函数的函数原型与所述被调用函数中可插入钩子函数的位置信息。
在一种可能的设计方式中,所述处理模块用于:
根据所述被调用函数的函数原型生成所述钩子函数,并根据所述被调用函数中可插入钩子函数的位置信息,将所述钩子函数插入所述被调用函数中。
在一种可能的设计方式中,所述被调用函数的调用信息包括以下信息中的至少一项:所述被调用函数的调用次数、所述被调用函数的输入参数、所述被调用函数的跳转信息。
在一种可能的设计方式中,所述钩子函数中包括以下子函数中的至少一个:
第一子函数,用于在所述待测试程序运行过程中记录所述被调用函数的调用次数;
第二子函数,用于在所述待测试程序运行过程中检测是否存在所述被调用函数对应的参数输入函数,若存在,则调用所述参数输入函数,并基于所述参数输入函数记录所述被调用函数的输入参数;
第三子函数,用于在所述待测试程序运行过程中检测是否存在mock函数,若存在,则调用所述mock函数,并根据所述mock函数记录所述被调用函数的跳转信息。
第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面提供的函数调用信息的记录方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面提供的函数调用信息的记录方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如第一方面提供的函数调用信息的记录方法。
本申请实施例所提供的函数调用信息的记录方法及设备,通过根据待测试程序中被调用函数的函数信息生成钩子函数,并将该钩子函数插入被调用函数中,在待测试程序运行过程中,该钩子函数可以记录被调用函数的调用信息,从而有助于在单元测试过程中基于被调用函数的调用信息来确定待测试程序是否准确执行。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对本申请实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例中提供的一种单元测试的框架示意图;
图2为本申请实施例中提供的一种函数调用信息的记录方法的流程示意图一;
图3为本申请实施例中提供的一种函数调用信息的记录方法的流程示意图二;
图4为本申请实施例中提供的一种函数调用信息的记录装置的程序模块示意图;
图5为本申请实施例中提供的一种电子设备的硬件结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
单元测试(unit testing),是在软件开发完成后,由开发人员根据逻辑覆盖、代码覆盖、初始值、临界值和期望值等条件,编写对软件代码的测试代码,用以检测软件代码的正确性,从而帮助开发人员发现问题、提高软件质量。
通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如把一个很大的值放入一个有序列表(list)中去,然后确认该值出现在list的尾部,以实现单元测试;或者,从字符串中删除匹配某种模式的字符,然后确认字符串不再包含这些字符实现单元测试。充分的单元测试,可以在早期发现软件BUG并进行修复,大大提高软件质量,降低后期维护成本。
如图1所示,图1为本申请实施例中提供的一种单元测试的框架示意图。在图1中,测试用例(Test Case)是指对被测单元进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为被测单元编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。其中,测试用例的设计方法主要有黑盒测试法和白盒测试法。
驱动模块是用来模拟被测单元的上一级单元,相当于被测单元的主程序。它接收数据并将相关数据传送给被测单元,启用被测单元并打印出相应结果。驱动模块的目的很单纯,就是访问类库的属性和方法来确定类库是否正确。
桩函数是模拟被测试单元所调用的函数,而不是软件产品的组成部分。主程序作为驱动模块,与之直接相连的模块是桩模块,也称为“替身模块”。桩函数本身不执行任何功能,只在它作为替身被调用时返回静态值。
在一些单元测试的项目工程中,函数的调用信息并不能直接获取,但是获取函数的调用信息对于判断函数调用的准确性具有重要的意义,因此,如何统计单元测试过程中被调用函数的调用信息是目前亟需解决的技术问题。
为了解决上述技术问题,本申请实施例中提供了一种函数调用信息的记录方法,该方法通过根据待测试程序中被调用函数的函数信息生成钩子函数,并将该钩子函数插入被调用函数中,在待测试程序运行过程中,该钩子函数可以记录被调用函数的调用信息,从而有助于在单元测试过程中基于被调用函数的调用信息来确定待测试程序是否准确执行。下面采用详细的实施例进行详细说明。
参照图2,图2为本申请实施例中提供的一种函数调用信息的记录方法的流程示意图一,在一种可行的实施方式中,该方法包括:
S201、确定待测试程序中被调用函数的函数信息。
本申请实施例中,在确定单元测试工程对应的待测试程序后,确定待测试程序中被调用函数的函数信息。例如,被调用函数的函数原型,被调用函数中可插入钩子函数的位置等函数信息。
在一种可行的实施方式中,可以使用GNU编译器套件(GNU Compiler Collection,GCC)预编译待测试程序的源文件来获取被调用函数的函数信息。
S202、根据上述函数信息生成钩子函数,并将该钩子函数插入上述被调用函数中,该钩子函数用于在待测试程序运行过程中记录上述被调用函数的调用信息。
本申请实施例中,在确定被调用函数的函数信息后,可以根据被调用函数需要记录的调用信息,生成钩子函数,并插入到上述被调用函数中,当待测试程序在运行到被调用函数时也会运行钩子函数,从而可以利用钩子函数记录上述被调用函数的调用信息。
可选的,上述被调用函数的调用信息包括以下信息中的至少一项:被调用函数的调用次数、被调用函数的输入参数、被调用函数的跳转信息。
例如,在传统的单元测试中,假设函数A中调用了函数B,而函数B中只有执行语句,并没有返回参数,则无法判断函数B是否被成功调用和执行。在申请实施例中,通过在函数B中植入钩子函数,则当函数B执行时,钩子函数也会同时执行,因此,即使函数B并没有返回参数,也可以通过钩子函数记录的函数B的调用信息,以判断函数B是否被成功调用和执行。
再例如,在传统的单元测试中,假设函数A需要对函数B进行多次调用,而函数B中只有执行语句,并没有返回参数,则无法获知函数B被执行的次数。在申请实施例中,通过在函数B中植入钩子函数,则当函数B执行时,钩子函数也会同时执行,因此,即使函数B并没有返回参数,也可以通过钩子函数记录的函数B的调用信息,以确定函数B被执行的次数。
本申请实施例所提供的函数调用信息的记录方法,通过根据待测试程序中被调用函数的函数信息生成钩子函数,并将该钩子函数插入被调用函数中,在待测试程序运行过程中,该钩子函数可以记录被调用函数的调用信息,从而有助于在单元测试过程中基于被调用函数的调用信息来确定待测试程序是否准确执行。
另外,通过记录被调用函数的调用信息,还能够获知测试用例中各个函数的执行情况,在软件程序出现错误时,有助于进行及时有效的定位。
基于上述实施例中所描述的内容,参照图3,图3为本申请实施例中提供的一种函数调用信息的记录方法的流程示意图二,在一种可行的实施方式中,该方法包括:
S301、确定待测试程序中被调用函数的函数原型与被调用函数中可插入钩子函数的位置信息。
其中,函数原型也叫函数声明,包括函数类型、函数名、形参列表等。
S302、根据被调用函数的函数原型生成钩子函数。
S303、根据被调用函数中可插入钩子函数的位置信息,将钩子函数插入被调用函数中,该钩子函数用于在待测试程序运行过程中记录被调用函数的调用信息。
本申请实施例中,在确定被调用函数的函数原型后,根据需要记录调用信息的函数,生成钩子函数,并根据被调用函数中可插入钩子函数的位置信息,将该钩子函数插入被调用函数中。当运行被调用函数时,也会运行钩子函数。由于钩子函数是对被调用函数单独添加的用于进行调用信息的统计的语句,因此,在被调用函数运行过程中,利用钩子函数即可记录被调用函数的调用信息,例如:记录被调用函数的调用次数、输入参数、跳转信息等。
在一种可行的实施方式中,上述钩子函数为宏语句,可展开成以下条件执行的3个子函数中的至少一个:
第一子函数,用于记录函数调用次数。
第二子函数,用于检测是否存在注册检查入参函数,若存在,则调用检查入参的函数,否则忽略。
第三子函数,用于检测是否存在注册mock函数,若存在,则调用mock函数,否则执行原函数。
需要说明的是,上述注册检查入参函数、注册mock函数是写在每个测试用例的准备阶段,即调用被测试的函数语句之前。
在单元测试过程中,对于某些不容易构造或者不容易获取的函数,可以采用创建一个虚拟的函数来进行测试的方式,这个虚拟的函数就称为Mock函数。Mock函数就是实际中的函数在单元测试期间的代替品。
本申请实施例所提供的函数调用信息的记录方法,通过根据待测试程序中被调用函数的函数原型生成钩子函数,并根据被调用函数中可插入钩子函数的位置信息将该钩子函数插入被调用函数中,在待测试程序运行过程中,该钩子函数可以记录被调用函数的调用信息,从而有助于在单元测试过程中基于被调用函数的调用信息来确定待测试程序是否准确执行。
基于上述实施例中所描述的内容,本申请实施例中还提供一种函数调用信息的记录装置。参照图4,图4为本申请实施例中提供的一种函数调用信息的记录装置的程序模块示意图,该函数调用信息的记录装置40包括:
确定模块401,用于确定待测试程序中被调用函数的函数信息。
处理模块402,用于根据上述函数信息生成钩子函数,并将该钩子函数插入被调用函数中,该钩子函数用于在待测试程序运行过程中记录被调用函数的调用信息。
本申请实施例所提供的函数调用信息的记录装置40,通过根据待测试程序中被调用函数的函数信息生成钩子函数,并将该钩子函数插入被调用函数中,在待测试程序运行过程中,该钩子函数可以记录被调用函数的调用信息,从而有助于在单元测试过程中基于被调用函数的调用信息来确定待测试程序是否准确执行。
需要说明的是,本申请实施例中确定模块401、处理模块402具体执行的内容可以参阅图2至图3所示实施例中相关内容,此处不做赘述。
基于上述实施例中所描述的内容,在一种可行的实施方式中,确定模块401用于:
确定待测试程序中被调用函数的函数原型与被调用函数中可插入钩子函数的位置信息。
在一种可行的实施方式中,处理模块402用于:
根据被调用函数的函数原型生成钩子函数,并根据被调用函数中可插入钩子函数的位置信息,将钩子函数插入被调用函数中。
在一种可行的实施方式中,上述被调用函数的调用信息包括以下信息中的至少一项:被调用函数的调用次数、被调用函数的输入参数、被调用函数的跳转信息。
在一种可行的实施方式中,上述钩子函数中包括以下子函数中的至少一个:
第一子函数,用于在待测试程序运行过程中记录被调用函数的调用次数;
第二子函数,用于在待测试程序运行过程中检测是否存在被调用函数对应的参数输入函数,若存在,则调用参数输入函数,并基于参数输入函数记录被调用函数的输入参数;
第三子函数,用于在待测试程序运行过程中检测是否存在mock函数,若存在,则调用mock函数,并根据mock函数记录被调用函数的跳转信息。
本申请实施例所提供的函数调用信息的记录装置,通过根据待测试程序中被调用函数的函数原型生成钩子函数,并根据被调用函数中可插入钩子函数的位置信息将该钩子函数插入被调用函数中,在待测试程序运行过程中,该钩子函数可以记录被调用函数的调用信息,从而有助于在单元测试过程中基于被调用函数的调用信息来确定待测试程序是否准确执行。
进一步的,基于上述实施例中所描述的内容,本申请实施例中还提供了一种电子设备,该电子设备包括至少一个处理器和存储器;其中,存储器存储计算机执行指令;上述至少一个处理器执行存储器存储的计算机执行指令,以实现如上述实施例中所描述的函数调用信息的记录方法的各个步骤,本实施例此处不再赘述。
为了更好的理解本申请实施例,参照图5,图5为本申请实施例提供的一种电子设备的硬件结构示意图。
如图5所示,本实施例的电子设备50包括:处理器501以及存储器502;其中:
存储器502,用于存储计算机执行指令;
处理器501,用于执行存储器存储的计算机执行指令,以实现上述实施例中所描述的函数调用信息的记录方法的各个步骤,具体可以参见前述方法实施例中的相关描述,本实施例此处不再赘述。
可选地,存储器502既可以是独立的,也可以跟处理器501集成在一起。
当存储器502独立设置时,该设备还包括总线503,用于连接所述存储器502和处理器501。
进一步的,基于上述实施例中所描述的内容,本申请实施例中还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,以实现上述实施例中所描述的函数调用信息的记录方法的各个步骤,具体可以参见前述方法实施例中的相关描述,本实施例此处不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (13)

1.一种函数调用信息的记录方法,其特征在于,所述方法包括:
确定待测试程序中被调用函数的函数信息;
根据所述函数信息生成钩子函数,并将所述钩子函数插入所述被调用函数中,所述钩子函数用于在所述待测试程序运行过程中记录所述被调用函数的调用信息。
2.根据权利要求1所述的方法,其特征在于,所述确定待测试程序中被调用函数的函数信息,包括:
确定待测试程序中被调用函数的函数原型与所述被调用函数中可插入钩子函数的位置信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述函数信息生成钩子函数,并将所述钩子函数插入所述被调用函数中,包括:
根据所述被调用函数的函数原型生成所述钩子函数,并根据所述被调用函数中可插入钩子函数的位置信息,将所述钩子函数插入所述被调用函数中。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述被调用函数的调用信息包括以下信息中的至少一项:所述被调用函数的调用次数、所述被调用函数的输入参数、所述被调用函数的跳转信息。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述钩子函数中包括以下子函数中的至少一个:
第一子函数,用于在所述待测试程序运行过程中记录所述被调用函数的调用次数;
第二子函数,用于在所述待测试程序运行过程中检测是否存在所述被调用函数对应的参数输入函数,若存在,则调用所述参数输入函数,并基于所述参数输入函数记录所述被调用函数的输入参数;
第三子函数,用于在所述待测试程序运行过程中检测是否存在mock函数,若存在,则调用所述mock函数,并根据所述mock函数记录所述被调用函数的跳转信息。
6.一种函数调用信息的记录装置,其特征在于,所述装置包括:
确定模块,用于确定待测试程序中被调用函数的函数信息;
处理模块,用于根据所述函数信息生成钩子函数,并将所述钩子函数插入所述被调用函数中,所述钩子函数用于在所述待测试程序运行过程中记录所述被调用函数的调用信息。
7.根据权利要求6所述的装置,其特征在于,所述确定模块用于:
确定待测试程序中被调用函数的函数原型与所述被调用函数中可插入钩子函数的位置信息。
8.根据权利要求7所述的装置,其特征在于,所述处理模块用于:
根据所述被调用函数的函数原型生成所述钩子函数,并根据所述被调用函数中可插入钩子函数的位置信息,将所述钩子函数插入所述被调用函数中。
9.根据权利要求6至8任一项所述的装置,其特征在于,所述被调用函数的调用信息包括以下信息中的至少一项:所述被调用函数的调用次数、所述被调用函数的输入参数、所述被调用函数的跳转信息。
10.根据权利要求6至8任一项所述的装置,其特征在于,所述钩子函数中包括以下子函数中的至少一个:
第一子函数,用于在所述待测试程序运行过程中记录所述被调用函数的调用次数;
第二子函数,用于在所述待测试程序运行过程中检测是否存在所述被调用函数对应的参数输入函数,若存在,则调用所述参数输入函数,并基于所述参数输入函数记录所述被调用函数的输入参数;
第三子函数,用于在所述待测试程序运行过程中检测是否存在mock函数,若存在,则调用所述mock函数,并根据所述mock函数记录所述被调用函数的跳转信息。
11.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至5任一项所述的函数调用信息的记录方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至5任一项所述的函数调用信息的记录方法。
13.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至5任一项所述的函数调用信息的记录方法。
CN202011503055.6A 2020-12-17 2020-12-17 函数调用信息的记录方法及设备 Pending CN112631904A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011503055.6A CN112631904A (zh) 2020-12-17 2020-12-17 函数调用信息的记录方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011503055.6A CN112631904A (zh) 2020-12-17 2020-12-17 函数调用信息的记录方法及设备

Publications (1)

Publication Number Publication Date
CN112631904A true CN112631904A (zh) 2021-04-09

Family

ID=75316929

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011503055.6A Pending CN112631904A (zh) 2020-12-17 2020-12-17 函数调用信息的记录方法及设备

Country Status (1)

Country Link
CN (1) CN112631904A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105550585A (zh) * 2016-03-02 2016-05-04 腾讯科技(深圳)有限公司 一种应用程序安全性测试方法、装置和系统
CN106649084A (zh) * 2016-09-14 2017-05-10 腾讯科技(深圳)有限公司 函数调用信息的获取方法及装置、测试设备
CN107038108A (zh) * 2015-08-20 2017-08-11 腾讯科技(深圳)有限公司 软件的测试方法和装置
CN108959069A (zh) * 2018-06-11 2018-12-07 北京奇艺世纪科技有限公司 一种函数运行的追踪方法和装置
CN109684219A (zh) * 2018-12-26 2019-04-26 百度在线网络技术(北京)有限公司 系统性能测试方法、装置及存储介质
CN110781060A (zh) * 2019-09-20 2020-02-11 平安普惠企业管理有限公司 函数监控方法、装置、计算机设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038108A (zh) * 2015-08-20 2017-08-11 腾讯科技(深圳)有限公司 软件的测试方法和装置
CN105550585A (zh) * 2016-03-02 2016-05-04 腾讯科技(深圳)有限公司 一种应用程序安全性测试方法、装置和系统
CN106649084A (zh) * 2016-09-14 2017-05-10 腾讯科技(深圳)有限公司 函数调用信息的获取方法及装置、测试设备
CN108959069A (zh) * 2018-06-11 2018-12-07 北京奇艺世纪科技有限公司 一种函数运行的追踪方法和装置
CN109684219A (zh) * 2018-12-26 2019-04-26 百度在线网络技术(北京)有限公司 系统性能测试方法、装置及存储介质
CN110781060A (zh) * 2019-09-20 2020-02-11 平安普惠企业管理有限公司 函数监控方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
EP0453394A2 (en) Dynamic process for the generation of biased pseudo-random test patterns for the functional verification of hardware designs
US7293213B1 (en) Method for detecting software errors and vulnerabilities
US8868976B2 (en) System-level testcase generation
US11461472B2 (en) Automatic correctness and performance measurement of binary transformation systems
US8560991B1 (en) Automatic debugging using automatic input data mutation
Da Silva et al. LEON3 ViP: a virtual platform with fault injection capabilities
US20100318850A1 (en) Generation of a stimuli based on a test template
CN112925524A (zh) 一种检测驱动程序中不安全直接存储器访问的方法及装置
CN112286750A (zh) 一种gpio验证方法、装置、电子设备和介质
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
CN117094269B (zh) 一种验证方法、装置、电子设备及可读存储介质
CN110765008B (zh) 一种数据处理方法及装置
US20110131031A1 (en) Dynamic generation of tests
CN113377586A (zh) 一种服务器自动化检测方法、装置及存储介质
US9069900B2 (en) Method for determining whether a machine code instruction of a machine code program is executed in the machine code program
US20130283238A1 (en) Testing system for an integrated software system
CN112631904A (zh) 函数调用信息的记录方法及设备
CN115599618A (zh) 寄存器动态改配验证方法、装置、存储介质和处理器
CN112527657B (zh) 单元测试中自动插桩的方法及设备
US11200126B2 (en) Utilizing translation tables for testing processors
US20100077383A1 (en) Simulation method and storage medium for storing program
CN112765021A (zh) 一种引导程序的调试检验方法、装置、设备及存储介质
CN117113907B (zh) 一种验证方法、装置、电子设备及可读存储介质
JP2011145880A (ja) 半導体集積回路の論理検証にて使用するテストタスクの生成方法
US8707101B2 (en) Verification of operating self modifying code

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20210409

RJ01 Rejection of invention patent application after publication