CN104407973B - 一种自动化单元测试的实现方法及装置 - Google Patents

一种自动化单元测试的实现方法及装置 Download PDF

Info

Publication number
CN104407973B
CN104407973B CN201410690230.5A CN201410690230A CN104407973B CN 104407973 B CN104407973 B CN 104407973B CN 201410690230 A CN201410690230 A CN 201410690230A CN 104407973 B CN104407973 B CN 104407973B
Authority
CN
China
Prior art keywords
test
code file
file
code
compiling
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.)
Active
Application number
CN201410690230.5A
Other languages
English (en)
Other versions
CN104407973A (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.)
Gree Electric Appliances Inc of Zhuhai
Original Assignee
Gree Electric Appliances Inc of Zhuhai
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 Gree Electric Appliances Inc of Zhuhai filed Critical Gree Electric Appliances Inc of Zhuhai
Priority to CN201410690230.5A priority Critical patent/CN104407973B/zh
Publication of CN104407973A publication Critical patent/CN104407973A/zh
Application granted granted Critical
Publication of CN104407973B publication Critical patent/CN104407973B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种自动化单元测试的实现方法及装置。其中,该方法包括:获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息;根据预先生成的代码文件模板和所述配置信息,生成相应的被测对象代码文件、负载对象代码文件以及测试用例代码文件;基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序,并运行所述测试程序,根据运行结果生成测试报告。本发明实施例提供的技术方案,解决了现有技术中测试用例编写过程工作量大、时间长的问题,实现了单元测试的自动化,缩减了测试用例的编码时间,提高了测试效率和准确率。

Description

