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

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

【技术领域】
[0001] 本发明实施例涉及测试【技术领域】,尤其涉及一种自动化单元测试的实现方法及装 置。

【背景技术】
[0002] 在大机组程序开发中,为了能够复用已开发产品的资源(架构、文档、库和源码), 通常需要一套可方便复用程序资源并且可通过动态配置属性就能直接输出程序的软件系 统,这样在很大程度上可以减少程序开发过程中的重复工作量,加快程序开发的进度,让产 品占得市场先机。在这样一套软件系统中进行程序开发工作,程序的质量无疑是重中之重, 那么十分有必要对其进行单元测试。
[0003] 单元测试是一种白盒测试,旨在检测程序代码中的错误和漏洞,从源头上保证程 序的质量,是对程序每一行代码或代码块进行覆盖测试以判断其正确与否。在现有技术中, 通常所采用的单元测试方式是通过人工编写大量的测试用例代码对源程序代码进行测试 验证,并通过编译生成测试报告,再通过解读测试报告中令人费解的测试数据,最终才能判 断出源程序代码中的错误和漏洞。
[0004] 显然,上述现有技术存在的技术缺陷在于:在编写测试用例的过程中,可能会因 为编写者的编码笔误等原因而造成测试错误,故使源程序遗留或多或少的漏洞未能及时发 现;并且,测试用例代码量往往都比源程序代码量更庞大,工作量非常大,特别是在源程序 代码更改后进行回归测试时,如果需要重新修改测试用例代码甚至要重写,则更是会耗费 大量的编码时间。
[0005] 传统的单元测试方式测试时间长,对人员的要求高,工作量大,因此程序很少做完 整的单元测试。为了解决这种困境,那么我们则必须要使单元测试自动化,减轻测试的工作 量,缩短测试时间。


【发明内容】

[0006] 本发明实施例提供一种自动化单元测试的实现方法及装置,以实现单元测试的自 动化,缩减测试用例的编码时间,提高测试效率和准确率。
[0007] 第一方面,本发明实施例提供了一种自动化单元测试的实现方法,该方法包括:
[0008] 获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信 息;
[0009] 根据预先生成的代码文件模板,生成与所述配置信息相对应的被测对象和测试用 例代码文件,以及负载对象代码文件;
[0010] 基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩 代码文件执行关联编译操作,以生成可执行的测试程序,并运行所述测试程序,根据运行结 果生成测试报告。
[0011] 第二方面,本发明实施例还提供了一种自动化单元测试的实现装置,该装置包 括:
[0012] 配置信息获取单元,用于获取用户在本次单元测试下输入的被测对象、负载对象 以及测试用例的配置信息;
[0013] 测试代码文件生成单元,用于根据预先生成的代码文件模板和所述配置信息,生 成相应的被测对象和测试用例代码文件,以及负载对象代码文件;
[0014] 测试程序生成及执行单元,用于基于所生成的代码文件以及对应于本次单元测试 的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序,并 运行所述测试程序,根据运行结果生成测试报告。
[0015] 本发明实施例提供的技术方案,只需用户在本次单元测试中输入被测对象、负载 对象以及测试用例的配置信息,便可自动利用所述配置信息和预先生成的代码文件模板来 生成单元测试所需的包含有测试用例代码的代码文件,进而通过对代码文件进行编译来生 成可执行的测试程序,并运行所述测试程序,根据运行结果生成测试报告,从而解决了现有 技术中测试用例编写过程工作量大、时间长,以及编写者的编码笔误等原因而造成的测试 错误的问题,实现了单元测试的自动化,缩减了测试用例的编码时间,提高了测试效率和准 确率。

【专利附图】

【附图说明】
[0016] 图1是本发明实施例一提供的一种自动化单元测试的实现方法的流程示意图;
[0017] 图2是本发明实施例二提供的一种自动化单元测试的实现方法的流程示意图;
[0018] 图3是本发明实施例三提供的一种自动化单元测试的实现方法的流程示意图;
[0019] 图4A是本发明实施例四提供的一种自动化单元测试的实现方法的流程示意图;
[0020] 图4B是本发明实施例四提供的一种自动化单元测试的实现方法的网络结构示意 图;
[0021] 图4C是本发明实施例四提供的一种获取配置信息的人机交互界面示意图;
[0022] 图4D是本发明实施例四提供的一种自动化单元测试的实现方法所涉及的部分线 程操作示意图;
[0023] 图4E是本发明实施例四提供的一种自动化单元测试的实现方法的测试结果示意 图;
[0024] 图4F是本发明实施例四提供的一种回归测试时所加载显示的测试用例配置信息 示意图;
[0025] 图5是本发明实施例五提供的一种自动化单元测试的实现装置的结构示意图。

