一种软件单元测试自动化系统及其方法技术方案

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

【技术实现步骤摘要】

本专利技术涉及软件单元测试领域,尤其涉及软件自动化测试系统与方法。
技术介绍
软件必须通过测试才能确保其在应用环境中工作正常,软件测试是保障软件质量的重要手段。软件测试除有效发现软件中任何缺陷外,还必须是高效的,尽可能占有时间少且开销小。自动化测试将有效地提高测试效率和测试质量。软件开发生命周期编码阶段,必须进行单元测试。单元测试是在软件开发过程中要进行的最低级别的测试活动。在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。软件单元可以是函数,类,类的方法,规模一般比较小。单元测试检验软件单元有无错误,检验单元是否与设计吻合。目前实现单元测试的方法是对被测代码中增加测试代码,编写大量的桩函数和驱动函数的方法来实现。这种方法最大的问题是需要增加和修改大量的程序代码,破坏了原先代码。测试完成后,需要从程序代码中删除增加的测试代码,同时不能很方便地支持回归测试。对不太可能发生异常的情况,如文件读写失败,资源申请失败等,不能很好模拟,造成代码中某些分支没有得到运行测试,造成隐患。测试过程不能自动化,效率比较低。对测试代码语言种类单一,一种工具只能支持某一种语言。
技术实现思路
本专利技术所要解决的技术问题在于提供,克服现有技术中存在的实现测试时需要手工添加和删除代码,自动化程度低,回归测试差,异常模拟能力低,支持单一语言问题和缺陷,提供一种支持多语言的软件单元测试自动化的系统和方法,很方便地支持回归测试。为了实现上述目的,本专利技术提供了一种软件单元测试自动化系统,包括有测试脚本文件;脚本解释模块,用于分析测试脚本文件;测试设置模块,用于对测试单元进行测试设置;脚本生成模块,用于把测试设置作为测试脚本保存到文件中;测试结果输出模块,用于把测试结果和覆盖率统计,保存到文件中或界面显示;其特点在于,还包括环境设置模块,用于让用户设置运行环境信息;多语言支持模块,用于在用户打开测试源文件时,对源文件的编程语言类型进行判断,调用相应的编译器对源文件进行编译生成目标文件;目标文件分析模块,用于对目标文件进行分析;二进制测试代码生成模块,用于根据测试脚本设置插入相应指令,产生单元测试二进制代码;测试代码执行模块,用于运行根据所产生的单元测试二进制代码创建的测试线程;测试结果判断模块,用于根据输出结果和判断条件,判断测试是否通过。为了实现上述目的,本专利技术还提供了一种软件单元测试自动化的方法,其特点在于,包括如下步骤步骤一,环境设置模块在该软件单元测试自动化系统中进行环境设置;步骤二,打开要进行单元测试的源文件;步骤三,多语言支持模块对源文件分析,确定编程语言类型,选择相应编译器对源文件编译生成目标文件;步骤四,没有测试脚本时,用户可以先选择对测试单元进行测试设置,测试设置模块根据用户的设置保存到内存中,脚本生成模块把设置作为测试脚本保存到文件中;步骤五,用户打开测试脚本文件,脚本解释模块分析测试脚本,从中读出与单元测试有关的信息;步骤六,目标文件分析模块对目标文件进行分析,提出与单元测试有关的信息;步骤七,比较测试脚本中分析出来的信息和目标文件中分析出来的信息是否一致,如果比较不通过则报告出错;步骤八,二进制测试代码生成模块依据测试设置,自动插入相应指令,生成最终的二进制测试代码。步骤九,该软件单元测试自动化系统根据所生成的二进制测试代码创建一测试线程,线程入口地址是测试代码执行模块,运行该测试线程;步骤十,创建线程运行结束后,测试结果输出模块把输出结果和覆盖率统计保存到文件中,同时显示在界面上;步骤十一,测试结果判断模块根据输出结果和判断条件,判断测试是否通过。上述的方法,其特点在于,在步骤一中,该环境设置模块设置运行环境信息的过程包括指定编译时需要的头文件的路径、资源文件路径、编译生成目标文件的存放位置、以及用户需要编译时增加的选项。上述的方法,其特点在于,在步骤四中,该测试设置模块对测试单元进行测试设置的过程至少包括测试单元的入参值设置、变量的值设置、桩函数设置、覆盖率设置、输出设置、结果判断条件;并且,该脚本生成模块是将测试设置需要的内存信息转换成字符串信息,作为测试脚本保存。上述的方法,其特点在于,在步骤五中,该脚本解释模块是把文本保存的测试脚本文件从硬盘读入后,转换成内存方式,并从中读出与单元测试有关的信息,包括被测单元对象、入参值设置、变量的值设置、桩函数设置、覆盖率设置、输出设置、结果判断条件。上述的方法,其特点在于,在步骤六中,该目标文件分析模块从目标文件中提出与单元测试有关的信息,包括单元信息、入参信息、变量信息、及单元的代码信息。上述的方法,其特点在于,在步骤八中,该二进制测试代码生成模块分析被测单元的代码信息,依据测试设置,对函数的代码进行动态修改,自动插入单元的运行中间变量设置指令、桩函数设置指令、覆盖率设置指令、单元运行中间的输出设置指令,生成最终的二进制测试代码。上述的方法,其特点在于,在步骤九中,测试执行模块把被测单元的入参设置压入堆栈,完成最初变量的初始化,调用被测单元,完成测试线程的运行。上述的方法,其特点在于,在步骤十中,该测试结果输出模块在单元运行结束后,把设置中需要的信息转换成字符串,以文本文件的方式写到文件中,显示在界面上,输出的内容包括被测单元名称、开始测试时间、结束时间、入参设置、全局变量设置、桩函数设置、用户设置需要输出的值、覆盖率统计结果。上述的方法,其特点在于,所述测试脚本文件是一以WINDOWS的INI配置文件为格式的文本文件,可以直接通过文本编辑器修改。采用本专利技术所述系统及方法,与现有技术相比,取得了自动添加测试代码的进步,达到了避免手工修改代码,实现回归测试,方便地实现异常模拟测试,支持多种语言效果,节省了单元测试时间,提高了测试效率。以下结合附图和具体实施例对本专利技术进行详细描述,但不作为对本专利技术的限定。附图说明图1是本专利技术的测试脚本文件生成过程示意图;图2是本专利技术的单元测试过程示意图;图3是本专利技术的二进制测试代码生成模块流程示意图。具体实施例方式本专利技术的软件单元测试自动化系统,除包括测试脚本文件、脚本解释模块、测试设置模块、脚本生成模块、测试结果输出模块之外,还包括环境设置模块、多语言支持模块、目标文件分析模块、二进制测试代码生成模块、测试代码执行模块、测试结果判断模块。要进行单元测试时,用户打开被测试单元的源文件和测试脚本文件,多语言支持模块根据源文件确定编程语言类型,选择相应的编译器对源文件编译生成目标OBJ文件,脚本解释模块分析测试脚本文件,调用目标文件分析模块对编译生成的目标文件进行分析,二进制测试代码生成模块根据测试脚本设置插入相应指令,产生单元测试二进制代码,测试工具把生成的二进制代码创建一进程运行,测试结果输出模块把测试结果和覆盖率统计,保存到文件中或界面显示,测试结果判断模块自动判断测试结果是否正常。用户可以通过测试设置模块对测试脚本进行修改,通过脚本生成模块保存到文件中。具体说来,本专利技术的软件单元测试自动化方法包括以下步骤第一步通过环境设置模块进行运行环境的设置;第二步打开要进行单元测试的源文件;第三步多语言支持模块对源文件分析,确定编程语言类型,选择相应编译器对源文件编译生成目标OBJ文件;第四步没有测试脚本时,用本文档来自技高网...

【技术保护点】
一种软件单元测试自动化系统,包括有测试脚本文件;脚本解释模块,用于分析测试脚本文件;测试设置模块,用于对测试单元进行测试设置;脚本生成模块,用于把测试设置作为测试脚本保存到文件中;测试结果输出模块,用 于把测试结果和覆盖率统计,保存到文件中或界面显示;其特征在于,还包括:环境设置模块,用于让用户设置运行环境信息;多语言支持模块,用于在用户打开测试源文件时,对源文件的编程语言类型进行判断,调用相应的编译器对源文件进行 编译生成目标文件;目标文件分析模块,用于对目标文件进行分析;二进制测试代码生成模块,用于根据测试脚本设置插入相应指令,产生单元测试二进制代码;测试代码执行模块,用于运行根据所产生的单元测试二进制代码创建的测试线程;   测试结果判断模块,用于根据输出结果和判断条件,判断测试是否通过。

【技术特征摘要】

【专利技术属性】
技术研发人员:王新余
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1