CN1873626A - 一种自动生成桩和驱动函数的单元测试系统及方法 - Google Patents

一种自动生成桩和驱动函数的单元测试系统及方法 Download PDF

Info

Publication number
CN1873626A
CN1873626A CN 200510040422 CN200510040422A CN1873626A CN 1873626 A CN1873626 A CN 1873626A CN 200510040422 CN200510040422 CN 200510040422 CN 200510040422 A CN200510040422 A CN 200510040422A CN 1873626 A CN1873626 A CN 1873626A
Authority
CN
China
Prior art keywords
function
module
test
tested
data
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
CN 200510040422
Other languages
English (en)
Other versions
CN100388229C (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.)
Beijing Yuanxin Science and Technology Co Ltd
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CNB2005100404222A priority Critical patent/CN100388229C/zh
Publication of CN1873626A publication Critical patent/CN1873626A/zh
Application granted granted Critical
Publication of CN100388229C publication Critical patent/CN100388229C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种自动生成变量控制函数、桩函数和驱动函数的软件自动测试系统及方法,该方法包括扫描被测环境中的被测源程序,提取出该源程序的结构信息,并将这些信息数据保存为XML文件;以及根据生成的XML文件中的信息,自动生成变量控制函数、桩函数和驱动函数;测试控制模块在被测环境中控制被测程序执行。采用该方法可提高软件单元测试效率。

Description