【具体实施方式】
[0026] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描 述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便 于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0027] 实施例一
[0028] 图1是本发明实施例一提供的一种自动化单元测试的实现方法的流程示意图。该 方法可以由自动化单元测试的实现装置来执行,所述装置由软件来实现。参见图1,本实施 例提供的自动化单元测试的实现方法具体包括如下操作:
[0029] 操作S110、获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例 的配置信息。
[0030] 其中,被测对象在软件中表现为算法,用于实现对各种负载对象内部或外部的逻 辑关系的处理,负载对象在软件中表现为结构体,测试用例由至少一个断言组成,每一个断 言包括一个输入参数和一个期望输出参数,输入参数和期望输出参数由执行单元测试的用 户来定义和输入。
[0031] 本实施例可以采用用户通过人机交互界面输入一些与被测对象、负载对象和测试 用例相关的配置信息,或者用户预先编写包含被测对象、负载对象和测试用例相关的配置 信息的配置文件的方式,来告知本次单元测试所需要测试的被测对象、负载对象,以及测试 用例应该包含几个断言和每个断言的输入参数、期望输出参数的值。这样,在获取了本次单 元测试下的被测对象、负载对象以及测试用例的配置信息后,可以后续自动生成与测试用 例相关的文件,而无需测试人员手动编写复杂的测试用例,缩减了测试用例的编码时间,提 高了测试效率,同时避免了因编写者的编码笔误等造成的测试错误的问题,提高了测试的 准确率。
[0032] 操作S120、根据预先生成的代码文件模板和所述配置信息,生成相应的被测对象 和测试用例代码文件,以及负载对象代码文件。
[0033] 本实施例采用模板技术预先生成代码文件模板,根据生成的代码文件模板和操作 SllO获取的配置信息,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件。 其中,模板技术有:StringTemplate,Smarty,FastTemplate,ShellPage,Savant 等,米用 模板技术可以实现应用程序业务逻辑和表现逻辑的分离,提高应用程序的并行工作效率。 通过已编写好的代码文件模板,能够将测试用例的配置信息转化成字符串写成测试用例代 码,进而被写进被测对象和测试用例代码文件中。测试用例代码中存储了断言集合。
[0034] 操作S130、基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件 和测试桩代码文件执行关联编译操作,以生成可执行的测试程序,并运行测试程序,根据运 行结果生成测试报告。
[0035] 其中,测试桩文件中包含了所有的桩函数,桩是测试软件中针对特定的行业采用 的固定桩代码,是根据断言的参数配置情况进行定义,不需用户进行配置。每个代码文件包 括一个扩展名为.h的文件和一个扩展名为.c的文件,扩展名为.h的文件中声明属性,扩 展名为.c的文件中进行一些功能的实现。测试框架代码文件实现了对测试用例和被测对 象的运行操作功能,以对被测对象进行条件覆盖、判定覆盖、条件/判定覆盖、条件组合覆 盖、路径覆盖、语句覆盖等类型的单元测试,通过引用的负载对象在经过某段代码块的执行 后属性的改变来判定该段代码块的正确与否,并生成测试报告。
[0036] 但是,由于各代码文件中所包含的代码并不能够直接被计算机所识别,不能够直 接被执行,故需要对操作S120所生成的代码文件以及对应于本次单元测试的测试框架代 码文件和测试桩代码文件进行关联编译操作,以生成扩展名为.exe的可执行测试程序,进 而通过运行测试程序来生成测试报告。
[0037] 本实施例首先获取用户在本次单元测试下输入的对被测对象、负载对象以及测试 用例的配置信息,然后根据所述配置信息和预先生成的代码文件模板,生成相应的被测对 象和测试用例代码文件,以及负载对象代码文件,最后基于所生成的代码文件以及对应于 本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的 测试程序,并运行测试程序,根据运行结果生成测试报告。通过获取配置信息来自动生成测 试用例,解决了测试用例编写时间长,工作量大,以及编写者的编码笔误等原因而造成的测 试错误的问题,实现了单元测试的自动化,缩减了测试用例的编码时间,提高了测试效率和 准确率。
[0038] 实施例二
[0039] 图2是本发明实施例二提供的一种自动化单元测试的实现方法的流程示意图。本 实施例在上述实施例一的基础上,对其操作S120和操作S130进行优化。参见图2,本实施 例提供的自动化单元测试的实现方法具体包括如下操作:
[0040] 操作S210、获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例 的配置信息;
[0041] 操作S220、根据预先生成的StringTemplate代码文件模板和所述配置信息,按照 CUnit下的标准代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文 件;
[0042] 操作S230、通过引用CUnit框架的自动模式,基于所生成的代码文件以及对应于 本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的 测试程序;以及,运行测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语 言XML格式的测试报告。
[0043] 本实施例实现方法的软件开发语言可以是JAVA、PHP、或者C#,其中可优选为C#。 在执行操作S220时,采用能兼容JAVA、PHP、C#语言的StringTemplate模板技术来预先生 成代码文件模板。该模板技术严格执行模型视图分离,擅长多目标代码的生成,并且方便进 行文件模板的单独修改,更容易进行模板复用。
[0044] 在执行操作S230时,引用了 CUnit框架的自动模式,执行CUnit框架生成的可执 行测试程序并返回一个扩展标记语言XML格式的文件。采用CUnit框架的自动模式能够方 便对返回的测试结果进行二次加工。
[0045] 本实施例利用StringTemplate模板技术来预先生成代码文件模板,并引用CUnit 框架的自动模式来进行单元测试,能够解决测试用例编写时间长,工作量大,以及编写者的 编码笔误等原因而造成的测试错误的问题,实现单元测试的自动化,缩减了测试用例的编 码时间,提高了测试效率和准确率。
[0046] 在上述技术方案的基础上,在运行所述测试程序,按照预设规则对运行结果进行 序列化,以生成扩展标记语言XML格式的测试报告之后,还包括:
[0047] 按照所述预设规则对测试报告中的序列化运行结果进行反序列化;
[0048] 将反序列化结果作为本次单元测试的最终结果,通过人机交互界面进行显示。
[0049] 本实施例引用CUnit框架的自动模式生成了 XML格式的测试报告。但是,由于该 测试报告是CUnit按照预设规则对测试结果进行序列化得到的代码,需要有相应的专业知 识人员才可以读懂。因此,为了使测试结果更加容易理解和看懂需要对测试报告进行解析, 本实施例可按照上述预设规则对XML格式的测试报告进行反序列化,将反序列化结果作为 本次单元测试的最终结果,并通过人机交互界面进行显示,使得本次单元测试的结果以更 加直观的方式得以显现。
[0050] 实施例三
[0051] 图3是本发明实施例三提供的一种自动化单元测试的实现方法的流程示意图。本 实施例在上述实施例二的基础上,对其操作S230进行优化。参见图3,本实施例提供的自动 化单元测试的实现方法具体包括如下操作:
[0052] 操作S310、获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例 的配置信息;
[0053] 操作S320、根据预先生成的StringTemplate代码文件模板和所述配置信息,按照 CUnit下的标准代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文 件,并存储所生成的代码文件至预设的目标文件夹目录下;
[0054] 操作S330、确定与负载对象具有引用关系的目标对象的代码文件和CUnit编译库 文件,并将所确定的目标对象的代码文件和CUnit编译库文件拷贝至目标文件夹目录下;
[0055] 该操作中与负载对象具有引用关系的目标对象的代码文件是一个扩展名为.h的 文件,该文件中定义了目标对象的属性,与此对应的,目标对象代码文件中还包括一个扩展 名为.c的文件,该文件中编写了目标对象的功能执行逻辑。因为负载对象中引用目标对象 是需要使用目标对象中的属性,因此就需要附带引用目标对象的.h文件,将该.h文件与测 试用例代码文件、桩代码文件、测试框架代码文件以及CUnit编译库文件存储在同一个目 标文件夹目录下,进行后续的关联编译。
[0056] 操作S340、通过引用CUnit框架的自动模式,采用GNU编译器套装GCC,对所生成 的代码文件,所拷贝的目标对象的代码文件和CUnit编译库文件,以及对应于本次单元测 试的测试框架代码文件和测试桩代码文件进行关联编译,如果关联编译成功,则生成可执 行的测试程序,并运行测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语 言XML格式的测试报告。
[0057] 该操作采用GNU编译器套装GCC,对目标文件夹目录下的文件进行关联编译,GCC 编译器是由操作系统命令执行编译的,容易集成到软件中进行调用,并且GCC编译器是一 款开源的工具,降低了单元测试的成本。需要说明的是,本实施例对上述操作S320和操作 S330这两者之间的先后执行顺序不作限定,操作S330也可先于操作S320执行,或者分别启 动两个不同的线程,同时执行操作S320和操作S330。
[0058] 在本实施例的一种优选的实施方式中,在进行关联编译之后,还包括:如果关联编 译失败,则将关联编译错误信息提示给用户。
[0059] 通过引用CUnit框架的自动模式将目标文件夹目录下的代码文件进行GCC编译 时,如果编译失败,会将编译错误信息存储在内存中。为将编译错误信息通过友好的方式反 馈给用户,使用户能够及时和准确的定位测试进度和发现问题,本实施例优选的可将存储 在内存中的编译错误信息以人机交互界面的形式显示给用户。
[0060] 在上述技术方案的基础上,本实施例提供的自动化单元测试的实现方法还包括: 生成用于运行测试程序的测试脚本。
[0061] 测试脚本的命名以编译文件最终输出的可执行程序文件名一致,该命名可被预先 配置定义好。测试脚本的作用是为软件做一个扩展性预留处理,即在测试脚本中可以扩展 对其他程序的运行,通过执行测试脚本来即时运行测试程序的同时,也可以即时运行测试 脚本中扩展的其它应用程序,提高了软件的扩展性和运行效率。
[0062] 在获取用户在本次单元测试下输入的对被测对象、负载对象以及测试用例的配置 信息之后,还包括:将获取结果存储至非关系型数据库;
[0063] 在运行所述测试程序,根据运行结果生成测试报告之后,还包括:接收对所述被测 对象的回归测试请求,根据所述回归测试请求加载并显示所述非关系型数据库中存储的所 述获取结果。
[0064] 由于每个测试用例对应的输入参数和期望输出参数都可能存在很大的差异,固定 模式的关系数据库不能适用于存储此类测试用例数据,故采用非关系数据库来存储测试用 例数据。
[0065] 在创建完成所有测试用例的配置信息后,如果接收到用户对配置信息的保存指令 (例如触发了人机交互界面上的保存按钮),则将本次测试所获取的被测对象、负载对象以 及测试用例的配置信息,保存在非关系数据库(例如MongoDB数据库)中。在原算法(被 载对象)改变后,用户可通过点击人机交互界面上的回归测试按钮,来发起回归测试请求。 软件在接收到该请求后,可以加载并显示对应于该算法的历史测试用例配置信息,进而使 得用户可以参见所显示的内容,按照算法变化情况确定本次回归测试需输入的新测试用例 配置信息。软件在接收到用户输入的所述新测试用例配置信息后,根据已加载的测试配置 信息以及所述新测试用例配置信息进行回归测试,能够缩短回归测试的时间,提高回归测 试的效率。
[0066] 实施例四
[0067] 图4A是本发明实施例四提供的一种自动化单元测试的实现方法的流程示意图。 本实施例可以以上述各实施例为基础,提供了一种优选实例。本实施例可适用于如图4B所 示的网络结构。参见图4B,该网络结构包括:自动化单元测试的实现装置所在的终端401, 用于管理非关系型数据库的主服务器402和从服务器403,以及用于管理代码文件的版本 服务器404。
[0068] 参见图4A,本实施例提供的自动化单元测试的实现方法可由置备在终端上的自动 化单元测试的实现装置(由软件实现)来执行,具体包括如下操作:
[0069] 操作S410、通过人机交互界面,获取用户在本次单元测试下输入的被测对象、负载 对象以及测试用例的配置信息,并将获取结果上报给主服务器和从服务器,以指示所述主 服务器和从服务器将获取结果存储至非关系型数据库。
[0070] 图4C是本发明实施例四提供的一种获取配置信息的人机交互界面示意图。参见 图4C,用户在终端的人机交互界面输入输入参数"0"和期望输出参数"1"等配置信息。
[0071] 操作S420、根据预先生成的StringTemplate代码文件模板和所述配置信息,按照 CUnit下的标准代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文 件,并存储所生成的代码文件至预设的目标文件夹目录下,同时将所生成的代码文件上报 给版本服务器。
[0072] 操作S430、确定与负载对象具有引用关系的目标对象的代码文件和CUnit编译库 文件,将所确定的目标对象的代码文件和CUnit编译库文件拷贝至目标文件夹目录下,并 在目标文件夹目录下创建用于运行测试程序的测试脚本;
[0073] 其中,测试脚本的名称与测试程序的名称一致,是预先配置好的。
[0074] 需要说明的是,为加快测试速度,提高测试效率,在本实施例中,同时启动两个不 同的线程:第一线程和第二线程,来分别执行上述操作S420和操作S430。图4D是本发明实 施例四提供的一种自动化单元测试的实现方法所涉及的部分线程操作示意图。参见图4D, 启动第一线程(线程1)执行上述操作S420,生成被测对象和测试用例代码文件,以及相关 的负载对象代码文件,如果生成代码文件成功,则将代码文件存储到本地目标文件夹目录 下,如果生成代码文件失败,则处理异常并返回第一线程继续生成被测对象和测试用例代 码文件,以及相关的负载对象代码文件;启动第二线程(线程2)执行上述操作S430,将与 负载对象具有引用关系的目标对象的代码文件和CUnit编译库文件复制到本地目标文件 夹目录下,如果复制不成功则处理异常并返回第二程序继续复制,如果复制成功则创建并 生成批处理文件,批处理文件为包含运行可执行测试程序以及其他应用程序的测试脚本, 并将批处理文件存储到本地目标文件夹目录下。
[0075] 操作S440、通过引用CUnit框架的自动模式,采用GNU编译器套装GCC,对所生成 的代码文件,所拷贝的目标对象的代码文件和CUnit编译库文件,以及对应于本次单元测 试的测试框架代码文件和测试桩代码文件进行关联编译,如果关联编译成功,则生成可执 行的测试程序,并通过运行测试脚本来运行测试程序,按照预设规则对运行结果进行序列 化,以生成扩展标记语言XML格式的测试报告。
[0076] 操作S450、按照所述预设规则对运行结果进行反序列化,以对测试报告进行解析, 并将反序列化结果作为本次单元测试的最终结果,通过人机交互界面进行显示。
[0077] 例如,生成的XML格式的测试报告包括:
[0078]

