CN1983209A - 一种软件单元测试自动化系统及其方法 - Google Patents

一种软件单元测试自动化系统及其方法 Download PDF

Info

Publication number
CN1983209A
CN1983209A CN 200510126499 CN200510126499A CN1983209A CN 1983209 A CN1983209 A CN 1983209A CN 200510126499 CN200510126499 CN 200510126499 CN 200510126499 A CN200510126499 A CN 200510126499A CN 1983209 A CN1983209 A CN 1983209A
Authority
CN
China
Prior art keywords
test
file
module
setting
script
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 200510126499
Other languages
English (en)
Other versions
CN100487667C (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.)
ZTE Corp
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 CNB2005101264991A priority Critical patent/CN100487667C/zh
Publication of CN1983209A publication Critical patent/CN1983209A/zh
Application granted granted Critical
Publication of CN100487667C publication Critical patent/CN100487667C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及一种软件单元测试自动化系统及其方法,单元测试时,打开被测试单元的源文件和测试脚本文件,多语言支持模块根据源文件确定编程语言类型,选择相应编译器对源文件编译生成目标文件,脚本解释模块分析测试脚本文件,调用目标文件分析模块对目标文件进行分析,二进制测试代码生成模块根据测试脚本设置插入相应指令,产生单元测试二进制代码,在创建进程运行后,测试结果输出模块把测试结果和覆盖率统计,保存到文件中或界面显示,测试结果判断模块自动判断测试结果是否正常。本发明可自动添加测试代码,避免手工修改代码,可实现回归测试,方便地实现异常模拟测试,支持多种语言效果,节省了单元测试时间,提高了测试效率。

Description