一种自动化单元测试的实现方法及装置
技术领域
本发明实施例涉及测试技术领域,尤其涉及一种自动化单元测试的实现方法及装置。
背景技术
在大机组程序开发中,为了能够复用已开发产品的资源(架构、文档、库和源码),通常需要一套可方便复用程序资源并且可通过动态配置属性就能直接输出程序的软件系统,这样在很大程度上可以减少程序开发过程中的重复工作量,加快程序开发的进度,让产品占得市场先机。在这样一套软件系统中进行程序开发工作,程序的质量无疑是重中之重,那么十分有必要对其进行单元测试。
单元测试是一种白盒测试,旨在检测程序代码中的错误和漏洞,从源头上保证程序的质量,是对程序每一行代码或代码块进行覆盖测试以判断其正确与否。在现有技术中,通常所采用的单元测试方式是通过人工编写大量的测试用例代码对源程序代码进行测试验证,并通过编译生成测试报告,再通过解读测试报告中令人费解的测试数据,最终才能判断出源程序代码中的错误和漏洞。
显然,上述现有技术存在的技术缺陷在于:在编写测试用例的过程中,可能会因为编写者的编码笔误等原因而造成测试错误,故使源程序遗留或多或少的漏洞未能及时发现;并且,测试用例代码量往往都比源程序代码量更庞大,工作量非常大,特别是在源程序代码更改后进行回归测试时,如果需要重新修改测试用例代码甚至要重写,则更是会耗费大量的编码时间。
传统的单元测试方式测试时间长,对人员的要求高,工作量大,因此程序很少做完整的单元测试。为了解决这种困境,那么我们则必须要使单元测试自动化,减轻测试的工作量,缩短测试时间。
发明内容
本发明实施例提供一种自动化单元测试的实现方法及装置,以实现单元测试的自动化,缩减测试用例的编码时间,提高测试效率和准确率。
第一方面,本发明实施例提供了一种自动化单元测试的实现方法,该方法包括:
获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息;
根据预先生成的代码文件模板,生成与所述配置信息相对应的被测对象和测试用例代码文件,以及负载对象代码文件;
基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序,并运行所述测试程序,根据运行结果生成测试报告。
第二方面,本发明实施例还提供了一种自动化单元测试的实现装置,该装置包括:
配置信息获取单元,用于获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息;
测试代码文件生成单元,用于根据预先生成的代码文件模板和所述配置信息,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件;
测试程序生成及执行单元,用于基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序,并运行所述测试程序,根据运行结果生成测试报告。
本发明实施例提供的技术方案,只需用户在本次单元测试中输入被测对象、负载对象以及测试用例的配置信息,便可自动利用所述配置信息和预先生成的代码文件模板来生成单元测试所需的包含有测试用例代码的代码文件,进而通过对代码文件进行编译来生成可执行的测试程序,并运行所述测试程序,根据运行结果生成测试报告,从而解决了现有技术中测试用例编写过程工作量大、时间长,以及编写者的编码笔误等原因而造成的测试错误的问题,实现了单元测试的自动化,缩减了测试用例的编码时间,提高了测试效率和准确率。
附图说明
图1是本发明实施例一提供的一种自动化单元测试的实现方法的流程示意图;
图2是本发明实施例二提供的一种自动化单元测试的实现方法的流程示意图;
图3是本发明实施例三提供的一种自动化单元测试的实现方法的流程示意图;
图4A是本发明实施例四提供的一种自动化单元测试的实现方法的流程示意图;
图4B是本发明实施例四提供的一种自动化单元测试的实现方法的网络结构示意图;
图4C是本发明实施例四提供的一种获取配置信息的人机交互界面示意图;
图4D是本发明实施例四提供的一种自动化单元测试的实现方法所涉及的部分线程操作示意图;
图4E是本发明实施例四提供的一种自动化单元测试的实现方法的测试结果示意图;
图4F是本发明实施例四提供的一种回归测试时所加载显示的测试用例配置信息示意图;
图5是本发明实施例五提供的一种自动化单元测试的实现装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一提供的一种自动化单元测试的实现方法的流程示意图。该方法可以由自动化单元测试的实现装置来执行,所述装置由软件来实现。参见图1,本实施例提供的自动化单元测试的实现方法具体包括如下操作:
操作S110、获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息。
其中,被测对象在软件中表现为算法,用于实现对各种负载对象内部或外部的逻辑关系的处理,负载对象在软件中表现为结构体,测试用例由至少一个断言组成,每一个断言包括一个输入参数和一个期望输出参数,输入参数和期望输出参数由执行单元测试的用户来定义和输入。
本实施例可以采用用户通过人机交互界面输入一些与被测对象、负载对象和测试用例相关的配置信息,或者用户预先编写包含被测对象、负载对象和测试用例相关的配置信息的配置文件的方式,来告知本次单元测试所需要测试的被测对象、负载对象,以及测试用例应该包含几个断言和每个断言的输入参数、期望输出参数的值。这样,在获取了本次单元测试下的被测对象、负载对象以及测试用例的配置信息后,可以后续自动生成与测试用例相关的文件,而无需测试人员手动编写复杂的测试用例,缩减了测试用例的编码时间,提高了测试效率,同时避免了因编写者的编码笔误等造成的测试错误的问题,提高了测试的准确率。
操作S120、根据预先生成的代码文件模板和所述配置信息,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件。
本实施例采用模板技术预先生成代码文件模板,根据生成的代码文件模板和操作S110获取的配置信息,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件。其中,模板技术有:StringTemplate,Smarty,FastTemplate,ShellPage,Savant等,采用模板技术可以实现应用程序业务逻辑和表现逻辑的分离,提高应用程序的并行工作效率。通过已编写好的代码文件模板,能够将测试用例的配置信息转化成字符串写成测试用例代码,进而被写进被测对象和测试用例代码文件中。测试用例代码中存储了断言集合。
操作S130、基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序,并运行测试程序,根据运行结果生成测试报告。
其中,测试桩文件中包含了所有的桩函数,桩是测试软件中针对特定的行业采用的固定桩代码,是根据断言的参数配置情况进行定义,不需用户进行配置。每个代码文件包括一个扩展名为.h的文件和一个扩展名为.c的文件,扩展名为.h的文件中声明属性,扩展名为.c的文件中进行一些功能的实现。测试框架代码文件实现了对测试用例和被测对象的运行操作功能,以对被测对象进行条件覆盖、判定覆盖、条件/判定覆盖、条件组合覆盖、路径覆盖、语句覆盖等类型的单元测试,通过引用的负载对象在经过某段代码块的执行后属性的改变来判定该段代码块的正确与否,并生成测试报告。
但是,由于各代码文件中所包含的代码并不能够直接被计算机所识别,不能够直接被执行,故需要对操作S120所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件进行关联编译操作,以生成扩展名为.exe的可执行测试程序,进而通过运行测试程序来生成测试报告。
本实施例首先获取用户在本次单元测试下输入的对被测对象、负载对象以及测试用例的配置信息,然后根据所述配置信息和预先生成的代码文件模板,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件,最后基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序,并运行测试程序,根据运行结果生成测试报告。通过获取配置信息来自动生成测试用例,解决了测试用例编写时间长,工作量大,以及编写者的编码笔误等原因而造成的测试错误的问题,实现了单元测试的自动化,缩减了测试用例的编码时间,提高了测试效率和准确率。
实施例二
图2是本发明实施例二提供的一种自动化单元测试的实现方法的流程示意图。本实施例在上述实施例一的基础上,对其操作S120和操作S130进行优化。参见图2,本实施例提供的自动化单元测试的实现方法具体包括如下操作:
操作S210、获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息;
操作S220、根据预先生成的StringTemplate代码文件模板和所述配置信息,按照CUnit下的标准代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件;
操作S230、通过引用CUnit框架的自动模式,基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序;以及,运行测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告。
本实施例实现方法的软件开发语言可以是JAVA、PHP、或者C#,其中可优选为C#。在执行操作S220时,采用能兼容JAVA、PHP、C#语言的StringTemplate模板技术来预先生成代码文件模板。该模板技术严格执行模型视图分离,擅长多目标代码的生成,并且方便进行文件模板的单独修改,更容易进行模板复用。
在执行操作S230时,引用了CUnit框架的自动模式,执行CUnit框架生成的可执行测试程序并返回一个扩展标记语言XML格式的文件。采用CUnit框架的自动模式能够方便对返回的测试结果进行二次加工。
本实施例利用StringTemplate模板技术来预先生成代码文件模板,并引用CUnit框架的自动模式来进行单元测试,能够解决测试用例编写时间长,工作量大,以及编写者的编码笔误等原因而造成的测试错误的问题,实现单元测试的自动化,缩减了测试用例的编码时间,提高了测试效率和准确率。
在上述技术方案的基础上,在运行所述测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告之后,还包括:
按照所述预设规则对测试报告中的序列化运行结果进行反序列化;
将反序列化结果作为本次单元测试的最终结果,通过人机交互界面进行显示。
本实施例引用CUnit框架的自动模式生成了XML格式的测试报告。但是,由于该测试报告是CUnit按照预设规则对测试结果进行序列化得到的代码,需要有相应的专业知识人员才可以读懂。因此,为了使测试结果更加容易理解和看懂需要对测试报告进行解析,本实施例可按照上述预设规则对XML格式的测试报告进行反序列化,将反序列化结果作为本次单元测试的最终结果,并通过人机交互界面进行显示,使得本次单元测试的结果以更加直观的方式得以显现。
实施例三
图3是本发明实施例三提供的一种自动化单元测试的实现方法的流程示意图。本实施例在上述实施例二的基础上,对其操作S230进行优化。参见图3,本实施例提供的自动化单元测试的实现方法具体包括如下操作:
操作S310、获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息;
操作S320、根据预先生成的StringTemplate代码文件模板和所述配置信息,按照CUnit下的标准代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件,并存储所生成的代码文件至预设的目标文件夹目录下;
操作S330、确定与负载对象具有引用关系的目标对象的代码文件和CUnit编译库文件,并将所确定的目标对象的代码文件和CUnit编译库文件拷贝至目标文件夹目录下;
该操作中与负载对象具有引用关系的目标对象的代码文件是一个扩展名为.h的文件,该文件中定义了目标对象的属性,与此对应的,目标对象代码文件中还包括一个扩展名为.c的文件,该文件中编写了目标对象的功能执行逻辑。因为负载对象中引用目标对象是需要使用目标对象中的属性,因此就需要附带引用目标对象的.h文件,将该.h文件与测试用例代码文件、桩代码文件、测试框架代码文件以及CUnit编译库文件存储在同一个目标文件夹目录下,进行后续的关联编译。
操作S340、通过引用CUnit框架的自动模式,采用GNU编译器套装GCC,对所生成的代码文件,所拷贝的目标对象的代码文件和CUnit编译库文件,以及对应于本次单元测试的测试框架代码文件和测试桩代码文件进行关联编译,如果关联编译成功,则生成可执行的测试程序,并运行测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告。
该操作采用GNU编译器套装GCC,对目标文件夹目录下的文件进行关联编译,GCC编译器是由操作系统命令执行编译的,容易集成到软件中进行调用,并且GCC编译器是一款开源的工具,降低了单元测试的成本。需要说明的是,本实施例对上述操作S320和操作S330这两者之间的先后执行顺序不作限定,操作S330也可先于操作S320执行,或者分别启动两个不同的线程,同时执行操作S320和操作S330。
在本实施例的一种优选的实施方式中,在进行关联编译之后,还包括:如果关联编译失败,则将关联编译错误信息提示给用户。
通过引用CUnit框架的自动模式将目标文件夹目录下的代码文件进行GCC编译时,如果编译失败,会将编译错误信息存储在内存中。为将编译错误信息通过友好的方式反馈给用户,使用户能够及时和准确的定位测试进度和发现问题,本实施例优选的可将存储在内存中的编译错误信息以人机交互界面的形式显示给用户。
在上述技术方案的基础上,本实施例提供的自动化单元测试的实现方法还包括:生成用于运行测试程序的测试脚本。
测试脚本的命名以编译文件最终输出的可执行程序文件名一致,该命名可被预先配置定义好。测试脚本的作用是为软件做一个扩展性预留处理,即在测试脚本中可以扩展对其他程序的运行,通过执行测试脚本来即时运行测试程序的同时,也可以即时运行测试脚本中扩展的其它应用程序,提高了软件的扩展性和运行效率。
在获取用户在本次单元测试下输入的对被测对象、负载对象以及测试用例的配置信息之后,还包括:将获取结果存储至非关系型数据库;
在运行所述测试程序,根据运行结果生成测试报告之后,还包括:接收对所述被测对象的回归测试请求,根据所述回归测试请求加载并显示所述非关系型数据库中存储的所述获取结果。
由于每个测试用例对应的输入参数和期望输出参数都可能存在很大的差异,固定模式的关系数据库不能适用于存储此类测试用例数据,故采用非关系数据库来存储测试用例数据。
在创建完成所有测试用例的配置信息后,如果接收到用户对配置信息的保存指令(例如触发了人机交互界面上的保存按钮),则将本次测试所获取的被测对象、负载对象以及测试用例的配置信息,保存在非关系数据库(例如MongoDB数据库)中。在原算法(被载对象)改变后,用户可通过点击人机交互界面上的回归测试按钮,来发起回归测试请求。软件在接收到该请求后,可以加载并显示对应于该算法的历史测试用例配置信息,进而使得用户可以参见所显示的内容,按照算法变化情况确定本次回归测试需输入的新测试用例配置信息。软件在接收到用户输入的所述新测试用例配置信息后,根据已加载的测试配置信息以及所述新测试用例配置信息进行回归测试,能够缩短回归测试的时间,提高回归测试的效率。
实施例四
图4A是本发明实施例四提供的一种自动化单元测试的实现方法的流程示意图。本实施例可以以上述各实施例为基础,提供了一种优选实例。本实施例可适用于如图4B所示的网络结构。参见图4B,该网络结构包括:自动化单元测试的实现装置所在的终端401,用于管理非关系型数据库的主服务器402和从服务器403,以及用于管理代码文件的版本服务器404。
参见图4A,本实施例提供的自动化单元测试的实现方法可由置备在终端上的自动化单元测试的实现装置(由软件实现)来执行,具体包括如下操作:
操作S410、通过人机交互界面,获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息,并将获取结果上报给主服务器和从服务器,以指示所述主服务器和从服务器将获取结果存储至非关系型数据库。
图4C是本发明实施例四提供的一种获取配置信息的人机交互界面示意图。参见图4C,用户在终端的人机交互界面输入输入参数“0”和期望输出参数“1”等配置信息。
操作S420、根据预先生成的StringTemplate代码文件模板和所述配置信息,按照CUnit下的标准代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件,并存储所生成的代码文件至预设的目标文件夹目录下,同时将所生成的代码文件上报给版本服务器。
操作S430、确定与负载对象具有引用关系的目标对象的代码文件和CUnit编译库文件,将所确定的目标对象的代码文件和CUnit编译库文件拷贝至目标文件夹目录下,并在目标文件夹目录下创建用于运行测试程序的测试脚本;
其中,测试脚本的名称与测试程序的名称一致,是预先配置好的。
需要说明的是,为加快测试速度,提高测试效率,在本实施例中,同时启动两个不同的线程:第一线程和第二线程,来分别执行上述操作S420和操作S430。图4D是本发明实施例四提供的一种自动化单元测试的实现方法所涉及的部分线程操作示意图。参见图4D,启动第一线程(线程1)执行上述操作S420,生成被测对象和测试用例代码文件,以及相关的负载对象代码文件,如果生成代码文件成功,则将代码文件存储到本地目标文件夹目录下,如果生成代码文件失败,则处理异常并返回第一线程继续生成被测对象和测试用例代码文件,以及相关的负载对象代码文件;启动第二线程(线程2)执行上述操作S430,将与负载对象具有引用关系的目标对象的代码文件和CUnit编译库文件复制到本地目标文件夹目录下,如果复制不成功则处理异常并返回第二程序继续复制,如果复制成功则创建并生成批处理文件,批处理文件为包含运行可执行测试程序以及其他应用程序的测试脚本,并将批处理文件存储到本地目标文件夹目录下。
操作S440、通过引用CUnit框架的自动模式,采用GNU编译器套装GCC,对所生成的代码文件,所拷贝的目标对象的代码文件和CUnit编译库文件,以及对应于本次单元测试的测试框架代码文件和测试桩代码文件进行关联编译,如果关联编译成功,则生成可执行的测试程序,并通过运行测试脚本来运行测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告。
操作S450、按照所述预设规则对运行结果进行反序列化,以对测试报告进行解析,并将反序列化结果作为本次单元测试的最终结果,通过人机交互界面进行显示。
例如,生成的XML格式的测试报告包括:
该段代码表示CommuErr包中的用例tc_NewCase0和tc_NewCase1测试通过,tc_NewCase2测试不通过。通过XML序列与反序列化技术将该XML文件进行解析,整理出的最终测试结果数据,可通过人机交互界面进行展示,如图4E所示。参见图4E,通过人机交互界面显示经过反序列化得到的最终测试结果,可以以更加清晰和直观的方式将测试结果展示给用户。图4E中“对号”表示对应的测试用例(“NewCase0”和“NewCase1”)通过测试,“叉号”表示对应的测试用例(“NewCase2”)没有通过测试。
操作S460、接收对被测对象的回归测试请求,根据回归测试请求加载并显示主服务器管理的非关系型数据库中存储的所述获取结果。
图4F是本发明实施例四提供的一种回归测试时所加载显示的测试用例配置信息示意图。
本实施例提供的自动化单元测试的实现方法,通过在人机交互界面获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息,并将获取结果存储在非关系数据库中,便于回归测试的加载,提高了回归测试的效率;采用StringTemplate代码文件模板自动生成测试用例代码文件及相关文件,通过引用Cunit框架自动模式,采用GCC编译器由软件自动调动GCC编译程序对测试用例代码文件及相关文件关联编译,生成可执行的测试程序和扩展标记语言XML格式的测试报告,实现了单元测试的自动化,缩短了测试用例的编码时间,提高了单元测试的效率和准确率;通过对扩展标记语言XML格式的测试报告进行反序列化得到最终的测试结果,使得最终测试结果更加清晰和直观的显示在人机交互界面上。
实施例五
图5是本发明实施例五提供的一种自动化单元测试的实现装置的结构示意图。参见图5,该装置的具体结构如下:
配置信息获取单元501,用于获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息;
测试代码文件生成单元503,用于根据预先生成的代码文件模板和所述配置信息,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件;
测试代码文件生成单元503,具体用于:根据预先生成的StringTemplate代码文件模板和所述配置信息,按照CUnit下的标准代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件;
测试程序生成及执行单元507,用于基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序,并运行所述测试程序,根据运行结果生成测试报告。
测试程序生成及执行单元507,具体用于:通过引用CUnit框架的自动模式,基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序;以及,运行所述测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告。
进一步的,还包括测试结果显示单元509,用于在所述测试程序生成及执行单元运行所述测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告之后:
按照所述预设规则对所述测试报告中的序列化运行结果进行反序列化;
将反序列化结果作为本次单元测试的最终结果,通过人机交互界面进行显示。
进一步的,还包括关联编译预处理单元504,用于在所述测试程序生成及执行单元基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序之前:
存储所生成的代码文件至预设的目标文件夹目录下;
确定与所述负载对象具有引用关系的目标对象的代码文件和CUnit编译库文件;
将所确定的目标对象的代码文件和CUnit编译库文件拷贝至所述目标文件夹目录下;
所述测试程序生成及执行单元507包括测试程序生成子单元508,用于:
采用GNU编译器套装GCC,对所述目标文件夹目录下存储的所生成的代码文件、所拷贝的目标对象的代码文件和CUnit编译库文件,以及对应于本次单元测试的测试框架代码文件和测试桩代码文件进行关联编译;
如果关联编译成功,则生成可执行的测试程序。
进一步的,还包括:编译错误提示单元506,用于在所述测试程序生成子单元进行关联编译之后,如果所述测试程序生成子单元关联编译失败,则将关联编译错误信息提示给用户。
进一步的,还包括:测试脚本生成单元505,用于生成用于运行所述测试程序的测试脚本。
进一步的,还包括:获取结果存储单元502,用于在所述配置信息获取单元获取用户在本次单元测试下输入的对被测对象、负载对象以及测试用例的配置信息之后,将获取结果存储至非关系型数据库;
获取结果加载显示单元510,用于在所述测试程序生成及执行单元运行所述测试程序,根据运行结果生成测试报告之后,接收对所述被测对象的回归测试请求,根据所述回归测试请求加载并显示所述非关系型数据库中存储的所述获取结果。
上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种自动化单元测试的实现方法,其特征在于,包括:
获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息,并将获取结果存储至非关系型数据库;
根据预先生成的StringTemplate代码文件模板和所述配置信息,按照CUnit下的标准代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件;
通过引用CUnit框架的自动模式,基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序;以及,运行所述测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告;
接收对所述被测对象的回归测试请求,根据所述回归测试请求加载并显示所述非关系型数据库中存储的所述获取结果。
2.根据权利要求1所述的自动化单元测试的实现方法,其特征在于,在运行所述测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告之后,还包括:
按照所述预设规则对所述测试报告中的序列化运行结果进行反序列化;
将反序列化结果作为本次单元测试的最终结果,通过人机交互界面进行显示。
3.根据权利要求1所述的自动化单元测试的实现方法,其特征在于,在基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序之前,还包括:
存储所生成的代码文件至预设的目标文件夹目录下;
确定与所述负载对象具有引用关系的目标对象的代码文件和CUnit编译库文件;
将所确定的目标对象的代码文件和CUnit编译库文件拷贝至所述目标文件夹目录下;
基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序,包括:
采用GNU编译器套装GCC,对所述目标文件夹目录下存储的所生成的代码文件、所拷贝的目标对象的代码文件和CUnit编译库文件,以及对应于本次单元测试的测试框架代码文件和测试桩代码文件进行关联编译;
如果关联编译成功,则生成可执行的测试程序。
4.根据权利要求3所述的自动化单元测试的实现方法,其特征在于,在进行关联编译之后,还包括:如果关联编译失败,则将关联编译错误信息提示给用户。
5.根据权利要求3所述的自动化单元测试的实现方法,其特征在于,还包括:生成用于运行所述测试程序的测试脚本。
6.一种自动化单元测试的实现装置,其特征在于,包括:
配置信息获取单元,用于获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息,并将获取结果存储至非关系型数据库;
测试代码文件生成单元,用于根据预先生成的StringTemplate代码文件模板和所述配置信息,按照CUnit下的标准代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件;
测试程序生成及执行单元,用于通过引用CUnit框架的自动模式,基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序;以及,运行所述测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告;
获取结果加载显示单元,用于接收对所述被测对象的回归测试请求,根据所述回归测试请求加载并显示所述非关系型数据库中存储的所述获取结果。
7.根据权利要求6所述的自动化单元测试的实现装置,其特征在于,还包括测试结果显示单元,用于在所述测试程序生成及执行单元运行所述测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告之后:
按照所述预设规则对所述测试报告中的序列化运行结果进行反序列化;
将反序列化结果作为本次单元测试的最终结果,通过人机交互界面进行显示。
8.根据权利要求6所述的自动化单元测试的实现装置,其特征在于,还包括关联编译预处理单元,用于在所述测试程序生成及执行单元基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序之前:
存储所生成的代码文件至预设的目标文件夹目录下;
确定与所述负载对象具有引用关系的目标对象的代码文件和CUnit编译库文件;
将所确定的目标对象的代码文件和CUnit编译库文件拷贝至所述目标文件夹目录下;
所述测试程序生成及执行单元包括测试程序生成子单元,用于:
采用GNU编译器套装GCC,对所述目标文件夹目录下存储的所生成的代码文件、所拷贝的目标对象的代码文件和CUnit编译库文件,以及对应于本次单元测试的测试框架代码文件和测试桩代码文件进行关联编译;
如果关联编译成功,则生成可执行的测试程序。
9.根据权利要求8所述的自动化单元测试的实现装置,其特征在于,还包括:
编译错误提示单元,用于在所述测试程序生成子单元进行关联编译之后,如果所述测试程序生成子单元关联编译失败,则将关联编译错误信息提示给用户。
10.根据权利要求8所述的自动化单元测试的实现装置,其特征在于,还包括:
测试脚本生成单元,用于生成用于运行所述测试程序的测试脚本。
CN201410690230.5A 2014-11-25 2014-11-25 一种自动化单元测试的实现方法及装置 Active CN104407973B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410690230.5A CN104407973B (zh) 2014-11-25 2014-11-25 一种自动化单元测试的实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410690230.5A CN104407973B (zh) 2014-11-25 2014-11-25 一种自动化单元测试的实现方法及装置