【权利要求】
1. 一种自动化单元测试的实现方法,其特征在于,包括: 获取用户在本次单元测试下输入的被测对象、负载对象以及测试用例的配置信息; 根据预先生成的代码文件模板和所述配置信息,生成相应的被测对象和测试用例代码 文件,以及负载对象代码文件; 基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码 文件执行关联编译操作,以生成可执行的测试程序,并运行所述测试程序,根据运行结果生 成测试报告。
2. 根据权利要求1所述的自动化单元测试的实现方法,其特征在于,根据预先生成的 代码文件模板和所述配置信息,生成相应的被测对象和测试用例代码文件,以及负载对象 代码文件,包括: 根据预先生成的StringTemplate代码文件模板和所述配置信息,按照CUnit下的标准 代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件; 基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码 文件执行关联编译操作,以生成可执行的测试程序,并运行所述测试程序,根据运行结果生 成测试报告,包括: 通过引用CUnit框架的自动模式,基于所生成的代码文件以及对应于本次单元测试的 测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序;以及, 运行所述测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式 的测试报告。
3. 根据权利要求2所述的自动化单元测试的实现方法,其特征在于,在运行所述测试 程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式的测试报告之 后,还包括: 按照所述预设规则对所述测试报告中的序列化运行结果进行反序列化; 将反序列化结果作为本次单元测试的最终结果,通过人机交互界面进行显示。
4. 根据权利要求2所述的自动化单元测试的实现方法,其特征在于,在基于所生成的 代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码文件执行关联编译 操作,以生成可执行的测试程序之前,还包括: 存储所生成的代码文件至预设的目标文件夹目录下; 确定与所述负载对象具有引用关系的目标对象的代码文件和CUnit编译库文件; 将所确定的目标对象的代码文件和CUnit编译库文件拷贝至所述目标文件夹目录下; 基于所生成的代码文件以及对应于本次单元测试的测试框架代码文件和测试桩代码 文件执行关联编译操作,以生成可执行的测试程序,包括: 采用GNU编译器套装GCC,对所述目标文件夹目录下存储的所生成的代码文件、所拷贝 的目标对象的代码文件和CUnit编译库文件,以及对应于本次单元测试的测试框架代码文 件和测试桩代码文件进行关联编译; 如果关联编译成功,则生成可执行的测试程序。
5. 根据权利要求4所述的自动化单元测试的实现方法,其特征在于,在进行关联编译 之后,还包括:如果关联编译失败,则将关联编译错误信息提示给用户。
6. 根据权利要求4所述的自动化单元测试的实现方法,其特征在于,还包括:生成用于 运行所述测试程序的测试脚本。
7. 根据权利要求1-6中任一项所述的自动化单元测试的实现方法,其特征在于,在获 取用户在本次单元测试下输入的对被测对象、负载对象以及测试用例的配置信息之后,还 包括:将获取结果存储至非关系型数据库; 在运行所述测试程序,根据运行结果生成测试报告之后,还包括:接收对所述被测对象 的回归测试请求,根据所述回归测试请求加载并显示所述非关系型数据库中存储的所述获 取结果。
8. -种自动化单元测试的实现装置,其特征在于,包括: 配置信息获取单元,用于获取用户在本次单元测试下输入的被测对象、负载对象以及 测试用例的配置信息; 测试代码文件生成单元,用于根据预先生成的代码文件模板和所述配置信息,生成相 应的被测对象和测试用例代码文件、负载对象代码文件以及测试用例代码文件; 测试程序生成及执行单元,用于基于所生成的代码文件以及对应于本次单元测试的测 试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序,并运行 所述测试程序,根据运行结果生成测试报告。
9. 根据权利要求8所述的自动化单元测试的实现装置,其特征在于,所述测试代码文 件生成单元,具体用于: 根据预先生成的StringTemplate代码文件模板和所述配置信息,按照CUnit下的标准 代码格式,生成相应的被测对象和测试用例代码文件,以及负载对象代码文件; 所述测试程序生成及执行单元,具体用于: 通过引用CUnit框架的自动模式,基于所生成的代码文件以及对应于本次单元测试的 测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试程序;以及, 运行所述测试程序,按照预设规则对运行结果进行序列化,以生成扩展标记语言XML格式 的测试报告。
10. 根据权利要求9所述的自动化单元测试的实现装置,其特征在于,还包括测试结果 显示单元,用于在所述测试程序生成及执行单元运行所述测试程序,按照预设规则对运行 结果进行序列化,以生成扩展标记语言XML格式的测试报告之后: 按照所述预设规则对所述测试报告中的序列化运行结果进行反序列化; 将反序列化结果作为本次单元测试的最终结果,通过人机交互界面进行显示。
11. 根据权利要求9所述的自动化单元测试的实现装置,其特征在于,还包括关联编译 预处理单元,用于在所述测试程序生成及执行单元基于所生成的代码文件以及对应于本次 单元测试的测试框架代码文件和测试桩代码文件执行关联编译操作,以生成可执行的测试 程序之前: 存储所生成的代码文件至预设的目标文件夹目录下; 确定与所述负载对象具有引用关系的目标对象的代码文件和CUnit编译库文件; 将所确定的目标对象的代码文件和CUnit编译库文件拷贝至所述目标文件夹目录下; 所述测试程序生成及执行单元包括测试程序生成子单元,用于: 采用GNU编译器套装GCC,对所述目标文件夹目录下存储的所生成的代码文件、所拷贝 的目标对象的代码文件和CUnit编译库文件,以及对应于本次单元测试的测试框架代码文 件和测试桩代码文件进行关联编译; 如果关联编译成功,则生成可执行的测试程序。
12. 根据权利要求11所述的自动化单元测试的实现装置,其特征在于,还包括: 编译错误提示单元,用于在所述测试程序生成子单元进行关联编译之后,如果所述测 试程序生成子单元关联编译失败,则将关联编译错误信息提示给用户。
13. 根据权利要求11所述的自动化单元测试的实现装置,其特征在于,还包括: 测试脚本生成单元,用于生成用于运行所述测试程序的测试脚本。
14. 根据权利要求8-13中任一项所述的自动化单元测试的实现装置,其特征在于,还 包括: 获取结果存储单元,用于在所述配置信息获取单元获取用户在本次单元测试下输入 的对被测对象、负载对象以及测试用例的配置信息之后,将获取结果存储至非关系型数据 库; 获取结果加载显示单元,用于在所述测试程序生成及执行单元运行所述测试程序,根 据运行结果生成测试报告之后,接收对所述被测对象的回归测试请求,根据所述回归测试 请求加载并显示所述非关系型数据库中存储的所述获取结果。
【文档编号】G06F11/36GK104407973SQ201410690230
【公开日】2015年3月11日 申请日期:2014年11月25日 优先权日:2014年11月25日
【发明者】王灵军, 邵世卓, 罗晓 申请人:珠海格力电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1