一种软件单元测试自动化系统及其方法
技术领域
本发明涉及软件单元测试领域,尤其涉及软件自动化测试系统与方法。
背景技术
软件必须通过测试才能确保其在应用环境中工作正常,软件测试是保障软件质量的重要手段。软件测试除有效发现软件中任何缺陷外,还必须是高效的,尽可能占有时间少且开销小。自动化测试将有效地提高测试效率和测试质量。
软件开发生命周期编码阶段,必须进行单元测试。单元测试是在软件开发过程中要进行的最低级别的测试活动。在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。软件单元可以是函数,类,类的方法,规模一般比较小。单元测试检验软件单元有无错误,检验单元是否与设计吻合。
目前实现单元测试的方法是对被测代码中增加测试代码,编写大量的桩函数和驱动函数的方法来实现。这种方法最大的问题是需要增加和修改大量的程序代码,破坏了原先代码。测试完成后,需要从程序代码中删除增加的测试代码,同时不能很方便地支持回归测试。对不太可能发生异常的情况,如文件读写失败,资源申请失败等,不能很好模拟,造成代码中某些分支没有得到运行测试,造成隐患。测试过程不能自动化,效率比较低。对测试代码语言种类单一,一种工具只能支持某一种语言。
发明内容
本发明所要解决的技术问题在于提供一种软件单元测试自动化系统及其方法,克服现有技术中存在的实现测试时需要手工添加和删除代码,自动化程度低,回归测试差,异常模拟能力低,支持单一语言问题和缺陷,提供一种支持多语言的软件单元测试自动化的系统和方法,很方便地支持回归测试。
为了实现上述目的,本发明提供了一种软件单元测试自动化系统,包括有
测试脚本文件;
脚本解释模块,用于分析测试脚本文件;
测试设置模块,用于对测试单元进行测试设置;
脚本生成模块,用于把测试设置作为测试脚本保存到文件中;
测试结果输出模块,用于把测试结果和覆盖率统计,保存到文件中或界面显示;
其特点在于,还包括:
环境设置模块,用于让用户设置运行环境信息;
多语言支持模块,用于在用户打开测试源文件时,对源文件的编程语言类型进行判断,调用相应的编译器对源文件进行编译生成目标文件;
目标文件分析模块,用于对目标文件进行分析;
二进制测试代码生成模块,用于根据测试脚本设置插入相应指令,产生单元测试二进制代码;
测试代码执行模块,用于运行根据所产生的单元测试二进制代码创建的测试线程;
测试结果判断模块,用于根据输出结果和判断条件,判断测试是否通过。
为了实现上述目的,本发明还提供了一种软件单元测试自动化的方法,其特点在于,包括如下步骤:
步骤一,环境设置模块在该软件单元测试自动化系统中进行环境设置;
步骤二,打开要进行单元测试的源文件;
步骤三,多语言支持模块对源文件分析,确定编程语言类型,选择相应编译器对源文件编译生成目标文件;
步骤四,没有测试脚本时,用户可以先选择对测试单元进行测试设置,测试设置模块根据用户的设置保存到内存中,脚本生成模块把设置作为测试脚本保存到文件中;
步骤五,用户打开测试脚本文件,脚本解释模块分析测试脚本,从中读出与单元测试有关的信息;
步骤六,目标文件分析模块对目标文件进行分析,提出与单元测试有关的信息;
步骤七,比较测试脚本中分析出来的信息和目标文件中分析出来的信息是否一致,如果比较不通过则报告出错;
步骤八,二进制测试代码生成模块依据测试设置,自动插入相应指令,生成最终的二进制测试代码。
步骤九,该软件单元测试自动化系统根据所生成的二进制测试代码创建一测试线程,线程入口地址是测试代码执行模块,运行该测试线程;
步骤十,创建线程运行结束后,测试结果输出模块把输出结果和覆盖率统计保存到文件中,同时显示在界面上;
步骤十一,测试结果判断模块根据输出结果和判断条件,判断测试是否通过。
上述的方法,其特点在于,在步骤一中,该环境设置模块设置运行环境信息的过程包括:指定编译时需要的头文件的路径、资源文件路径、编译生成目标文件的存放位置、以及用户需要编译时增加的选项。
上述的方法,其特点在于,在步骤四中,该测试设置模块对测试单元进行测试设置的过程至少包括:测试单元的入参值设置、变量的值设置、桩函数设置、覆盖率设置、输出设置、结果判断条件;并且,该脚本生成模块是将测试设置需要的内存信息转换成字符串信息,作为测试脚本保存。
上述的方法,其特点在于,在步骤五中,该脚本解释模块是把文本保存的测试脚本文件从硬盘读入后,转换成内存方式,并从中读出与单元测试有关的信息,包括:被测单元对象、入参值设置、变量的值设置、桩函数设置、覆盖率设置、输出设置、结果判断条件。
上述的方法,其特点在于,在步骤六中,该目标文件分析模块从目标文件中提出与单元测试有关的信息,包括:单元信息、入参信息、变量信息、及单元的代码信息。
上述的方法,其特点在于,在步骤八中,该二进制测试代码生成模块分析被测单元的代码信息,依据测试设置,对函数的代码进行动态修改,自动插入单元的运行中间变量设置指令、桩函数设置指令、覆盖率设置指令、单元运行中间的输出设置指令,生成最终的二进制测试代码。
上述的方法,其特点在于,在步骤九中,测试执行模块把被测单元的入参设置压入堆栈,完成最初变量的初始化,调用被测单元,完成测试线程的运行。
上述的方法,其特点在于,在步骤十中,该测试结果输出模块在单元运行结束后,把设置中需要的信息转换成字符串,以文本文件的方式写到文件中,显示在界面上,输出的内容包括:被测单元名称、开始测试时间、结束时间、入参设置、全局变量设置、桩函数设置、用户设置需要输出的值、覆盖率统计结果。
上述的方法,其特点在于,所述测试脚本文件是一以WINDOWS的INI配置文件为格式的文本文件,可以直接通过文本编辑器修改。
采用本发明所述系统及方法,与现有技术相比,取得了自动添加测试代码的进步,达到了避免手工修改代码,实现回归测试,方便地实现异常模拟测试,支持多种语言效果,节省了单元测试时间,提高了测试效率。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1是本发明的测试脚本文件生成过程示意图;
图2是本发明的单元测试过程示意图;
图3是本发明的二进制测试代码生成模块流程示意图。
具体实施方式
本发明的软件单元测试自动化系统,除包括测试脚本文件、脚本解释模块、测试设置模块、脚本生成模块、测试结果输出模块之外,还包括:环境设置模块、多语言支持模块、目标文件分析模块、二进制测试代码生成模块、测试代码执行模块、测试结果判断模块。要进行单元测试时,用户打开被测试单元的源文件和测试脚本文件,多语言支持模块根据源文件确定编程语言类型,选择相应的编译器对源文件编译生成目标OBJ文件,脚本解释模块分析测试脚本文件,调用目标文件分析模块对编译生成的目标文件进行分析,二进制测试代码生成模块根据测试脚本设置插入相应指令,产生单元测试二进制代码,测试工具把生成的二进制代码创建一进程运行,测试结果输出模块把测试结果和覆盖率统计,保存到文件中或界面显示,测试结果判断模块自动判断测试结果是否正常。用户可以通过测试设置模块对测试脚本进行修改,通过脚本生成模块保存到文件中。
具体说来,本发明的软件单元测试自动化方法包括以下步骤:
第一步:通过环境设置模块进行运行环境的设置;
第二步:打开要进行单元测试的源文件;
第三步:多语言支持模块对源文件分析,确定编程语言类型,选择相应编译器对源文件编译生成目标OBJ文件;
第四步:没有测试脚本时,用户可以先选择对测试单元进行测试设置,包括测试单元的入参值设置,变量的值设置,桩函数设置,覆盖率设置,输出设置,结果判断条件等,测试设置模块根据用户的设置保存到内存中,脚本生成模块把设置保存到文件中;
第五步:用户打开测试脚本文件,脚本解释模块分析测试脚本,从中读处被测单元对象,入参值设置,变量的值设置,桩函数设置,覆盖率设置,输出设置,结果判断条件,测试设置模块可以在之基础上进行修改;
第六步:目标文件分析模块对OBJ文件进行分析,提出单元信息,入参信息,变量信息,及单元的代码信息;
第七步:比较测试脚本中分析出来的信息和目标文件中分析出来的信息是否一致,如要测的单元在目标文件中是否存在,测试脚本中的各入参设置是否和目标文件中相符,如果比较不通过则报告出错;
第八步:二进制测试代码生成模块分析被测单元的代码信息,依据测试设置,自动插入单元的运行中间变量设置指令,桩函数设置指令,覆盖率设置指令,单元运行中间的输出设置指令,生成最终的二进制测试代码;
第九步:测试工具创建一线程,线程入口地址是测试代码执行模块。在测试执行模块中,把被测单元的入参设置压入堆栈,完成最初变量的初始化,调用被测单元;
第十步:创建线程运行结束后,测试结果输出模块把输出结果和覆盖率统计保存到文件中,同时显示在界面上;
第十一步:测试结果判断模块根据输出结果和判断条件,判断测试是否通过。
下面结合附图对本发明的技术方案的实施作进一步的详细描述:
图1列出了测试脚本文件生成过程。
环境设置模块101让用户设置运行环境信息,主要是指定编译时需要的头文件的路径,资源文件路径,编译生成目标OBJ文件的存放位置,以及用户需要编译时增加的选项。
多语言支持模块102在用户打开测试源文件时,对源文件的编程语言类型进行判断,调用相应的编译器对源文件进行编译。主要是以源文件名后缀判断类型,后缀是“.c”或“.cpp”的源文件,是C语言类型,调用VC的编译器cl.exe,后缀是“.pas”的源文件,是DELPHI类型,调用dcc32.exe编译,后缀是“.asm”的源文件是汇编类型,调用masm的ml.exe编译,masm版本号为V6.14。采用命令行方式调用编译器:
Cl/c/Zi/I头文件路径/Fo目标文件路径源文件名
Dcc32-J-I头文件路径-R资源文件路径-O目标文件路径源文件名
Ml/coff/c/Zd/Zi/I头文件路径/Fo目标文件路径源文件名
目标文件分析模块103对编译器生成的OBJ文件进行分析,不同的编译器产生的OBJ文件格式不一样,需要调用不同的算法进行分析。分析的主要的目的是从OBJ文件中得到源文件中包含的全局变量,函数,各个函数的入参信息,包括入参个数及入参数据类型,各个函数的局部变量信息,各个函数的代码信息,及其在覆盖率统计需要的代码和源文件行号的对应信息。实现该模块的关键技术在于OBJ文件的格式,VC编译器CL.EXE生成的OBJ文件是COFF(Common Object File Format)格式,在头文件WINNT.H中有定义。DELPHI编译器DCC32.EXE生成的OBJ格式,可以用DELPHI下的自带的TDUMP.EXE进行分解。MASM编译器ML.EXE生成的OBJ文件时,输入选项“/coff”,强制生成COFF格式的OBJ格式。
在目标文件分析模块对OBJ文件分析后产生的信息后,测试设置模块104显示出函数名列表,用户选择函数后,进行设置操作:测试名称,测试时长,如果该函数有入参,则让用户对入参进行设置,主要是对入参进行赋值,对入参赋值时要考虑到入参的正常范围值,边界值,非法值,函数入参的正常值肯定有,边界值和异常值不一定有,但测试时三种情况必须考虑,否则代码健壮性有问题;用户根据测试需要对全局变量进行初始化;桩函数设置,列出该函数调用其它函数名的列表,用户选择需要设置为桩函数的函数名,通过桩函数设置实现测试单元与其它单元的隔离,也可通过桩函数设置指定桩函数返回值实现一些异常测试;覆盖率设置,用户指定需要进行覆盖率统计的代码范围;输出设置,用户指定运行结束后需要保存到文件中和显示在界面上的变量,可以是全局变量,局部变量,函数输出参数,函数返回值;测试结果判断设置用户指定输出设置中的变量值的范围。
在测试设置完毕后,通过脚本生成模块105把测试设置需要的内存信息转换成字符串信息,作为测试脚本保存到文件中,供回归测试使用。
测试脚本文件106是一以WINDOWS的INI配置文件为格式的文本文件,可以直接通过文本编辑器修改。
图2列出了本发明的单元测试过程。
脚本解释模块201,把文本保存的测试脚本文件从硬盘读入后,转换成内存方式,这一点和脚本生成模块实现刚好相反。另外脚本解释模块还要进行必要检查,如脚本中的函数在打开的源文件中是否存在,函数的入参是否和源文件中一致,需要初始化的全局变量是否在源文件中存在,类型是否一致,需要输出的信息与源文件中是否相符,桩函数设置中与源文件中相符。
二进制测试代码生成模块202是本发明的核心模块,在图3中对其流程作了说明。主要功能是根据设置对函数的代码进行动态修改,增加或修改相应指令,修改时及时调整代码中的跳转地址和调用地址,注意原先的短跳转指令调整地址后如果跳转地址超过128字节,需要变成长跳转指令。开始需要申请三块内存,pCodeBuf用于存放新代码,长度为原代码长度的2倍,在以后添加代码过程中如果空间不够,需要及时重新申请,pDataBuf用于存放设置测试输出的信息,长度为所有输出信息的长度和,pCoverBuf用于存放覆盖率信息,长度为原代码长度。单元运行中变量设置,对指定变量进行赋值。单元运行中变量输出设置,把指定变量的值输出到指定内存区域。桩函数设置,把调用函数的位置用空指令代替,并根据用户设置对寄存器EAX,EDX赋值,作为桩函数的返回值。覆盖率设置,作代码分支覆盖率统计,对申请到的内存pCoverBuf清0,对整个被测单元的代码反汇编,在跳转指令后和跳转目标地址插入覆盖率统计指令,插入的指令实现对申请到的内存相应位置置1操作,注意需要保护插入指令中使用到的寄存器原先的值,如下所示,变量iCoverOff为内存偏移:
push esi
mov esi,pCoverBuf
mov[esi+iCoverOff],1
pop esi
iCoverOff加1
在覆盖率统计时如果内存中值为1表明相应的分支得到运行,与在目标文件分析模块得出的代码和源文件行号的对应信息相结合,这样可以统计出被测单元的覆盖率。
测试代码执行模块203,是测试线程的入口。首先入参设置,对应普通变量的入参,直接把值压入堆栈,对指针类型,需要对指针指向的内容设置的入参,先按照指针父类型的大小申请一块内存,把申请到内存的地址压入堆栈,再把内存按照指针父类型转换后,对各个字段赋值。其次全局变量设置,按照设置修改全局变量内存的值。最后调用二进制测试代码生成模块产生的测试代码。
测试结果输出模块204,在单元运行结束后,把设置中需要的信息转换成字符串,以文本文件的方式写到文件中,显示在界面上。输出内容包括:被测单元名称,开始测试时间,结束时问,入参设置,全局变量设置,桩函数设置,用户设置需要输出的值,覆盖率统计结果。
测试结果判断模块205,对测试结果判断设置进行简单的编译,根据测试结果判断设置,取出对应的变量值判断是否在用户的设置范围内,可以得出本次测试结果是否正常,显示在界面上。
至此,单元测试结束,释放在测试中申请的内存。
在整个单元测试过程中,输入被测单元代码后,不需要手工修改任何代码,自动实现入参输入,全局变量初始化,变量观察输出,桩函数设置,覆盖率统计,真正实现自动化测试,能很好地支持回归测试,节省测试时间,提高效率。通过单元运行中设置变量模拟异常情况,增加分支覆盖率。
本发明的方法已在实验中被证实可行。
以下是本发明方法的具体举例:
所需被测单元用C语言的编写。
int test(int InPara)
{
    if(InPara)
    retum 1;
   else
    return 0;
}
测试设置后,测试脚本如下:
[测试用例0]
用例名称=test
运行次数=1
函数运行时长(秒)=1
函数0=test()
函数0_入参0_InPara=1
函数0_输出0=返回值
判断规则=((函数0_入参0_nPara!=0)&&(函数0_输出0!=0)
          ||(函数0_入参0_InPara==0)&&(函数0_输出0==0))