一种自动生成桩和驱动函数的单元测试系统及方法
技术领域
本发明涉及一种软件自动测试技术,更具体地说是一种由系统根据被测软件的代码生成变量控制函数、桩函数和驱动函数的自动测试方法及采用该方法的系统。
背景技术
单元测试是对程序源代码中的每个程序单元逐一测试,以检查每个控制分支并最大可能的发现错误。
单元测试的关键是构建测试环境,其中经常要用到驱动函数和桩函数。驱动函数是用来调用被测程序中的函数的,而桩函数则是提供被测程序中的函数内部对子函数调用时的替换函数。
在目前软件开发中的单元测试的水平参差不齐,总体上可以分以下三个阶段:
第一阶段:纯手工测试:完全白盒测试,用户需要清楚被测程序的逻辑结构,而且用C语言写桩(Stub)和驱动函数(Driver),初始化变量,并与被测程序一起编译、链接,在调试环境下做测试。这种方法需要构造桩函数和全局变量,因此工作量大,并且测试代码的可重用性差。
第二阶段:借助白盒测试开源代码工具:CppUnit是最常见的一种白盒测试开源代码,通过CppUnit提供的方法构造桩和全局变量,需要将CppUnit与被测程序一起编译执行,这种方法没有实现软件测试自动化,而且要求CppUnit代码能够在目标环境中编译,对被测程序改动较大。
第三阶段:用脚本写桩和驱动的自动测试:该方法灵活性很高,能够根据脚本生成桩和驱动函数,同时实现了测试自动化和测试度量,如RTRT和Cantata(都是单元和集成测试工具)等就是通用的单元测试工具,但是它们写脚本时需要用户熟悉被测程序和脚本语言,针对特定的环境,自动化程度还可以进一步提高。
单元测试存在源代码修改频繁,回归测试多等特点,如何简化单元测试过程,提高测试效率,第三阶段的自动化测试自然成为单元测试的发展方向。
在自动单元测试的专利中,2004年8月5日公开的美国专利US2004153830(Method and system for object level software testing)与上述第三阶段的自动测试工具方法相同,但是这些单元测试方法都没有桩和驱动函数自动生成,不可避免的要求用户了解被测函数的调用和执行逻辑,需要使用脚本或者某种语言进行测试逻辑控制,这就提高了对测试人员的技能要求,用户需要花费一定时间学习这些测试方法。另外,这些通用的单元测试工具由于功能强大,在特定的环境下,自动化程度不高,这就限制了其在一些具体环境中的广泛使用。
发明内容
有鉴于此,本发明所要解决的技术问题在于提供一种自动生成变量控制函数、桩函数和驱动函数的单元测试方法及系统,在单元测试中减少手工劳动,提高单元测试效率,提高测试数据的重用性,降低对测试人员的技能要求。
为实现本发明要解决的技术问题,本发明提供了一种自动生成桩和驱动函数的单元测试系统,其特征在于:包括:
一测试控制模块,用于提取被测源程序的结构信息,生成被测程序所有的变量控制函数、桩函数和驱动函数,完成测试用例的创建和执行测试控制;
一被测环境模块,用于根据所述测试控制模块提供的数据和指令消息,将被测程序、代理程序、变量控制函数、桩函数和驱动函数一起编译后运行在被测程序要求的目标机中,完成对被测程序的执行;
所述测试控制模块和被测环境模块采用通用的消息传递方式进行数据和指令消息的交互。
所述测试控制模块进一步包括:
一测试数据管理模块,用于管理测试数据,所述测试数据包括全局变量值、被测函数调用时的参数值和桩函数的返回值;
一源程序信息提取模块,用于通过扫描被测试源程序,提取出数据结构、全局变量和函数参数,并将其保存为XML格式文件;
一代码自动生成模块,用于根据所述XML格式文件,自动生成被测源程序所有的变量控制函数、桩函数和驱动函数。
所述系统进一步还包括一符号表模块,用于管理被测程序的结构信息和执行时的测试数据,并提供了多种数据访问方式,方便地实现了所述测试控制模块与被测环境模块之间的消息交互。
本发明进一步提供了一种自动生成桩和驱动函数的单元测试方法,其特征在于包括步骤:
包括如下步骤:
步骤1,自动生成被测程序所有的变量控制函数、桩函数和驱动函数;
步骤2,由测试控制模块在被测环境中控制被测程序的执行。
所述步骤1进一步包括:
步骤11,扫描被测源程序,提取出数据结构、全局变量和函数参数,并将所述数据保存为XML格式文件;
步骤12,根据所述XML格式文件中的信息,自动生成变量控制函数、桩函数和驱动函数;
步骤13,将自动生成的函数代码与代理程序、被测程序一起编译,然后在被测环境中执行,等待后台测试控制模块的数据和指令消息。
测试控制模块和被测环境模块的通讯机制需根据具体的目标机环境而定,通常是由底层软件提供一种通用的消息传递方式,本发明利用这种消息为载体来进行数据和指令的交互。
利用本发明开发的软件自动测试工具能够有效地提高单元测试的效率和质量,减少人力成本,并且测试用例能够不断修改复用,大大减少重复劳动:
1、通过对源程序的扫描提取结构信息,使用户不需要关心程序的结构;
2、自动生成桩和驱动函数,不需要另写测试代码和测试脚本,降低了对测试人员的技能要求;
3、数据独立保存,通过可视化界面编辑,可复用性和灵活性大大提高;
4、被测程序一次编译后,可灵活创建多个测试用例,减少了系统的编译次数;
5、被测程序可以在目标机上,也可以在PC机上,能够灵活适应多种测试环境。
附图说明
图1是本发明所示自动单元测试模块结构示意图;
图2是本发明所示单元测试操作流程示意图;
图3是本发明所示单元测试用例执行流程示意图;
图4是本发明所示被测程序中函数的调用流程示意图。
具体实施方式
为使本发明的目的、技术和优点更加清楚,下面结合附图对本发明做进一步的详细描述。
图1示出了依据本发明的模块结构示意图,说明了本发明中的主要模块结构。
本发明总体上可分为测试控制模块101和被测环境模块102两部分,测试控制模块101用于完成测试用例的创建和执行控制,负责与用户的交互界面;而测试环境模块102则是被测程序动态执行中所需的软硬件环境,用于负责与测试控制的交互,控制被测程序的正确执行。采用该两个独立的部分可以不会因为测试控制中的很多用户交互界面与被测程序ANSI C程序一起编译而增加系统的复杂性;同时,被测程序需要相对真实的环境,分开后能够满足多种被测程序的硬件环境要求。
测试控制模块101又包括源程序信息提取模块103,测试数据管理模块104,用于自动生成变量控制函数、桩函数和驱动函数的代码自动生成模块105,其中源程序信息提取模块103分别连接测试数据管理模块104和代码自动生成模块105。
被测环境模块102用于将被测程序、代理程序、变量控制函数、桩函数和驱动函数一起编译后,运行在被测程序要求的执行的硬件环境中。该被测环境模块102又主要包括前台代理程序模块107用于进行前后台之间的通讯;变量控制、桩和驱动函数模块108,用于控制被测程序中的全局变量的值,并调用被测函数,替换被测函数中调用的函数,其可以使被测函数在用户的控制下执行测试;被测程序模块109,其中,该前台代理程序模块107、变量控制、桩和驱动函数模块108和被测程序模块109依次连接。
测试控制模块101和被测环境模块102的通讯可以借助被测系统已有的消息机制或文件传输,本发明通过符号表模块106实现了测试数据和指令的交互,如图1所示,该源程序信息提取模块103与测试数据管理模块104分别连接至符号表模块106,而符号表模块106则与该前台代理程序模块107连接,同时该代码自动生成模块105生成相应代码给该变量控制、桩和驱动函数模块108。
在图2-图4中,分别示出了本发明的整个测试过程的主要流程,在描述该三个流程的同时,将源程序信息提取模块103,符号表模块106,代码自动生成模块105,代理程序设计模块107的技术内容分别在相关的流程中详细说明。
在图2中,揭示了本发明的单元测试操作流程,其用于测试用例的创建和执行。
单元测试操作流程如图2所示,包括如下步骤:
步骤S200,首先源程序信息提取模块103扫描被测程序源代码,提取出结构信息并通过符号表模块106生成符号表;
步骤S210,代码自动生成模块105根据符号表生成变量控制、桩、驱动函数代码发送给该变量控制、桩和驱动函数模块108,然后该变量控制、桩和驱动函数模块108和被测函数模块109、前台代理程序模块109一起编译,在被测环境模块102中执行,前台代理程序模块107处于等待后台的测试数据和指令状态。测试控制模块102也依据符号表模块106提供的符号表信息,由用户创建测试用例并编辑测试驱动数据;
步骤S220,然后执行测试用例(详细内容参见图3介绍);
步骤S230,分析测试结果并将返回的测试结果分析后呈现给用户。
其中,源程序信息提取模块103,完成扫描源代码,提取程序的结构信息,是本发明的前提条件。在本发明中使用语法分析的开源代码(Antlr)实现,并在Antlr的基础上增加输出被测程序代码的结构信息。
其中,被测程序的结构信息包括两类,一类是程序中定义的数据结构,包括struct和typedef定义的数据,另一类是程序中的全局变量和函数信息。数据结构信息能够提供用户交互式编辑测试数据,并将数据存储为连续的内存字段,其纪录的信息包括每个字段的名称、大小、起始位。全局变量和函数记录的是全局变量的名称和类型,函数的名称和出入参数类型。它们都采用XML文件格式读取和保存信息,这使其具有了可扩展性和通用性。其表示实例如下所示。
下面是源代码实例:
      struct TestStruct{
          int TestID;
          short TestStamp;
      }
      typedef struct TestStruct ATE TestStruct;
      int TestVar;
      int TestFunc(struct TestStruct*Paral,char*Para2);