Publications (2)

Publication Number Publication Date
CN104407973A CN104407973A (zh) 2015-03-11
CN104407973B true CN104407973B (zh) 2018-04-06

Family

ID=52645606

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410690230.5A Active CN104407973B (zh) 2014-11-25 2014-11-25 一种自动化单元测试的实现方法及装置

Country Status (1)

Country Link
CN (1) CN104407973B (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204994B (zh) * 2015-09-18 2018-06-29 上海斐讯数据通信技术有限公司 一种自动化测试方法及系统
CN106815136B (zh) * 2015-11-30 2020-03-03 北京国双科技有限公司 单元测试方法及装置
CN107015903B (zh) * 2016-01-27 2021-08-10 菜鸟智能物流控股有限公司 一种界面测试程序的生成方法、装置及电子设备
CN107291439B (zh) * 2016-04-13 2020-06-16 阿里巴巴集团控股有限公司 一种目标增量数据构建方法及装置
CN106649110B (zh) * 2016-12-15 2023-09-15 中标软件有限公司 软件测试方法及系统
CN106776334B (zh) * 2016-12-28 2021-03-23 北京奇虎科技有限公司 基于注释生成测试用例方法及装置
CN107122298A (zh) * 2017-04-21 2017-09-01 千寻位置网络有限公司 可视化软件开发过程质量的展示方法
CN108228965B (zh) * 2017-12-06 2022-01-11 北京物芯科技有限责任公司 一种存储单元的仿真验证方法、装置和设备
CN110196803B (zh) * 2018-02-27 2024-04-16 北京京东尚科信息技术有限公司 一种软件缺陷培训方法和系统
CN108470004A (zh) * 2018-04-09 2018-08-31 平安普惠企业管理有限公司 测试脚本生成方法、测试方法、装置、设备及存储介质
CN108595342B (zh) * 2018-05-14 2021-09-14 杭州有赞科技有限公司 单元测试方法和装置
CN109086199B (zh) * 2018-06-22 2022-06-07 网宿科技股份有限公司 一种自动化生成测试脚本的方法、终端和可存储介质
CN109710508B (zh) * 2018-08-20 2024-03-15 天航长鹰(江苏)科技有限公司 测试方法、测试装置、测试设备及计算机可读存储介质
CN109656804A (zh) * 2018-09-27 2019-04-19 深圳壹账通智能科技有限公司 自动化测试方法、设备、存储介质及装置
CN110362465A (zh) * 2018-10-22 2019-10-22 江苏艾科半导体有限公司 一种使用xml文件保存测试程序相关信息的方法
CN109614320A (zh) * 2018-11-16 2019-04-12 福建天泉教育科技有限公司 一种检测代码接口准确性的方法及终端
CN109800152A (zh) * 2018-12-14 2019-05-24 平安普惠企业管理有限公司 一种自动化测试方法及终端设备
CN109743225B (zh) * 2018-12-27 2021-09-28 深圳市富创优越科技有限公司 数据测试方法、装置、存储介质及计算机设备
CN109977011A (zh) * 2019-03-18 2019-07-05 平安普惠企业管理有限公司 测试脚本的自动生成方法、装置、存储介质及电子设备
CN109933770A (zh) * 2019-03-20 2019-06-25 浪潮商用机器有限公司 一种测试报告生成方法、系统及电子设备和存储介质
CN110427188B (zh) * 2019-08-02 2023-06-09 深圳前海微众银行股份有限公司 单测断言程序的配置方法、装置、设备及存储介质
CN110704065B (zh) * 2019-10-09 2021-04-20 大连理工大学 基于非法程序输入的编译器前端差分测试方法
CN110990282B (zh) * 2019-12-04 2023-07-21 中国直升机设计研究所 一种自动化单元测试方法
CN111104318B (zh) * 2019-12-12 2023-06-02 北京爱奇艺科技有限公司 一种单元测试结果的导出方法、装置及电子设备
CN111162972B (zh) * 2019-12-31 2023-05-02 扬州航盛科技有限公司 基于语义分析的车载以太网协议栈自动化测试方法
CN111209204B (zh) * 2020-01-06 2023-09-22 杭州涂鸦信息技术有限公司 一种基于JSON的web自动化测试方法及其系统和装置
CN111258915B (zh) * 2020-02-27 2023-07-04 成都乐创自动化技术股份有限公司 一种针对plc程序进行自动化单元测试的方法
CN111767217B (zh) * 2020-06-24 2024-02-02 中国工商银行股份有限公司 Js单元测试案例生成方法及装置
CN111859830A (zh) * 2020-06-30 2020-10-30 山东云海国创云计算装备产业创新中心有限公司 一种验证计划及报告的生成方法、装置、设备及存储介质
CN114490307A (zh) * 2020-11-12 2022-05-13 腾讯科技(深圳)有限公司 一种单元测试方法、装置及存储介质
CN112506793B (zh) * 2020-12-18 2024-05-28 航天信息股份有限公司 嵌入式软件单元测试方法、系统、可读介质及电子设备
CN112882931B (zh) * 2021-02-06 2023-05-09 重庆富民银行股份有限公司 基于ddt的自动化测试方法及装置
CN113342675B (zh) * 2021-06-25 2022-09-20 北京紫光展锐通信技术有限公司 被测试模块的映射方法、装置以及测试方法及系统
CN113900928B (zh) * 2021-09-16 2024-01-12 苏州浪潮智能科技有限公司 一种io负载自动化测试方法、装置
CN114048130A (zh) * 2021-11-11 2022-02-15 上海复深蓝软件股份有限公司 单元测试方法、装置、计算机设备及存储介质
CN116594915B (zh) * 2023-07-17 2023-09-29 西南交通大学 一种集成测试用例的自动生成方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017457A (zh) * 2007-02-09 2007-08-15 山东浪潮齐鲁软件产业股份有限公司 一种计算机软件的自动化测试方法
CN103631720A (zh) * 2013-12-20 2014-03-12 百度在线网络技术(北京)有限公司 测试用例的生成方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9032361B2 (en) * 2011-12-15 2015-05-12 Tata Consultancy Services Limited Agile unit and regression testing framework for domain specific languages

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017457A (zh) * 2007-02-09 2007-08-15 山东浪潮齐鲁软件产业股份有限公司 一种计算机软件的自动化测试方法
CN103631720A (zh) * 2013-12-20 2014-03-12 百度在线网络技术(北京)有限公司 测试用例的生成方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于cunit的自动测试框架";刘波;《电脑知识与技术(学术交流)》;20071224;第3卷(第18期);第1631页第2节第2段,第3.2节 *

Also Published As

Publication number Publication date
CN104407973A (zh) 2015-03-11

Similar Documents

Publication Publication Date Title
CN104407973B (zh) 一种自动化单元测试的实现方法及装置
Brottier et al. Metamodel-based test generation for model transformations: an algorithm and a tool
Erdweg et al. Evaluating and comparing language workbenches: Existing results and benchmarks for the future
US9032361B2 (en) Agile unit and regression testing framework for domain specific languages
Mäder et al. Towards automated traceability maintenance
US9779133B2 (en) Contextual debugging of SQL queries in database-accessing applications
US8949770B2 (en) Automated management of software requirements verification
Tisi et al. On the use of higher-order model transformations
US10185477B1 (en) Method and system for configuring automatic generation of narratives from data
US11907107B2 (en) Auto test generator
US6941546B2 (en) Method and apparatus for testing a software component using an abstraction matrix
US7895575B2 (en) Apparatus and method for generating test driver
US9304893B1 (en) Integrated software development and test case management system
US20080276221A1 (en) Method and apparatus for relations planning and validation
US10496379B2 (en) Facilitated production of code for software testing
CN111158656A (zh) 基于因果树法的测试代码生成方法及装置
Oluwagbemi et al. Automatic generation of test cases from activity diagrams for UML based testing (UBT)
CN111143228B (zh) 基于决策表法的测试代码生成方法及装置
Rahman et al. A DSL for importing models in a requirements management system
Elaasar et al. VPML: an approach to detect design patterns of MOF-based modeling languages
Zhang et al. Towards correct product derivation in model-driven product lines
CN110413518A (zh) 控件对象库的生成方法及生成装置和计算机可读存储介质
US9405514B1 (en) Process fragment management
Klusener et al. Reducing code duplication by identifying fresh domain abstractions
Pulido Applying behavior driven development practices and tools to low-code technology

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