多语言支持模块编译生成OBJ文件,函数代码反汇编如下:
push ebp
mov ebp,esp
cmp dword ptr[ebp+0x08],0x00
jz  RET_ZERO
mov eax,0x00000001
pop ebp
ret 0x04
RET_ZERO:
xor eax,eax
pop ebp
ret 0x04
经过二进制测试代码生成模块运行后,最终测试代码如下:
push ebp
mov ebp,esp
;插入覆盖率统计0
push esi
mov esi,pCoverBuf
mov[esi],1
pop esi
cmp dword ptr[ebp+0x08],0x00
jz RET_ZERO1
;插入覆盖率统计1
push esi
mov esi,pCoverBuf
mov[esi+1],1
pop esi
mov eax,0x00000001
pop ebp
ret 0x04
RET_ZERO1:
;插入覆盖率统计2
push esi
mov esi,pCoverBuf
mov[esi+2],1
pop esi
xor eax,eax
pop ebp
ret 0x04
测试代码执行模块,把入参InPara的设置值1压入堆栈,把pCodeBuf作为函数地址调用。被测单元test的返回结果,在测试代码执行模块中把寄存器eax的值放入pDataBuf中,如下:
push esi
mov esi,pDataBuf
mov[esi],eax
pop esi
测试结果输出模块和测试结果判断模块,在取函数返回值时,直接从pDataBuf中取,保证数据可靠性。
从上面简单的例子可以看出,在整个测试过程中,不需要手工对测试代码进行任何修改,即可自动实现入参的输入,函数返回值的输出,覆盖率统计实现,及其测试结果的判断。真正实现单元测试自动化。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (10)