以上的数据结构、全局变量和函数信息采用XML表示为:
<StructInfo name=″TestStruct″type=″Struct″level=″0″>
  <FieldInfo name=″Test ID″type=″int″offset=″0″length=″32″func=″CODEINT″level=″1″/>
  <FieldInfo name=″TestStamp″type=″short″offset=″32″length=″16″func=″CODESHORT″level=″1″/>
</StructInfo>
<TypeDef name=″ATE TestStruct″type=″struct TestStruct″/>
<GlobalVar name=″TestVar″type=″int″state=″enable″/>
<Function name=″TestFunc″type=″int(struct TestStruct*,char*)″state="stub&driver″>
其中,符号表模块(数据存取方式)106的描述说明如下:
本发明的实施例中,在自动生成变量控制函数、桩函数和驱动函数时,只涉及了XML中TypeDef、GlobalVar、Function三种类型的信息,如何存储该信息和测试数据并生成符号表,并使前后台调用更加方便呢?本发明的实施例中,采用ANSI C语言定义数据结构来交换数据,使其能够同时兼容前后台程序。
本发明实施例的数据结构定义分为三层,每一层都通过链表来保存自己的数据:
第一层结构是SymbolTable,所有变量和函数的结构信息和测试数据都包含在里面,它的子数据包括一个TypeDefScope、一个GlobalVarScope和多个FuncScope(每个函数都是一个FuncScope)。
第二层是三种Scope。
第三层是VarNode,每个VarNode与一个变量对应,只属于一个Scope。FuncScope下的VarNode按顺序依次是它的返回值类型、第一个参数、第二个参数……。VarNode结构中需要保存变量名、变量类型、变量值(如果是指针则须保存指针所指内存的数据)。VarNode同时需要有两个接口,一是能够将自己的所有信息与内存数据块互相转换,完成消息接口功能,二是能够将自己保存的数据与变量建立映射,完成测试控制和前台代理之间的数据交互。
符号表模块106的第一种功能是通过将VarNode每个字段的长度和值依次存入内存块中,反之依次取出来实现。
符号表模块106的第二种功能是建立了一种VarNode与变量的映射方法,既可以将VarNode中数据赋给变量,也可以将变量值存入VarNode中。根据变量类型可分为三种情况:
1、简单变量:直接赋值。
2、结构或数组:内存拷贝。
3、指针:只将指针赋给变量。
在图3和图1中,进一步揭示了本发明的单元测试用例的执行流程。
该单元测试执行流程如图3所示,该测试控制模块101发往被测环境模块102的消息分为数据消息和指令消息。其中,该数据消息依次发送全局数据1011、桩数据1012和驱动数据1013,然后发送指令消息1014(执行命令),控制测试代理调用被测函数1021(被测函数的调用参见图4说明),被测函数1021执行结束后,代理程序将执行结果通过数据消息发送到测试控制模块101进行显示。
其中,由前台代理程序设计模块107,处理前台符号表与消息的转换,激活/去激活,驱动函数的调用,执行结果的返回功能。
这里激活/去激活桩函数采用动态补丁技术,将内存代码段被测函数调用的子函数前的跳转指令的地址改为生成的桩函数地址,这样调用时会自动跳转到桩函数,如果恢复原来的地址,就关闭了桩函数的调用。如下代码是激活补丁函数的方法,去激活与之相似。
/*激活补丁函数,pValue_new为桩函数地址,pValue为原函数地址*/
offset=(WORD32)((WORD32)pValue_new-((WORD32)pValue+5));
*pValue=0xe9;  /*相对跳转指令  JMP OFFSET*/
*((WORD32*)(pValue+1))=offset;/*相对跳转地址*/
下面是前台代理程序模块107提供的接口,这也是代理程序的主要功能。
int ReceiveVarNodeMsg(void*pBuf,int length):收到测试控制发送到测试环境的符号表节点信息,调用此函数保存到前台符号表中,如果是全局变量值,则同步修改变量。
int SendVarNodeMsg(ATE_VarNode*pVar):将符号表中的一个节点发送到后台,通常是向测试控制返回执行结果。
int RunFuncTest(char*FuncName):收到测试控制执行被测函数的指令,则根据函数名称调用相应驱动函数,同时根据前台符号表中数据激活或去活桩函数。
int Ini tSymbolTable():初始化符号表,在前台代理刚启动或需要清空符号表时调用此函数。
在图4中,进一步揭示了本发明的被测函数调用流程。
该被测函数调用流程如图4所示,包括如下步骤:
步骤S300,前台代理程序模块107循环接收消息(参见图3所示);
步骤S310,判断消息类型,如果是数据则加入到符号表中(步骤S320),如果是执行指令则通过驱动程序调用相应的被测函数(步骤S330)。
步骤S340,判断语句类型,当被测函数中遇到调用函数时(步骤S350),如果该函数没有激活桩,则调用原函数(步骤S360);如果该函数已经激活桩,则跳转到桩函数执行(步骤S370)。在桩函数中根据符号表中数据给全局变量或参数赋值,并返回符号表中数据到被测函数继续执行,直到被测函数结束。这时将被测函数的结果通过代理程序模块107发送到测试控制模块101。
在图3和图1中,其中,该变量控制、桩和驱动函数模块108中的变量控制函数、桩函数和驱动函数是由代码程序自动生成模块自动生成的,都包含在Driver.c文件中,其头文件是Driver.h。生成时根据SymbolTable中函数和全局变量的类型生成相应的程序,然后与前台被测程序和代理程序一起编译执行。
其中,该Driver.c文件包含以下几部分:
1、通过extern引用全局变量和桩函数;
2、全局变量赋值和取值,通过函数SetGlobalVar和GetGlobalVar完成;
3、桩函数(多个);
4、驱动函数(多个)。
本发明为了简化自动生成的函数,使用户易于理解,本发明进一步定义了很多简化程序结构的宏,其中FUNC_COPYTOVAR(a)和FUNC_COPYTONODE(a)便是其中的主要宏,FUNC_COPYTOVAR(a)是将前台符号表中的VarNode节点数据赋值给变量,FUNC_COPYTONODE(a)则将驱动函数中的变量保存到前台符号表中相应的VarNode中。其中FUNC_COPYTOVAR(a)的定义下所示。
/*驱动函数中,将符号表中的节点数据同步到相应的内部变量*/
#define FUNC_POINTERCOPYTOVAR(a){\
    if(a==0)\
      Para##a=GetReturnPara(pFuncTable);\
    else if(a>0)\
      Para##a=GetFuncParaByIndex(pFuncTable,a);\
    else\
      return-1;\
    if(Para##a==NULL)\
      return-1;\
memcpy(&Var##a,&(Para##a->pVarPtr),4);\
}
由上面的宏定义可以看到,无论是变量还是指针的赋值,都是通过memcpy函数完成,这样使得这些宏能够对所有类型通用,在变量和指针的赋值中都能编译通过。
通过很多这样类似的宏,驱动函数和桩函数的自动生成已很容易做到,如下所示。
/*函数TestFunc的驱动函数*/
int DriveTestFunc()
{
  /*首先为函数的参数定义函数局部变量,
    0为返回值,1,2分别是第一个和第二个参数
  */
  FUNC_DEFINEPARA(0,struct TestStruct*);
  FUNC_DEFINEPARA(1,int);
  FUNC_DEFINEPARA(2,char*);
  /*在内存数据中取得纪录函数信息的数据节点*/
  FUNC_GETTABLE(TestFunc);
  /*将数据节点中变量值赋给第一个参数变量Var1*/
  Var1=0;
  FUNC_COPYTOVAR(1);
  /*将数据节点中变量值赋给第个个参数变量Var2*/
  Var2=O;
  FUNC_COPYTOVAR(2);
  /*调用被测函数,传入参数,取得返回值*/
  Var0=TestFunc(Var1,Var2);
  /*将返回值复制回内存中的函数节点*/
  FUNC_POINTERCOPYTONODE(0);
  return 0;
}
上面是被测函数TestFunc由程序自动生成的驱动函数实例。驱动函数完成的功能如下(具体的宏可能会因为变量类型不同而不同,但它们的功能都是相同的):
1、通过宏FUNC_DEFINEVAR,定义保存被测函数参数和返回值的临时变量;
2、通过宏FUNC_COPYTOVAR,将前台符号表中的数据赋值给参数变量;
3、调用被测函数,传入参数,取得执行的返回值;
4、通过宏FUNC_COPYTONODE,将临时变量中的返回值保存到前台符号表中。
桩函数的形式与驱动函数类似,完成的功能包括:
1、通过宏STUB_DEFINEVAR定义桩函数返回值临时变量;
2、通过宏STUB_COPYTOGVAR将桩函数符号表中的全局变量数据赋值给全局变量;
3、通过宏STUB_COPYTOVAR将符号表中数据赋值给参数和返回值变量。
通过以上模块结构图和三个流程图的介绍,本发明的主要思想已经阐述清楚。自动生成桩和驱动的单元测试思想是本发明的实质内容,本发明在实现时可能有多种不同的方案,本文中所涉及的具体实现方案只是其中一种。熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (12)

1、一种自动生成桩和驱动函数的单元测试系统,其特征在于:包括:
一测试控制模块,用于提取被测源程序的结构信息,生成被测程序所有的变量控制函数、桩函数和驱动函数,完成测试用例的创建和执行测试控制;
一被测环境模块,用于根据所述测试控制模块提供的数据和指令消息,将被测程序、代理程序、变量控制函数、桩函数和驱动函数一起编译后运行在被测程序要求的硬件环境中,完成对被测程序的执行;
所述测试控制模块和被测环境模块采用通用的消息传递方式进行数据和指令消息的交互。
2、根据权利要求1所述的系统,其特征在于:所述测试控制模块进一步包括:
一测试数据管理模块,用于管理测试数据,所述测试数据包括全局变量值、被测函数调用时的参数值和桩函数的返回值;
一源程序信息提取模块,用于通过扫描被测试源程序,提取出数据结构、全局变量和函数参数,并将其保存为XML格式文件;
一代码自动生成模块,用于根据所述XML格式文件,自动生成被测源程序所有的变量控制函数、桩函数和驱动函数。
3、根据权利要求1、2所述的系统,其特征在于:还包括一符号表模块,用于管理被测程序的结构信息和执行时的测试数据,并提供了多样的数据访问方式,实现所述测试控制模块与被测环境模块之间的消息交互。
4、根据权利要求3所述的系统,其特征在于:
所述被测环境模块进一步包括:
一前台代理程序模块,用于处理符号表数据与消息的转换、激活/去激活桩函数、驱动函数的调用以及执行结果的返回;
一变量控制、桩、驱动函数模块,是由所述代码自动生成模块根据符号表模块中的信息自动生成的代码,用于控制所述被测控制模块中的被测程序的参数和执行控制;
一被测程序模块,用于将所述变量控制、桩、驱动函数模块编译的程序运行在被测程序要求的硬件环境中;
所述前台代理程序模块、变量控制、桩和驱动函数模块和被测程序模块依次连接;所述源程序信息提取模块与所述测试数据管理模块分别连接至所述符号表模块,所述符号表模块与该所述前台代理程序模块互连。
5、根据权利要求4所述的系统,其特征在于,所述测试数据管理模块根据所述符号表模块中存储的被测程序结构信息,在后台自动创建与被测函数对应的测试用例;由用户在交互环境中编辑测试数据,然后执行测试用例,并将接收到的测试结果显示给用户。
6、根据权利要求5所述的系统,其特征在于,所述代理程序模块接收所述测试用例的消息并还原为变量数据,根据指令初始化参数,激活桩函数,调用被测函数执行,并将执行结果发送到所述测试控制模块进行显示。
7、一种自动生成桩和驱动函数的程序单元测试方法,其特征在于,包括如下步骤:
步骤1,自动生成被测程序所有的变量控制函数、桩函数和驱动函数;
步骤2,由测试控制模块在被测环境中控制被测程序的执行。
8、根据权利要求7所述的方法,其特征在于,所述步骤1进一步包括:
步骤11,扫描被测源程序,提取出数据结构、全局变量和函数参数,并将所述数据保存为XML格式文件;
步骤12,根据所述XML格式文件中的信息,自动生成变量控制函数、桩函数和驱动函数;
步骤13,将自动生成的函数代码与代理程序、被测程序一起编译,然后在被测环境中执行,等待后台测试控制模块的数据和指令消息。
9、根据权利要求7或8所述的方法,其特征在于,在步骤2中,进一步包括:
步骤21,根据所述XML文件中的信息,自动创建与被测程序中需要测试的函数对应的测试用例,并由用户在交互环境中编辑测试数据;
步骤22,执行所述测试用例,向代理程序发送数据消息,然后发送执行指令;
步骤23,代理程序接收数据消息并还原为变量数据,然后根据指令初始化参数,激活桩函数,调用被测函数,然后将执行结果送到测试控制模块。
所述测试控制模块执行所述测试用例并将返回的测试结果分析后呈现给用户。
10、根据权利要求9所述的方法,其特征在于,在步骤23之后,还包括测试控制模块将收到的执行结果向用户进行显示的步骤。
11、根据权利要求9或10所述的方法,其特征在于,所述测试数据包括全局变量、桩函数返回值和被测函数的入参。
12、根据权利要求11所述的方法,其特征在于,所述调用被测函数的步骤进一步包括如下步骤:
前台代理程序循环接收消息;
判断消息类型,如果是数据则加入到符号表中,如果是执行指令则通过驱动程序调用相应的被测函数;
进一步判断语句类型,当被测函数中遇到调用函数时,如果该函数没有激活桩函数,则调用原函数;如果该函数已经激活桩函数,则跳转到桩函数执行;
在桩函数中根据符号表中数据给全局变量或参数赋值,并返回符号表中数据到被测函数继续执行,直到被测函数结束。
CNB2005100404222A 2005-06-01 2005-06-01 一种自动生成桩函数和驱动函数的单元测试系统及方法 Expired - Fee Related CN100388229C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100404222A CN100388229C (zh) 2005-06-01 2005-06-01 一种自动生成桩函数和驱动函数的单元测试系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100404222A CN100388229C (zh) 2005-06-01 2005-06-01 一种自动生成桩函数和驱动函数的单元测试系统及方法

Publications (2)

Publication Number Publication Date
CN1873626A true CN1873626A (zh) 2006-12-06
CN100388229C CN100388229C (zh) 2008-05-14

Family

ID=37484106

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100404222A Expired - Fee Related CN100388229C (zh) 2005-06-01 2005-06-01 一种自动生成桩函数和驱动函数的单元测试系统及方法

Country Status (1)

Country Link
CN (1) CN100388229C (zh)

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894063A (zh) * 2010-06-13 2010-11-24 北京北大众志微系统科技有限责任公司 一种用于微处理器功能验证的测试程序生成方法及装置
CN101316196B (zh) * 2007-05-28 2010-12-08 华为技术有限公司 一种对分布式平台上的业务进行仿真测试的实现方法与装置
CN101110055B (zh) * 2007-08-31 2011-07-13 中兴通讯股份有限公司 在单元测试中实现通用桩函数的装置及其实现方法
CN102495802A (zh) * 2011-12-26 2012-06-13 华为技术有限公司 测试软件系统的方法和装置以及计算机系统
WO2012174946A1 (zh) * 2011-06-21 2012-12-27 中兴通讯股份有限公司 软件自动测试的方法及系统
CN102955723A (zh) * 2011-08-19 2013-03-06 中国科学院微电子研究所 一种硬件自动测试方法及系统
CN102955740A (zh) * 2012-12-13 2013-03-06 中国航空无线电电子研究所 一种基于Perl的驱动函数和桩函数生成方法
CN103019686A (zh) * 2012-11-20 2013-04-03 北京思特奇信息技术股份有限公司 一种跨两个中间件的系统及其编译方法
CN103092825A (zh) * 2011-10-31 2013-05-08 北大方正集团有限公司 一种测试排版处理结果的方法及设备
CN103092750A (zh) * 2012-11-13 2013-05-08 瑞斯康达科技发展股份有限公司 一种单元测试方法及装置
WO2014173211A1 (en) * 2013-04-23 2014-10-30 Tencent Technology (Shenzhen) Company Limited Code coverage testing method, device and system
CN104731700A (zh) * 2013-12-20 2015-06-24 广州凯乐软件技术有限公司 一种支持表格驱动局部数据的单元测试系统和方法
CN104915292A (zh) * 2015-06-12 2015-09-16 浪潮电子信息产业股份有限公司 一种linux内核模块动态打桩的方法
CN105607996A (zh) * 2015-11-27 2016-05-25 苏州同元软控信息技术有限公司 基于c代码模型的构件接口组装测试方法
CN106603283A (zh) * 2016-12-13 2017-04-26 广州唯品会信息科技有限公司 一种模拟服务的方法、装置及集中管理平台
CN107169366A (zh) * 2016-03-08 2017-09-15 环达电脑(上海)有限公司 智能设备个人数据信息安全的保护方法
CN107168870A (zh) * 2017-04-28 2017-09-15 福建星瑞格软件有限公司 一种运行时程序信息获取方法
CN107870777A (zh) * 2016-09-23 2018-04-03 中兴通讯股份有限公司 一种热补丁实现方法及装置、终端
CN108694988A (zh) * 2017-03-29 2018-10-23 爱思开海力士有限公司 存储器测试系统及其操作方法
CN109446073A (zh) * 2018-09-28 2019-03-08 天津字节跳动科技有限公司 一种软件协同测试方法、装置及电子设备
CN110134561A (zh) * 2019-05-20 2019-08-16 北京嘉楠捷思信息技术有限公司 一种软硬件协同验证中调试信息的输出方法及装置
CN110928760A (zh) * 2018-09-20 2020-03-27 杭州海康汽车技术有限公司 一种嵌入式系统中的单元测试方法与装置
CN111124905A (zh) * 2019-12-17 2020-05-08 中国银联股份有限公司 并行测试方法、装置、设备及存储介质
CN112181851A (zh) * 2020-10-27 2021-01-05 北京字跳网络技术有限公司 软件测试方法、设备及存储介质
CN113342649A (zh) * 2021-05-31 2021-09-03 上海创景信息科技有限公司 基于真实目标机实现单元测试的系统、方法、介质和设备
CN114048130A (zh) * 2021-11-11 2022-02-15 上海复深蓝软件股份有限公司 单元测试方法、装置、计算机设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366387A (ja) * 2001-06-13 2002-12-20 Hitachi Ltd ソフトウェアプログラムの自動テストシステム
US7334219B2 (en) * 2002-09-30 2008-02-19 Ensco, Inc. Method and system for object level software testing
CN1310150C (zh) * 2002-11-21 2007-04-11 中兴通讯股份有限公司 一种嵌入式软件测试方法
CN1326044C (zh) * 2004-10-22 2007-07-11 中国工商银行股份有限公司 一种基于脚本解释工具的自动化软件测试系统

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101316196B (zh) * 2007-05-28 2010-12-08 华为技术有限公司 一种对分布式平台上的业务进行仿真测试的实现方法与装置
CN101110055B (zh) * 2007-08-31 2011-07-13 中兴通讯股份有限公司 在单元测试中实现通用桩函数的装置及其实现方法
CN101894063A (zh) * 2010-06-13 2010-11-24 北京北大众志微系统科技有限责任公司 一种用于微处理器功能验证的测试程序生成方法及装置
CN101894063B (zh) * 2010-06-13 2012-09-26 北京北大众志微系统科技有限责任公司 一种用于微处理器功能验证的测试程序生成方法及装置
WO2012174946A1 (zh) * 2011-06-21 2012-12-27 中兴通讯股份有限公司 软件自动测试的方法及系统
CN102955723B (zh) * 2011-08-19 2015-11-04 中国科学院微电子研究所 一种硬件自动测试方法及系统
CN102955723A (zh) * 2011-08-19 2013-03-06 中国科学院微电子研究所 一种硬件自动测试方法及系统
CN103092825A (zh) * 2011-10-31 2013-05-08 北大方正集团有限公司 一种测试排版处理结果的方法及设备
CN103092825B (zh) * 2011-10-31 2016-03-30 北大方正集团有限公司 一种测试排版处理结果的方法及设备
CN102495802B (zh) * 2011-12-26 2015-03-18 华为技术有限公司 测试软件系统的方法和装置以及计算机系统
CN102495802A (zh) * 2011-12-26 2012-06-13 华为技术有限公司 测试软件系统的方法和装置以及计算机系统
CN103092750A (zh) * 2012-11-13 2013-05-08 瑞斯康达科技发展股份有限公司 一种单元测试方法及装置
CN103019686A (zh) * 2012-11-20 2013-04-03 北京思特奇信息技术股份有限公司 一种跨两个中间件的系统及其编译方法
CN103019686B (zh) * 2012-11-20 2016-11-23 北京思特奇信息技术股份有限公司 一种跨两个中间件的系统及其编译方法
CN102955740A (zh) * 2012-12-13 2013-03-06 中国航空无线电电子研究所 一种基于Perl的驱动函数和桩函数生成方法
WO2014173211A1 (en) * 2013-04-23 2014-10-30 Tencent Technology (Shenzhen) Company Limited Code coverage testing method, device and system
CN104731700A (zh) * 2013-12-20 2015-06-24 广州凯乐软件技术有限公司 一种支持表格驱动局部数据的单元测试系统和方法
CN104731700B (zh) * 2013-12-20 2018-11-09 广州凯乐软件技术有限公司 一种支持表格驱动局部数据的单元测试系统和方法
CN104915292A (zh) * 2015-06-12 2015-09-16 浪潮电子信息产业股份有限公司 一种linux内核模块动态打桩的方法
CN104915292B (zh) * 2015-06-12 2018-01-09 浪潮电子信息产业股份有限公司 一种linux内核模块动态打桩的系统
CN105607996A (zh) * 2015-11-27 2016-05-25 苏州同元软控信息技术有限公司 基于c代码模型的构件接口组装测试方法
CN107169366A (zh) * 2016-03-08 2017-09-15 环达电脑(上海)有限公司 智能设备个人数据信息安全的保护方法
CN107870777A (zh) * 2016-09-23 2018-04-03 中兴通讯股份有限公司 一种热补丁实现方法及装置、终端
CN106603283A (zh) * 2016-12-13 2017-04-26 广州唯品会信息科技有限公司 一种模拟服务的方法、装置及集中管理平台
CN106603283B (zh) * 2016-12-13 2019-09-13 广州品唯软件有限公司 一种模拟服务的方法、装置及集中管理平台
CN108694988A (zh) * 2017-03-29 2018-10-23 爱思开海力士有限公司 存储器测试系统及其操作方法
CN107168870A (zh) * 2017-04-28 2017-09-15 福建星瑞格软件有限公司 一种运行时程序信息获取方法
CN107168870B (zh) * 2017-04-28 2021-10-29 福建星瑞格软件有限公司 一种运行时程序信息获取方法
CN110928760A (zh) * 2018-09-20 2020-03-27 杭州海康汽车技术有限公司 一种嵌入式系统中的单元测试方法与装置
CN110928760B (zh) * 2018-09-20 2023-10-20 杭州海康汽车技术有限公司 一种嵌入式系统中的单元测试方法与装置
CN109446073B (zh) * 2018-09-28 2022-05-24 天津字节跳动科技有限公司 一种软件协同测试方法、装置及电子设备
CN109446073A (zh) * 2018-09-28 2019-03-08 天津字节跳动科技有限公司 一种软件协同测试方法、装置及电子设备
CN110134561A (zh) * 2019-05-20 2019-08-16 北京嘉楠捷思信息技术有限公司 一种软硬件协同验证中调试信息的输出方法及装置
CN110134561B (zh) * 2019-05-20 2023-07-14 嘉楠明芯(北京)科技有限公司 一种软硬件协同验证中调试信息的输出方法及装置
CN111124905A (zh) * 2019-12-17 2020-05-08 中国银联股份有限公司 并行测试方法、装置、设备及存储介质
CN111124905B (zh) * 2019-12-17 2023-07-18 中国银联股份有限公司 并行测试方法、装置、设备及存储介质
CN112181851A (zh) * 2020-10-27 2021-01-05 北京字跳网络技术有限公司 软件测试方法、设备及存储介质
CN113342649A (zh) * 2021-05-31 2021-09-03 上海创景信息科技有限公司 基于真实目标机实现单元测试的系统、方法、介质和设备
CN113342649B (zh) * 2021-05-31 2023-11-14 上海创景信息科技有限公司 基于真实目标机实现单元测试的方法、介质和设备
CN114048130A (zh) * 2021-11-11 2022-02-15 上海复深蓝软件股份有限公司 单元测试方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN100388229C (zh) 2008-05-14

Similar Documents

Publication Publication Date Title
CN1873626A (zh) 一种自动生成桩和驱动函数的单元测试系统及方法
CN1767453A (zh) 自动测试方法和系统
CN1181428C (zh) 软件翻译的内省编辑器系统、程序和方法
CN1293464C (zh) 混合光栅内容文件的产生和编译方法
CN1737779A (zh) 一种扩展外设的方法及系统
CN1324468C (zh) 信息处理装置、信息处理方法
CN1229944A (zh) 用于减少预装类的脚印的系统和方法
CN1282046C (zh) 图像形成设备、打包方法
CN1873689A (zh) 图像处理设备、方法和存储有程序的存储介质
CN1873692A (zh) 图像处理装置、方法以及存储程序的存储介质
CN101034371A (zh) 用于测试方案的方法和装置
CN1811702A (zh) 开发门户应用和自动部署门户应用的系统和方法
CN1851655A (zh) 通过由测试集组成的测试环境来实现产品自动测试的方法
CN1781075A (zh) 电子文件更新期间的设备存储器管理
CN1949187A (zh) 一种程序调测系统及方法
CN1841298A (zh) 信息处理装置和方法,程序以及存储介质
CN1967485A (zh) 一种实现j2ee应用的方法及系统
CN1731747A (zh) 自动化测试框架系统及方法
CN1852177A (zh) 测试适配器和测试工具系统及其测试方法
CN1916842A (zh) 构件化软件系统中实现反射机制的构件封装方法
CN1908894A (zh) 基于Brew的一种动态用户界面的体系结构和实现方法
CN1904853A (zh) 一种嵌入式软件装载调试方法及其系统
CN1167011C (zh) 可进行多种应用协议测试的方法
CN1873691A (zh) 图像处理装置、方法以及存储程序的存储介质
CN1873686A (zh) 图像处理装置、方法以及存储程序的存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BEIJING YUANXIN TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: ZTE CORPORATION

Effective date: 20141103

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 518000 SHENZHEN, GUANGDONG PROVINCE TO: 100176 DAXING, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20141103

Address after: 408, -27, room 100176, building 8, building 1, Bei Sheng North Street, Beijing economic and Technological Development Zone, Beijing, China

Patentee after: BEIJING YUANXIN TECHNOLOGY CO., LTD.

Address before: 518000, Nanshan District high tech Industrial Park, Guangdong province Shenzhen science and technology south road Zhongxing building A block 6

Patentee before: ZTE Corporation

DD01 Delivery of document by public notice
DD01 Delivery of document by public notice

Addressee: BEIJING YUANXIN TECHNOLOGY CO., LTD.

Document name: Notification to Pay the Fees

DD01 Delivery of document by public notice
DD01 Delivery of document by public notice

Addressee: BEIJING YUANXIN TECHNOLOGY CO., LTD.

Document name: Notification of Termination of Patent Right

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: 20080514

Termination date: 20170601