1、一种软件单元测试自动化系统,包括有
测试脚本文件;
脚本解释模块,用于分析测试脚本文件;
测试设置模块,用于对测试单元进行测试设置;
脚本生成模块,用于把测试设置作为测试脚本保存到文件中;
测试结果输出模块,用于把测试结果和覆盖率统计,保存到文件中或界面显示;
其特征在于,还包括:
环境设置模块,用于让用户设置运行环境信息;
多语言支持模块,用于在用户打开测试源文件时,对源文件的编程语言类型进行判断,调用相应的编译器对源文件进行编译生成目标文件;
目标文件分析模块,用于对目标文件进行分析;
二进制测试代码生成模块,用于根据测试脚本设置插入相应指令,产生单元测试二进制代码;
测试代码执行模块,用于运行根据所产生的单元测试二进制代码创建的测试线程;
测试结果判断模块,用于根据输出结果和判断条件,判断测试是否通过。
2、一种软件单元测试自动化的方法,其特征在于,包括如下步骤:
步骤一,环境设置模块在该软件单元测试自动化系统中进行环境设置;
步骤二,打开要进行单元测试的源文件;
步骤三,多语言支持模块对源文件分析,确定编程语言类型,选择相应编译器对源文件编译生成目标文件;
步骤四,没有测试脚本时,用户可以先选择对测试单元进行测试设置,测试设置模块根据用户的设置保存到内存中,脚本生成模块把设置作为测试脚本保存到文件中;
步骤五,用户打开测试脚本文件,脚本解释模块分析测试脚本,从中读出与单元测试有关的信息;
步骤六,目标文件分析模块对目标文件进行分析,提出与单元测试有关的信息;
步骤七,比较测试脚本中分析出来的信息和目标文件中分析出来的信息是否一致,如果比较不通过则报告出错;
步骤八,二进制测试代码生成模块依据测试设置,自动插入相应指令,生成最终的二进制测试代码。
步骤九,该软件单元测试自动化系统根据所生成的二进制测试代码创建一测试线程,线程入口地址是测试代码执行模块,运行该测试线程;
步骤十,创建线程运行结束后,测试结果输出模块把输出结果和覆盖率统计保存到文件中,同时显示在界面上;
步骤十一,测试结果判断模块根据输出结果和判断条件,判断测试是否通过。
3、根据权利要求2所述的方法,其特征在于,在步骤一中,该环境设置模块设置运行环境信息的过程包括:指定编译时需要的头文件的路径、资源文件路径、编译生成目标文件的存放位置、以及用户需要编译时增加的选项。
4、根据权利要求3所述的方法,其特征在于,在步骤四中,该测试设置模块对测试单元进行测试设置的过程至少包括:测试单元的入参值设置、变量的值设置、桩函数设置、覆盖率设置、输出设置、结果判断条件;并且,该脚本生成模块是将测试设置需要的内存信息转换成字符串信息,作为测试脚本保存。
5、根据权利要求4所述的方法,其特征在于,在步骤五中,该脚本解释模块是把文本保存的测试脚本文件从硬盘读入后,转换成内存方式,并从中读出与单元测试有关的信息,包括:被测单元对象、入参值设置、变量的值设置、桩函数设置、覆盖率设置、输出设置、结果判断条件。
6、根据权利要求5所述的方法,其特征在于,在步骤六中,该目标文件分析模块从目标文件中提出与单元测试有关的信息,包括:单元信息、入参信息、变量信息、及单元的代码信息。
7、根据权利要求6所述的方法,其特征在于,在步骤八中,该二进制测试代码生成模块分析被测单元的代码信息,依据测试设置,对函数的代码进行动态修改,自动插入单元的运行中间变量设置指令、桩函数设置指令、覆盖率设置指令、单元运行中间的输出设置指令,生成最终的二进制测试代码。
8、根据权利要求7所述的方法,其特征在于,在步骤九中,测试执行模块把被测单元的入参设置压入堆栈,完成最初变量的初始化,调用被测单元,完成测试线程的运行。
9、根据权利要求8所述的方法,其特征在于,在步骤十中,该测试结果输出模块在单元运行结束后,把设置中需要的信息转换成字符串,以文本文件的方式写到文件中,显示在界面上,输出的内容包括:被测单元名称、开始测试时间、结束时间、入参设置、全局变量设置、桩函数设置、用户设置需要输出的值、覆盖率统计结果。
10、根据权利要求2所述的方法,其特征在于,所述测试脚本文件是一以WINDOWS的INI配置文件为格式的文本文件,可以直接通过文本编辑器修改。
CNB2005101264991A 2005-12-14 2005-12-14 一种软件单元测试自动化系统及其方法 Expired - Fee Related CN100487667C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005101264991A CN100487667C (zh) 2005-12-14 2005-12-14 一种软件单元测试自动化系统及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005101264991A CN100487667C (zh) 2005-12-14 2005-12-14 一种软件单元测试自动化系统及其方法

Publications (2)

Publication Number Publication Date
CN1983209A true CN1983209A (zh) 2007-06-20
CN100487667C CN100487667C (zh) 2009-05-13

Family

ID=38165762

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101264991A Expired - Fee Related CN100487667C (zh) 2005-12-14 2005-12-14 一种软件单元测试自动化系统及其方法

Country Status (1)

Country Link
CN (1) CN100487667C (zh)

Cited By (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102147758A (zh) * 2011-03-16 2011-08-10 深圳创维数字技术股份有限公司 一种待测设备自动编译及配置方法、装置、系统
CN102289365A (zh) * 2010-06-21 2011-12-21 中兴通讯股份有限公司 脚本驱动软件构建方法和装置
CN101634965B (zh) * 2008-07-24 2012-01-11 三星电子(中国)研发中心 一种Linux内核级单元测试的方法
CN102567164A (zh) * 2011-12-23 2012-07-11 中国科学院自动化研究所 用于处理器的指令集批量测试装置与方法
CN102591777A (zh) * 2012-01-10 2012-07-18 深圳市同洲视讯传媒有限公司 一种单元测试代码生成方法及装置
CN102841837A (zh) * 2012-06-26 2012-12-26 中国科学院声学研究所 一种基于模拟器的软硬件协同验证方法及系统
CN103049378A (zh) * 2012-12-18 2013-04-17 惠州市亿能电子有限公司 一种无需仿真器的程序调试方法
CN103164323A (zh) * 2011-12-09 2013-06-19 深圳市腾讯计算机系统有限公司 数据自动生成方法以及数据自动生成系统
WO2013174200A1 (zh) * 2012-05-24 2013-11-28 腾讯科技(深圳)有限公司 代码分析方法及代码分析系统、计算机存储介质
CN103502952A (zh) * 2011-03-08 2014-01-08 惠普发展公司,有限责任合伙企业 创建测试用例
CN103500141A (zh) * 2013-10-09 2014-01-08 中国联合网络通信集团有限公司 自动化测试方法和装置
CN103714006A (zh) * 2014-01-07 2014-04-09 浪潮(北京)电子信息产业有限公司 一种Gromacs软件的性能测试方法
CN104035873A (zh) * 2014-06-30 2014-09-10 青岛海信电器股份有限公司 测试代码生成方法及生成装置
WO2014173211A1 (en) * 2013-04-23 2014-10-30 Tencent Technology (Shenzhen) Company Limited Code coverage testing method, device and system
WO2014180396A1 (zh) * 2013-12-06 2014-11-13 中兴通讯股份有限公司 代码覆盖率处理方法及装置
CN104199767A (zh) * 2014-08-19 2014-12-10 北京金山安全软件有限公司 测试方法和装置
CN104657270A (zh) * 2015-02-28 2015-05-27 北京嘀嘀无限科技发展有限公司 测试方法和系统
CN104731700A (zh) * 2013-12-20 2015-06-24 广州凯乐软件技术有限公司 一种支持表格驱动局部数据的单元测试系统和方法
WO2016015220A1 (en) * 2014-07-29 2016-02-04 Hewlett-Packard Development Company, L.P. Executable code abnormality detection
CN105677297A (zh) * 2014-11-18 2016-06-15 龙芯中科技术有限公司 套锁实现方法及装置
CN105718251A (zh) * 2014-12-03 2016-06-29 苏宁云商集团股份有限公司 多语言sdk自动化实现方法及系统
CN105760292A (zh) * 2014-12-18 2016-07-13 阿里巴巴集团控股有限公司 一种用于单元测试的断言验证方法和装置
CN105867990A (zh) * 2015-11-20 2016-08-17 乐视云计算有限公司 软件开发一体化的方法及装置
CN105893104A (zh) * 2016-03-28 2016-08-24 乐视控股(北京)有限公司 代码编译的方法和装置
CN106294053A (zh) * 2016-07-28 2017-01-04 浪潮电子信息产业股份有限公司 一种内存性能测试方法及装置
CN106649110A (zh) * 2016-12-15 2017-05-10 中标软件有限公司 软件测试方法及系统
CN106933730A (zh) * 2015-12-29 2017-07-07 北京国睿中数科技股份有限公司 基于测试框架系统的测试方法、装置和测试框架系统
CN106980504A (zh) * 2017-03-28 2017-07-25 腾讯科技(深圳)有限公司 一种应用程序开发方法及其工具、设备
CN107643980A (zh) * 2017-08-21 2018-01-30 武汉斗鱼网络科技有限公司 一种定位崩溃信息的方法与设备
CN107748302A (zh) * 2017-09-06 2018-03-02 国营芜湖机械厂 一种座椅电气附件自动综合检测设备自动测试控制方法
CN107992405A (zh) * 2016-10-27 2018-05-04 中兴通讯股份有限公司 应用软件测试方法及装置
CN108073499A (zh) * 2016-11-10 2018-05-25 腾讯科技(深圳)有限公司 应用程序的测试方法及装置
CN108090347A (zh) * 2016-11-23 2018-05-29 阿里巴巴集团控股有限公司 一种数据处理方法和系统
CN104834590B (zh) * 2014-02-11 2018-11-23 腾讯科技(深圳)有限公司 软件测试方法和系统
CN109710537A (zh) * 2019-01-02 2019-05-03 郑州云海信息技术有限公司 一种智能自动化测试方法及系统
CN110018953A (zh) * 2018-01-10 2019-07-16 武汉斗鱼网络科技有限公司 使用python测试JS代码的方法、存储介质、设备和系统
CN110175131A (zh) * 2019-04-29 2019-08-27 合肥移瑞通信技术有限公司 一种基于PyQt工具包的脚本管理方法及系统
CN110300377A (zh) * 2019-06-17 2019-10-01 合肥移瑞通信技术有限公司 一种基站定位动态场的测试方法及系统
CN110580226A (zh) * 2019-09-23 2019-12-17 上海创景信息科技有限公司 操作系统级程序的目标码覆盖率测试方法、系统及介质
CN110990282A (zh) * 2019-12-04 2020-04-10 中国直升机设计研究所 一种自动化单元测试方法
CN111008151A (zh) * 2019-12-20 2020-04-14 上海品顺信息科技有限公司 程序扫描方法、终端设备及计算机可读存储介质
CN111382055A (zh) * 2018-12-29 2020-07-07 贝壳技术有限公司 一种基于统一描述语言的自动化单元测试方法及装置
CN111400162A (zh) * 2019-01-02 2020-07-10 阿里巴巴集团控股有限公司 一种测试方法及测试系统
CN111488140A (zh) * 2019-01-29 2020-08-04 杭州海康威视数字技术股份有限公司 一种支持多编程语言多编程库的方法、装置和计算机设备
CN111552475A (zh) * 2020-04-20 2020-08-18 武汉精测电子集团股份有限公司 一种半导体存储器老化测试的Workload测试文件编译方法、测试方法及系统
CN111651346A (zh) * 2020-04-27 2020-09-11 平安医疗健康管理股份有限公司 前端组件的测试方法、装置、存储介质及计算机设备
CN112035370A (zh) * 2020-09-04 2020-12-04 常州新途软件有限公司 一种单元测试代码自动生成系统及其生成方法
CN112131869A (zh) * 2020-09-02 2020-12-25 苏州好玩友网络科技有限公司 基于多语言的文本检测方法及装置
CN112181799A (zh) * 2019-07-05 2021-01-05 北京新能源汽车股份有限公司 一种软件配置参数的测试方法、装置及汽车
CN112328226A (zh) * 2020-09-17 2021-02-05 北京中数科技术有限公司 一种嵌入式系统自动化测试代码生成方法及装置
CN112445550A (zh) * 2020-12-08 2021-03-05 中国科学院深圳先进技术研究院 一种预处理函数的无服务器计算方法及其系统
CN112988551A (zh) * 2019-12-12 2021-06-18 腾讯科技(深圳)有限公司 代码覆盖率测试方法及装置
CN113326190A (zh) * 2021-05-27 2021-08-31 北京百度网讯科技有限公司 代码覆盖率的确定方法、装置和电子设备
CN113360410A (zh) * 2021-07-19 2021-09-07 上汽通用五菱汽车股份有限公司 一种c代码软件的测试方法与可读存储介质
CN113377677A (zh) * 2021-07-08 2021-09-10 中国工商银行股份有限公司 一种单元测试方法及装置
CN112445550B (zh) * 2020-12-08 2024-05-17 中国科学院深圳先进技术研究院 一种预处理函数的无服务器计算方法及其系统

Cited By (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101634965B (zh) * 2008-07-24 2012-01-11 三星电子(中国)研发中心 一种Linux内核级单元测试的方法
CN102289365A (zh) * 2010-06-21 2011-12-21 中兴通讯股份有限公司 脚本驱动软件构建方法和装置
WO2011160359A1 (zh) * 2010-06-21 2011-12-29 中兴通讯股份有限公司 脚本驱动软件构建方法和装置
CN103502952A (zh) * 2011-03-08 2014-01-08 惠普发展公司,有限责任合伙企业 创建测试用例
CN102147758A (zh) * 2011-03-16 2011-08-10 深圳创维数字技术股份有限公司 一种待测设备自动编译及配置方法、装置、系统
CN103164323B (zh) * 2011-12-09 2016-12-07 深圳市腾讯计算机系统有限公司 数据自动生成方法以及数据自动生成系统
CN103164323A (zh) * 2011-12-09 2013-06-19 深圳市腾讯计算机系统有限公司 数据自动生成方法以及数据自动生成系统
CN102567164A (zh) * 2011-12-23 2012-07-11 中国科学院自动化研究所 用于处理器的指令集批量测试装置与方法
CN102591777A (zh) * 2012-01-10 2012-07-18 深圳市同洲视讯传媒有限公司 一种单元测试代码生成方法及装置
CN102591777B (zh) * 2012-01-10 2016-04-13 深圳市同洲电子股份有限公司 一种单元测试代码生成方法及装置
CN103425572A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 代码分析方法及代码分析系统
WO2013174200A1 (zh) * 2012-05-24 2013-11-28 腾讯科技(深圳)有限公司 代码分析方法及代码分析系统、计算机存储介质
US9378114B2 (en) 2012-05-24 2016-06-28 Tencent Technology (Shenzhen) Company Limited Code analysis method, code analysis system and computer storage medium
CN103425572B (zh) * 2012-05-24 2016-04-13 腾讯科技(深圳)有限公司 代码分析方法及代码分析系统
CN102841837B (zh) * 2012-06-26 2014-07-30 中国科学院声学研究所 一种基于模拟器的软硬件协同验证方法及系统
CN102841837A (zh) * 2012-06-26 2012-12-26 中国科学院声学研究所 一种基于模拟器的软硬件协同验证方法及系统
CN103049378A (zh) * 2012-12-18 2013-04-17 惠州市亿能电子有限公司 一种无需仿真器的程序调试方法
WO2014173211A1 (en) * 2013-04-23 2014-10-30 Tencent Technology (Shenzhen) Company Limited Code coverage testing method, device and system
CN103500141A (zh) * 2013-10-09 2014-01-08 中国联合网络通信集团有限公司 自动化测试方法和装置
WO2014180396A1 (zh) * 2013-12-06 2014-11-13 中兴通讯股份有限公司 代码覆盖率处理方法及装置
CN104731700B (zh) * 2013-12-20 2018-11-09 广州凯乐软件技术有限公司 一种支持表格驱动局部数据的单元测试系统和方法
CN104731700A (zh) * 2013-12-20 2015-06-24 广州凯乐软件技术有限公司 一种支持表格驱动局部数据的单元测试系统和方法
CN103714006B (zh) * 2014-01-07 2017-05-24 浪潮(北京)电子信息产业有限公司 一种Gromacs软件的性能测试方法
CN103714006A (zh) * 2014-01-07 2014-04-09 浪潮(北京)电子信息产业有限公司 一种Gromacs软件的性能测试方法
CN104834590B (zh) * 2014-02-11 2018-11-23 腾讯科技(深圳)有限公司 软件测试方法和系统
CN104035873A (zh) * 2014-06-30 2014-09-10 青岛海信电器股份有限公司 测试代码生成方法及生成装置
US10459830B2 (en) 2014-07-29 2019-10-29 Micro Focus Llc Executable code abnormality detection
WO2016015220A1 (en) * 2014-07-29 2016-02-04 Hewlett-Packard Development Company, L.P. Executable code abnormality detection
CN104199767A (zh) * 2014-08-19 2014-12-10 北京金山安全软件有限公司 测试方法和装置
CN104199767B (zh) * 2014-08-19 2017-08-29 北京金山安全软件有限公司 测试方法和装置
CN105677297B (zh) * 2014-11-18 2018-05-04 龙芯中科技术有限公司 套锁实现方法及装置
CN105677297A (zh) * 2014-11-18 2016-06-15 龙芯中科技术有限公司 套锁实现方法及装置
CN105718251A (zh) * 2014-12-03 2016-06-29 苏宁云商集团股份有限公司 多语言sdk自动化实现方法及系统
CN105718251B (zh) * 2014-12-03 2019-02-01 苏宁易购集团股份有限公司 多语言sdk自动化实现方法及系统
CN105760292A (zh) * 2014-12-18 2016-07-13 阿里巴巴集团控股有限公司 一种用于单元测试的断言验证方法和装置
CN105760292B (zh) * 2014-12-18 2019-01-08 阿里巴巴集团控股有限公司 一种用于单元测试的断言验证方法和装置
CN104657270A (zh) * 2015-02-28 2015-05-27 北京嘀嘀无限科技发展有限公司 测试方法和系统
WO2017084275A1 (zh) * 2015-11-20 2017-05-26 乐视控股(北京)有限公司 软件开发一体化的方法及装置
CN105867990A (zh) * 2015-11-20 2016-08-17 乐视云计算有限公司 软件开发一体化的方法及装置
CN106933730A (zh) * 2015-12-29 2017-07-07 北京国睿中数科技股份有限公司 基于测试框架系统的测试方法、装置和测试框架系统
CN105893104A (zh) * 2016-03-28 2016-08-24 乐视控股(北京)有限公司 代码编译的方法和装置
CN106294053A (zh) * 2016-07-28 2017-01-04 浪潮电子信息产业股份有限公司 一种内存性能测试方法及装置
CN107992405A (zh) * 2016-10-27 2018-05-04 中兴通讯股份有限公司 应用软件测试方法及装置
CN108073499A (zh) * 2016-11-10 2018-05-25 腾讯科技(深圳)有限公司 应用程序的测试方法及装置
CN108073499B (zh) * 2016-11-10 2020-09-29 腾讯科技(深圳)有限公司 应用程序的测试方法及装置
CN108090347A (zh) * 2016-11-23 2018-05-29 阿里巴巴集团控股有限公司 一种数据处理方法和系统
CN106649110B (zh) * 2016-12-15 2023-09-15 中标软件有限公司 软件测试方法及系统
CN106649110A (zh) * 2016-12-15 2017-05-10 中标软件有限公司 软件测试方法及系统
CN106980504A (zh) * 2017-03-28 2017-07-25 腾讯科技(深圳)有限公司 一种应用程序开发方法及其工具、设备
CN106980504B (zh) * 2017-03-28 2022-07-01 腾讯科技(深圳)有限公司 一种应用程序开发方法及其工具、设备
CN107643980A (zh) * 2017-08-21 2018-01-30 武汉斗鱼网络科技有限公司 一种定位崩溃信息的方法与设备
CN107748302A (zh) * 2017-09-06 2018-03-02 国营芜湖机械厂 一种座椅电气附件自动综合检测设备自动测试控制方法
CN110018953A (zh) * 2018-01-10 2019-07-16 武汉斗鱼网络科技有限公司 使用python测试JS代码的方法、存储介质、设备和系统
CN110018953B (zh) * 2018-01-10 2022-12-23 武汉斗鱼网络科技有限公司 使用python测试JS代码的方法、存储介质、设备和系统
CN111382055A (zh) * 2018-12-29 2020-07-07 贝壳技术有限公司 一种基于统一描述语言的自动化单元测试方法及装置
CN111382055B (zh) * 2018-12-29 2023-09-15 贝壳技术有限公司 一种基于统一描述语言的自动化单元测试方法及装置
CN111400162A (zh) * 2019-01-02 2020-07-10 阿里巴巴集团控股有限公司 一种测试方法及测试系统
CN111400162B (zh) * 2019-01-02 2023-04-25 阿里巴巴集团控股有限公司 一种测试方法及测试系统
CN109710537A (zh) * 2019-01-02 2019-05-03 郑州云海信息技术有限公司 一种智能自动化测试方法及系统
CN111488140B (zh) * 2019-01-29 2023-10-27 杭州海康威视数字技术股份有限公司 一种支持多编程语言多编程库的方法、装置和计算机设备
CN111488140A (zh) * 2019-01-29 2020-08-04 杭州海康威视数字技术股份有限公司 一种支持多编程语言多编程库的方法、装置和计算机设备
CN110175131A (zh) * 2019-04-29 2019-08-27 合肥移瑞通信技术有限公司 一种基于PyQt工具包的脚本管理方法及系统
CN110300377A (zh) * 2019-06-17 2019-10-01 合肥移瑞通信技术有限公司 一种基站定位动态场的测试方法及系统
CN112181799A (zh) * 2019-07-05 2021-01-05 北京新能源汽车股份有限公司 一种软件配置参数的测试方法、装置及汽车
CN110580226A (zh) * 2019-09-23 2019-12-17 上海创景信息科技有限公司 操作系统级程序的目标码覆盖率测试方法、系统及介质
CN110580226B (zh) * 2019-09-23 2021-09-14 上海创景信息科技有限公司 操作系统级程序的目标码覆盖率测试方法、系统及介质
CN110990282A (zh) * 2019-12-04 2020-04-10 中国直升机设计研究所 一种自动化单元测试方法
CN110990282B (zh) * 2019-12-04 2023-07-21 中国直升机设计研究所 一种自动化单元测试方法
CN112988551B (zh) * 2019-12-12 2023-09-26 腾讯科技(深圳)有限公司 代码覆盖率测试方法及装置
CN112988551A (zh) * 2019-12-12 2021-06-18 腾讯科技(深圳)有限公司 代码覆盖率测试方法及装置
CN111008151A (zh) * 2019-12-20 2020-04-14 上海品顺信息科技有限公司 程序扫描方法、终端设备及计算机可读存储介质
CN111008151B (zh) * 2019-12-20 2023-06-13 上海品顺信息科技有限公司 程序扫描方法、终端设备及计算机可读存储介质
CN111552475A (zh) * 2020-04-20 2020-08-18 武汉精测电子集团股份有限公司 一种半导体存储器老化测试的Workload测试文件编译方法、测试方法及系统
CN111552475B (zh) * 2020-04-20 2023-08-15 武汉精测电子集团股份有限公司 一种半导体存储器老化测试的Workload测试文件编译方法、测试方法及系统
CN111651346A (zh) * 2020-04-27 2020-09-11 平安医疗健康管理股份有限公司 前端组件的测试方法、装置、存储介质及计算机设备
CN112131869A (zh) * 2020-09-02 2020-12-25 苏州好玩友网络科技有限公司 基于多语言的文本检测方法及装置
CN112035370A (zh) * 2020-09-04 2020-12-04 常州新途软件有限公司 一种单元测试代码自动生成系统及其生成方法
CN112328226B (zh) * 2020-09-17 2022-03-04 北京中数科技术有限公司 一种嵌入式系统自动化测试代码生成方法及装置
CN112328226A (zh) * 2020-09-17 2021-02-05 北京中数科技术有限公司 一种嵌入式系统自动化测试代码生成方法及装置
CN112445550A (zh) * 2020-12-08 2021-03-05 中国科学院深圳先进技术研究院 一种预处理函数的无服务器计算方法及其系统
CN112445550B (zh) * 2020-12-08 2024-05-17 中国科学院深圳先进技术研究院 一种预处理函数的无服务器计算方法及其系统
CN113326190A (zh) * 2021-05-27 2021-08-31 北京百度网讯科技有限公司 代码覆盖率的确定方法、装置和电子设备
CN113377677A (zh) * 2021-07-08 2021-09-10 中国工商银行股份有限公司 一种单元测试方法及装置
CN113360410A (zh) * 2021-07-19 2021-09-07 上汽通用五菱汽车股份有限公司 一种c代码软件的测试方法与可读存储介质

Also Published As

Publication number Publication date
CN100487667C (zh) 2009-05-13

Similar Documents

Publication Publication Date Title
CN100487667C (zh) 一种软件单元测试自动化系统及其方法
CN102819492B (zh) 一种基于Android的关键字驱动自动化测试框架
CN101739339B (zh) 一种基于程序动态依赖关系的软件故障定位方法
US20040153830A1 (en) Method and system for object level software testing
US20070061641A1 (en) Apparatus and method for generating test driver
CN106776343A (zh) 一种Web应用程序自动化测试工具及方法
US20070169027A1 (en) Methods and systems for complete static analysis of software for building a system
US20030200532A1 (en) System and method for sharing reusable code base
CN105678169A (zh) 一种二进制程序漏洞挖掘方法和系统
KR940703049A (ko) 처리 태스크를 신호 프로세서 및 이것과 인터페이스하는 의사 결정 마이크로 프로세서로 분할하는 시스템
US20080244541A1 (en) Code translator and method of automatically translating modeling language code to hardware language code
CN101751281A (zh) 编译器生成系统和方法
CN113553035A (zh) 一种通用的前端ui组件库的设计和构建方法
Tiwari et al. Reuse: reducing test effort
CN104199770B (zh) 一种手机音乐apk的自动化测试方法
CN114036072B (zh) 一种支持自动化检测程序缺陷的方法和系统
CN106649110B (zh) 软件测试方法及系统
CN110275715A (zh) 基于麒麟操作系统的无人机地面站软件实现方法
Gaelli et al. Towards a Taxonomy of SUnit Tests.
CN201383144Y (zh) 测试装置
Konrad et al. Automated analysis of natural language properties for UML models
Al-Ashwal et al. A CASE tool for JAVA programs logical errors detection: Static and dynamic testing
US20180314497A1 (en) Translation of assembler language code using intermediary technical rules language (trl)
CN114692539A (zh) 一种soc芯片验证架构并行验证的实现方法
CN109857640B (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090513

Termination date: 20141214

EXPY Termination of patent right or utility model