CN110928760A - 一种嵌入式系统中的单元测试方法与装置 - Google Patents
一种嵌入式系统中的单元测试方法与装置 Download PDFInfo
- Publication number
- CN110928760A CN110928760A CN201811101373.2A CN201811101373A CN110928760A CN 110928760 A CN110928760 A CN 110928760A CN 201811101373 A CN201811101373 A CN 201811101373A CN 110928760 A CN110928760 A CN 110928760A
- Authority
- CN
- China
- Prior art keywords
- test case
- file
- test
- source code
- function
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种嵌入式系统中的单元测试方法,包括,为嵌入式源代码中的被测函数编写测试用例,得到测试用例可扩展标记文件;通过面向对象的解释型计算机程序,将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件;通过编程工具将所述测试用例码源文件自动生成目标测试用例;通过自动化测试软件工具执行所述目标测试用例,得到测试结果。本发明实施例优化了编程测试用例的过程,提高了测试效率。
Description
技术领域
本发明实施例涉及软件测试技术,具体地,涉及一种嵌入式系统中的单元测试方法。
背景技术
在嵌入式系统软件开发过程中,基于“积木”方式进行,“积木”对应于软件开发中的组件,组件的高质量将极大提高嵌入式系统的开发效率及可靠性,故对组件进行单元测试尤为重要。
嵌入式系统中,单元测试是白盒测试的一种,实现被测函数内部的逻辑测试,旨在检测程序代码中的错误和漏洞,从源头上保证程序的质量,是对程序每一行代码或代码块进行覆盖测试以判断其正确与否。例如,实现被测函数内部的逻辑测试,需要开发人员编写大量的测试用例,同时需要编写相关的桩函数在测试用例中进行打桩,以模拟被测试函数中调用的接口,为被测试函数返回空,或返回固定的值,以使得被测函数能够正常测试其功能。
测试用例大部分基于.C单文件实施,这耗费开发人员大量精力。测试用例执行成功后,需要对测试用例结果进行分析,但目前无法直观地在程序源码中体现已经被测试过的代码及其逻辑。
发明内容
本发明实施例提供了一种嵌入式系统中的单元测试方法,以优化编程测试用例的过程,提高测试效率。
本发明实施例通过如下技术手段实现,
一种嵌入式系统中的单元测试方法,该方法包括,
获得被测对象测试用例的可扩展标记文件;
通过面向对象的解释型计算机程序,将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件;
通过编程工具,将所述测试用例码源文件自动生成目标测试用例。
较佳地,该方法还包括,通过自动化测试软件工具执行所述目标测试用例,得到测试结果。
较佳地,所述通过编程工具将所述测试用例源码文件自动生成目标测试用例包括,
采用Unity工具将所述测试用例源码文件自动生成测试用例,将所述测试用例作为目标测试用例,其中,测试用例源码文件中的桩函数用Ruby工具生成。
较佳地,所述通过编程工具将所述测试用例源码文件自动生成目标测试用例进一步包括,
通过面向对象的解释型计算机程序遍历所述测试用例,并进行归一化处理,得到目标测试用例。
较佳地,所述面向对象的解释型计算机程序为Python脚本程序,所述自动化测试软件工具为Parasoft工具。
较佳地,所述通过自动化测试软件工具执行所述目标测试用例,得到测试结果包括,
基于编译文件,利用Parasoft工具所构建的测试环境执行目标测试用例;
当完成目标测试用例执行后,在所述源代码文件反馈至少包括命令行、修改条件、判定范围之一的覆盖情况。
较佳地,所述获得被测对象测试用例的可扩展标记文件包括,为嵌入式源代码中的被测函数用可扩展标记语言编写测试用例,得到测试用例可扩展标记文件,其中,被测函数中需要构造的桩函数,采用Ruby工具编写。
较佳地,所述将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件包括,
在脚本程序运行界面下输入所述可扩展标记文件;
当脚本程序读出有可扩展标记文件存在时,则解析输入的可扩展标记文件内容,并解析出可扩展标记文件内容中包括的头文件、和/或静态全局变量、和/或被测函数的部分;
将解析出的头文件、和/或静态全局变量、和/或被测函数分别按照解析出后的测试用例的形成规则进行对应,用以生成该被测函数的测试用例;
将生成的被测函数测试用例按照Unity框架文件格式进行配置;
在脚本程序运行环境下,通过Unity工具,将配置了Unity框架格式的被测函数测试用例生成为该被测函数测试用例源码文件。
较佳地,所述通过面向对象的解释型计算机程序遍历所述测试用例框架,并进行归一化处理,得到目标测试用例包括,
在脚本程序运行下,遍历指定路径下的测试用例,
当遍历的测试用例数量与输入的数量一致时,解析读入的所有文件信息,逐一解析头文件、和/或函数内容信息,
将解析后相同的头文件、相同的函数内容合并,并统一生成一目标测试函数;
将生成的目标测试函数按照Unity框架文件格式进行配置,
通过Unity工具,将配置了Unity框架格式的目标测试函数生成为一个目标测试用例文件。
本发明另一方面提供了一种嵌入式系统中的单元测试装置,该装置包括,
测试用例可扩展标记文件生成模块,获得被测对象测试用例的可扩展标记文件;
测试用例源码文件生成模块,通过面向对象的解释型计算机程序,将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件;
目标测试用例生成模块,通过编程工具将所述测试用例码源文件自动生成目标测试用例。
较佳地,该装置还包括,
执行目标测试用例模块,通过自动化测试软件工具执行所述目标测试用例,得到测试结果。
较佳地,所述目标测试用例生成模块包括,
桩函数生成模块,采用Ruby工具为所述测试用例源码文件中的调用接口生成桩函数;
测试用例生成模块,采用Unity工具生成测试用例源码文件的测试用例。
较佳地,所述目标测试用例生成模块进一步包括,
归一化处理模块,通过面向对象的解释型计算机程序遍历所述测试用例,并进行归一化处理,得到目标测试用例。
较佳地,所述面向对象的解释型计算机程序为Python脚本程序,所述自动化测试软件工具为Parasoft工具。
较佳地,所述执行目标测试用例模块包括,
测试环境构建模块,基于编译文件,利用Parasoft工具所构建的测试环境执行目标测试用例;
测试结果获取模块,当完成目标测试用例执行后,在所述源代码文件反馈至少包括命令行、修改条件、判定范围之一的覆盖情况。
较佳地,所述将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件包括,
在脚本程序运行界面下输入所述可扩展标记文件;
当脚本程序读出有可扩展标记文件存在时,则解析输入的可扩展标记文件内容,并解析出可扩展标记文件内容中包括的头文件、和/或静态全局变量、和/或被测函数的部分;
将解析出的头文件、和/或静态全局变量、和/或被测函数分别按照解析出后的测试用例的形成规则进行对应,用以生成该被测函数的测试用例;
将生成的被测函数测试用例按照Unity框架文件格式进行配置;
在脚本程序运行环境下,通过Unity工具,将配置了Unity框架格式的被测函数测试用例生成为该被测函数测试用例源码文件。
较佳地,所述通过面向对象的解释型计算机程序遍历所述测试用例框架,并进行归一化处理,得到目标测试用例包括,
在脚本程序运行下,遍历指定路径下的测试用例,
当遍历的测试用例数量与输入的数量一致时,解析读入的所有文件信息,逐一解析头文件、和/或函数内容信息,
将解析后相同的头文件、相同的函数内容合并,并统一生成一目标测试函数;
将生成的目标测试函数按照Unity框架文件格式进行配置,
通过Unity工具,将配置了Unity框架格式的目标测试函数生成为一个目标测试用例文件。
本发明实施例优化了开发人员编写测试用例的过程,使得测试用例的形成过程中,只要关注测试用例的输入条件和预期结果,应用脚本程序自动生成测试用例,提高了测试用例编写效率,减少人为编写失误;利用工具生成测试用例的过程中,采用归一化脚本将测试用例基于单文件级执行,可提升为针对组件级甚至系统级的单元测试。利用Parasoft工具与编译文件执行生成的测试用例,实现了源码级测试用例执行结果的展示及统计功能,直观地显示了可以保证测试用例设计质量及执行结果。
附图说明
图1为本发明实施例一的嵌入式系统中的单元测试方法的一种示意图。
图2为XML文件生成单文件测试用例的一种流程示意图。
图3为本发明实施例二的嵌入式系统中的单元测试方法的一种示意图,
图4为归一化所有测试用例的一种流程图。
图5为以图3流程处理中的文件转化为主线的示意图。
图6为组件源码文件中的Event为例来展示不同阶段的输出文件示意图
图7为本发明实施例嵌入式系统中的单元测试装置的一种示意图。
具体实施方式
为了使本发明实施例的目的、技术手段和优点更加清楚明白,以下结合附图对本发明做进一步详细说明。
在现有技术中,通常所采用的单元测试方式是通过人工编写大量的测试用例代码对源程序代码进行测试验证,并通过编译生成测试报告,再通过解读测试报告中令人费解的测试数据,最终才能判断出源程序代码中的错误和漏洞。
上述现有技术存在的技术缺陷在于:在编写测试用例的过程中,可能会因为编写者的编码笔误等原因而造成测试错误,故使源程序遗留或多或少的漏洞未能及时发现;并且,测试用例代码量往往都比源程序代码量更庞大,工作量非常大,特别是在源程序代码更改后进行回归测试时,如果需要重新修改测试用例代码甚至要重写,则更是会耗费大量的编码时间。
本发明实施例为被测对象编写测试条件的可扩展标记语言(XML)文件,以面向对象的解释型计算机程序,将XML文件自动生成基于单文件级源码对应的测试用例码源文件;采用编程工具将测试用例码源文件自动生成目标测试用例,利用自动化测试软件工具执行所述基于单文件级源码对应的测试用例后,从而能够在源码中显示已测代码行、及函数逻辑是否被设计的测试用例执行过;如果存在未被执行逻辑或代码行,只需要在XML文件中根据函数逻辑增加/修改测试条件后,再进行自动化测试执行,从而保证单元测试质量。
实施例一:
参见图1所示,图1为本发明实施例一的嵌入式系统中的单元测试方法的一种示意图,在该图中以一组件文件为基础来形成该组件的测试用例为例。例如,事件(Event)。
步骤101,根据嵌入式系统的源代码中的函数,为被测函数编写XML文件,以得到测试用例的格式为XML的文件,即,得到测试用例的XML文件,在计算机终端上显示为后缀名为.xml文件。其中,被测函数中需要构建的桩函数,可采用Ruby工具来编写,被测函数包括且不限于函数逻辑、条件逻辑等。
例如,如图6所示,组件文件列表中包括了事件(Event)、头文件(Include)、资源(Resource)、任务(Task)、时间分片(Timeslice)、实时数据库(RTDB)等文件,其中,Event、Resource、Task、Timeslice、RTDB文件的后缀名为.C的单文件,以Event为例,基于Event.c单文件用XML语言编写其配置测试用例,得到测试用例的XML文件。
该步骤中,基于源码函数来编写XML文件,相对于现有技术中在嵌入式系统下用源代码来编写测试用例,由于XML文件具有可扩展性强、标记性强的特点,从而优化了开发人员编写测试用例的过程,采用Ruby工具来编写桩函数,提高了编写测试用例的效率。
步骤102,使用运行面向对象的解释型计算机程序,将XML文件自动生成基于单文件级源码对应的测试用例源码文件:
实施方式之一,例如,使用运行python脚本程序,将XML文件自动生成基于单文件级源码对应的测试用例,即,输出.c文件对应测试用例源码_ut.c文件;
该步骤中,通过python脚本程序来自动生成测试用例,能够减少人为编写测试用例代码的失误,提高了测试用例的编写效率。
具体过程参见图2,图2为XML文件生成单文件测试用例的一种流程示意图。
步骤1021,在脚本程序运行界面下输入步骤101所得到的XML文件;当脚本程序读出有XML文件存在时,则执行步骤1022;否则,终止当前脚本程序的运行,退出当前脚本程序的运行,并显示出错信息;
步骤1022,脚本程序解析输入的XML文件内容,并解析出XML文件内容中包括的头文件、静态全局变量、被测函数等的部分;
步骤1023,脚本程序将解析出的头文件、静态全局变量、被测函数等分别按照解析出后的测试用例的形成规则进行对应,用以生成该被测函数的测试用例;
步骤1024,脚本程序将生成的被测函数测试用例按照Unity框架文件格式进行配置;
步骤1025,在脚本程序运行环境下,通过Unity工具,将配置了Unity框架格式的被测函数测试用例生成为该被测函数测试用例源码文件。
将步骤101得到的XML文件中的所有被测函数逐一按照上述步骤1022到~1025处理,从而得到单文件级测试用例码源文件,即测试用例源码_ut.c文件。
步骤103,采用Ruby和Unity工具将测试用例源码文件自动生成测试用例,其中,测试用例源码文件中的桩函数可用Ruby工具生成,用于为测试用例源码文件中的调用接口生成测试用例中的桩函数,由于Unity工具本身具有框架设计生成功能,当将测试用例源码文件输入框架时可用于生成基于_ut.c文件的测试用例,即_unity_run.c文件;
该测试用例即可以作为目标测试用例。
步骤104,基于编译文件,利用Parasoft工具所构建的测试环境执行目标测试用例,例如,在Parasoft工具中选择测试环境构建设置、编译器种类设置以定义编译选项,在项目设置中配置构建命令行、构建工作目录等,以实现对目标测试用例的执行。
当目标测试用例执行完成后,可直接在源码文件中反馈测试的情况,显示源码文件中被执行源码的命令行覆盖情况、修改条件(modified condition)、判定范围(decisioncoverage)的覆盖情况,例如,行覆盖率、改进条件覆盖率、判定范围覆盖率,从而实现源码级测试用例执行结果的展示以及统计功能,并且,直接的反馈显示可以保证测试用例设计的质量和执行结果。
如果存在未被执行逻辑或代码行,只需要在XML文件中根据函数逻辑增加/修改测试条件后,再执行步骤103~104,进行自动化测试执行,从而保证单元测试质量。
实施例二:
参见图3所示,图3为本发明实施例二的嵌入式系统中的单元测试方法的一种示意图,在该图中以一组件文件为基础来形成该组件的测试用例为例。例如,事件(Event)。
步骤201,根据嵌入式系统的源代码中的函数,为被测函数编写XML文件,以得到测试用例的格式为XML的文件,即,得到测试用例的XML文件,在计算机终端上显示为后缀名为.xml文件。其中,被测函数中需要构建的桩函数,可采用Ruby工具来编写,被测函数包括且不限于函数逻辑、条件逻辑等。
例如,如图6所示,组件文件列表中包括了事件(Event)、资源(Resource)、任务(Task)、时间分片(Timeslice)、实时数据库(RTDB)等后缀名为.C的单文件,以Event为例,基于Event.c单文件用XML语言编写其配置测试用例,得到测试用例的XML文件。
该步骤中,基于源码函数来编写XML文件,相对于现有技术中在嵌入式系统下用源代码来编写测试用例,由于XML文件具有可扩展性强、标记性强的特点,从而优化了开发人员编写测试用例的过程,采用Ruby工具来编写桩函数,提高了编写测试用例的效率。
步骤202,运行面向对象的解释型计算机程序,将XML文件自动生成基于单文件级源码对应的测试用例源码文件:
实施方式之一,例如,运行python脚本程序,将XML文件自动生成基于单文件级源码对应的测试用例,即,输出.c文件对应测试用例源码_ut.c文件;
该步骤中,通过python脚本程序来自动生成测试用例,能够减少人为编写测试用例代码的失误,提高了测试用例的编写效率。
参见图2所示,图2为XML文件生成单文件测试用例的一种流程示意图。
步骤1021,在脚本程序运行界面下输入步骤101所得到的XML文件;当脚本程序读出有XML文件存在时,则执行步骤1022;否则,终止当前脚本程序的运行,退出当前脚本程序的运行,并显示出错信息;
步骤1022,脚本程序解析输入的XML文件内容,并解析出XML文件内容中包括的头文件、静态全局变量、被测函数等的部分;
步骤1023,脚本程序将解析出的头文件、静态全局变量、被测函数等分别按照解析出后的测试用例的形成规则进行对应,用以生成该被测函数的测试用例;
步骤1024,脚本程序将生成的被测函数测试用例按照Unity框架文件格式进行配置;
步骤1025,在脚本程序运行环境下,通过Unity工具,将配置了Unity框架格式的被测函数测试用例生成为该被测函数测试用例源码文件。
将步骤201得到的XML文件中的所有被测函数逐一按照上述步骤1022到~1025处理,从而得到单文件级测试用例码源文件,即测试用例源码_ut.c文件。
步骤203,采用Unity工具将测试用例源码文件自动生成测试用例,其中,测试用例源码文件中的桩函数可用Ruby工具生成,由于Unity工具本身具有框架设计生成功能,当将测试用例源码文件输入框架时可用于生成基于_ut.c文件的测试用例,即_unity_run.c文件;
按照上述步骤201~203,同样地,可以将组件文件列表中资源(Resource)、任务(Task)、时间分片(Timeslice)、实时数据库(RTDB)等后缀名为.C的单文件分别生成该组件文件的测试用例。
步骤204,采用python脚本程序遍历所有测试用例,例如,event测试用例、resource测试用例、task测试用例等,将所有测试用例中相同的头文件、主函数等进行归一化,即合并测试用例中相同的头文件、主函数、任务、数据库等,然后自动生成组件级的测试用例,即目标测试用例;具体步骤参见图4所示,图4为归一化所有测试用例的一种流程图。
步骤2041,在脚本程序运行下,遍历指定路径下的测试用例,即,遍历unity_run.c文件,当遍历的测试用例数量与输入的数量一致时,则执行步骤2042,否则,终止当前脚本程序的运行,退出当前脚本程序的运行,并显示出错信息;
步骤2042,脚本程序解析读入的所有文件信息,逐一解析头文件、函数内容等信息,
步骤2043,脚本程序将解析后相同的头文件、相同的函数内容合并,并统一生成一目标测试函数;
步骤2044,脚本程序将生成的目标测试函数按照Unity框架文件格式进行配置,
步骤2045,在脚本程序运行环境下,通过Unity工具,将配置了Unity框架格式的目标测试函数生成为一个目标测试用例文件,即main.c文件。
在该步骤中,进行归一化的处理一方面有利于精简目标测试用例的程序长度,另一方面有利于提取出目标用例中公共的部分,由此可将单文件级执行的所有目标测试用例通过归一化处理提升为针对组件级、甚至是系统级的单元测试。例如,采用该测试方案对嵌入式的框架设计进行组件级解耦,同时也提高组件代码质量。类似地,也可以基于一个测试用例来进行归一化处理,通过上述步骤2041~2045,来精简目标测是用例程序的长度。
步骤205,基于编译文件,利用Parasoft工具所构建的测试环境执行目标测试用例,例如,在Parasoft工具中选择测试环境构建设置、编译器种类设置以定义编译选项,在项目设置中配置构建命令行、构建工作目录等,以实现对目标测试用例的执行。
当目标测试用例执行完成后,可直接在源码文件中反馈测试的情况,显示源码文件中被执行源码的命令行覆盖情况、修改条件(modified condition)、判定范围(decisioncoverage)的覆盖情况,例如,行覆盖率、改进条件覆盖率、判定范围覆盖率,从而实现源码级测试用例执行结果的展示以及统计功能,并且,直接的反馈显示可以保证测试用例设计的质量和执行结果。
如果存在未被执行逻辑或代码行,只需要在XML文件中根据函数逻辑增加/修改测试条件后,再执行步骤203~205,进行自动化测试执行,从而保证单元测试质量。
为便于对上述流程的理解,结合图5所示进一步说明本发明实施例的单元测试方法。参见图5所示,图5为以图3流程处理中的文件转化为主线的示意图。根据嵌入式源代码,用XML语言为被测试函数编写测试用例,得到测试用例可扩展标记文件,用python脚本程序将测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例,得到测试用例源码文件;用Unity工具将测试用例源码文件自动生成测试用例;用python脚本程序对测试用例进行归一化处理,得到目标测试用例;用Parasoft工具根据编译文件构建测试环境,运行所述目标测试用例。当目标测试用例执行完成后,可直接在源码文件中反馈测试的情况。上述测试用例文件基于单文件级。
参见图6所示,图6是组件源码文件中的Event为例来展示不同阶段的输出文件示意图。图中,虚线表示组件源码文件中的其他文件例如Resource等都可与Event的目标测试用例的生成过程相同,文件后缀名为.c表示均为单文件级。在该图中表示了,通过归一化处理,将Event测试用例、Resource测试用例等测试用例生成一个目标测试用例的示例。参见图7所示,图7为本发明实施例嵌入式系统中的单元测试装置的一种示意图。该装置包括,
测试用例可扩展标记文件生成模块,为嵌入式源代码中的被测函数编写测试用例,得到测试用例可扩展标记文件;
测试用例源码文件生成模块,通过面向对象的解释型计算机程序,将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件;
目标测试用例生成模块,通过编程工具将所述测试用例码源文件自动生成目标测试用例;
执行目标测试用例模块,通过自动化测试软件工具执行所述目标测试用例,得到测试结果。
其中,所述目标测试用例生成模块包括,
测试用例生成模块,采用Unity工具生成测试用例源码文件的测试用例,
归一化处理模块,通过面向对象的解释型计算机程序遍历所述测试用例,并进行归一化处理,得到目标测试用例。
所述面向对象的解释型计算机程序为Python脚本程序,所述自动化测试软件工具为Parasoft工具。
所述执行目标测试用例模块包括,
测试环境构建模块,基于编译文件,利用Parasoft工具所构建的测试环境执行目标测试用例;
测试结果获取模块,当完成目标测试用例执行后,在所述源代码文件反馈至少包括命令行、修改条件、判定范围之一的覆盖情况。
本发明实施例还提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:
为嵌入式源代码中的被测函数编写测试用例,得到测试用例可扩展标记文件;
通过面向对象的解释型计算机程序,将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件;
通过编程工具将所述测试用例码源文件自动生成目标测试用例;
通过自动化测试软件工具执行所述目标测试用例,得到测试结果。
对于存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (17)
1.一种嵌入式系统中的单元测试方法,其特征在于,该方法包括,
获得被测对象测试用例的可扩展标记文件;
通过面向对象的解释型计算机程序,将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件;
通过编程工具,将所述测试用例码源文件自动生成目标测试用例。
2.如权利要求1所述的方法,其特征在于,该方法还包括,通过自动化测试软件工具执行所述目标测试用例,得到测试结果。
3.如权利要求1所述的方法,其特征在于,所述通过编程工具将所述测试用例源码文件自动生成目标测试用例包括,
采用Unity工具将所述测试用例源码文件自动生成测试用例,将所述测试用例作为目标测试用例,其中,测试用例源码文件中的桩函数用Ruby工具生成。
4.如权利要求3所述的方法,其特征在于,所述通过编程工具将所述测试用例源码文件自动生成目标测试用例进一步包括,
通过面向对象的解释型计算机程序遍历所述测试用例,并进行归一化处理,得到目标测试用例。
5.如权利要求1至4任一所述的方法,其特征在于,所述面向对象的解释型计算机程序为Python脚本程序,所述自动化测试软件工具为Parasoft工具。
6.如权利要求5所述的方法,其特征在于,所述通过自动化测试软件工具执行所述目标测试用例,得到测试结果包括,
基于编译文件,利用Parasoft工具所构建的测试环境执行目标测试用例;
当完成目标测试用例执行后,在所述源代码文件反馈至少包括命令行、修改条件、判定范围之一的覆盖情况。
7.如权利要求1所述的方法,其特征在于,所述获得被测对象测试用例的可扩展标记文件包括,为嵌入式源代码中的被测函数用可扩展标记语言编写测试用例,得到测试用例可扩展标记文件,其中,被测函数中需要构造的桩函数,采用Ruby工具编写。
8.如权利要求5所述的方法,其特征在于,所述将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件包括,
在脚本程序运行界面下输入所述可扩展标记文件;
当脚本程序读出有可扩展标记文件存在时,则解析输入的可扩展标记文件内容,并解析出可扩展标记文件内容中包括的头文件、和/或静态全局变量、和/或被测函数的部分;
将解析出的头文件、和/或静态全局变量、和/或被测函数分别按照解析出后的测试用例的形成规则进行对应,用以生成该被测函数的测试用例;
将生成的被测函数测试用例按照Unity框架文件格式进行配置;
在脚本程序运行环境下,通过Unity工具,将配置了Unity框架格式的被测函数测试用例生成为该被测函数测试用例源码文件。
9.如权利要求5所述的方法,其特征在于,所述通过面向对象的解释型计算机程序遍历所述测试用例框架,并进行归一化处理,得到目标测试用例包括,
在脚本程序运行下,遍历指定路径下的测试用例,
当遍历的测试用例数量与输入的数量一致时,解析读入的所有文件信息,逐一解析头文件、和/或函数内容信息,
将解析后相同的头文件、相同的函数内容合并,并统一生成一目标测试函数;
将生成的目标测试函数按照Unity框架文件格式进行配置,
通过Unity工具,将配置了Unity框架格式的目标测试函数生成为一个目标测试用例文件。
10.一种嵌入式系统中的单元测试装置,其特征在于,该装置包括,
测试用例可扩展标记文件生成模块,获得被测对象测试用例的可扩展标记文件;
测试用例源码文件生成模块,通过面向对象的解释型计算机程序,将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件;
目标测试用例生成模块,通过编程工具将所述测试用例码源文件自动生成目标测试用例。
11.如权利要求10所述的装置,其特征在于,该装置还包括,
执行目标测试用例模块,通过自动化测试软件工具执行所述目标测试用例,得到测试结果。
12.如权利要求10所述的装置,其特征在于,所述目标测试用例生成模块包括,
桩函数生成模块,采用Ruby工具为所述测试用例源码文件中的调用接口生成桩函数;
测试用例生成模块,采用Unity工具生成测试用例源码文件的测试用例。
13.如权利要求12所述的装置,其特征在于,所述目标测试用例生成模块进一步包括,
归一化处理模块,通过面向对象的解释型计算机程序遍历所述测试用例,并进行归一化处理,得到目标测试用例。
14.如权利要求10至13任一所述的装置,其特征在于,所述面向对象的解释型计算机程序为Python脚本程序,所述自动化测试软件工具为Parasoft工具。
15.如权利要求14所述的装置,其特征在于,所述执行目标测试用例模块包括,
测试环境构建模块,基于编译文件,利用Parasoft工具所构建的测试环境执行目标测试用例;
测试结果获取模块,当完成目标测试用例执行后,在所述源代码文件反馈至少包括命令行、修改条件、判定范围之一的覆盖情况。
16.如权利要求14所述的装置,其特征在于,所述将所述测试用例可扩展标记文件自动化生成基于单文件级源码对应的测试用例源码文件包括,
在脚本程序运行界面下输入所述可扩展标记文件;
当脚本程序读出有可扩展标记文件存在时,则解析输入的可扩展标记文件内容,并解析出可扩展标记文件内容中包括的头文件、和/或静态全局变量、和/或被测函数的部分;
将解析出的头文件、和/或静态全局变量、和/或被测函数分别按照解析出后的测试用例的形成规则进行对应,用以生成该被测函数的测试用例;
将生成的被测函数测试用例按照Unity框架文件格式进行配置;
在脚本程序运行环境下,通过Unity工具,将配置了Unity框架格式的被测函数测试用例生成为该被测函数测试用例源码文件。
17.如权利要求14所述的装置,其特征在于,所述通过面向对象的解释型计算机程序遍历所述测试用例框架,并进行归一化处理,得到目标测试用例包括,
在脚本程序运行下,遍历指定路径下的测试用例,
当遍历的测试用例数量与输入的数量一致时,解析读入的所有文件信息,逐一解析头文件、和/或函数内容信息,
将解析后相同的头文件、相同的函数内容合并,并统一生成一目标测试函数;
将生成的目标测试函数按照Unity框架文件格式进行配置,
通过Unity工具,将配置了Unity框架格式的目标测试函数生成为一个目标测试用例文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811101373.2A CN110928760B (zh) | 2018-09-20 | 2018-09-20 | 一种嵌入式系统中的单元测试方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811101373.2A CN110928760B (zh) | 2018-09-20 | 2018-09-20 | 一种嵌入式系统中的单元测试方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110928760A true CN110928760A (zh) | 2020-03-27 |
CN110928760B CN110928760B (zh) | 2023-10-20 |
Family
ID=69855502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811101373.2A Active CN110928760B (zh) | 2018-09-20 | 2018-09-20 | 一种嵌入式系统中的单元测试方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110928760B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360410A (zh) * | 2021-07-19 | 2021-09-07 | 上汽通用五菱汽车股份有限公司 | 一种c代码软件的测试方法与可读存储介质 |
CN116578498A (zh) * | 2023-07-12 | 2023-08-11 | 西南交通大学 | 一种单元测试用例自动生成方法及系统 |
CN117472785A (zh) * | 2023-12-25 | 2024-01-30 | 银河麒麟软件(长沙)有限公司 | Linux系统下的Openstack测试方法及系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6505342B1 (en) * | 2000-05-31 | 2003-01-07 | Siemens Corporate Research, Inc. | System and method for functional testing of distributed, component-based software |
CN1873626A (zh) * | 2005-06-01 | 2006-12-06 | 中兴通讯股份有限公司 | 一种自动生成桩和驱动函数的单元测试系统及方法 |
CN201392526Y (zh) * | 2009-03-25 | 2010-01-27 | 大连海事大学 | 用于移动应用程序的机上测试系统 |
US8028276B1 (en) * | 2007-06-29 | 2011-09-27 | Oracle America, Inc. | Method and system for generating a test file |
CN102955740A (zh) * | 2012-12-13 | 2013-03-06 | 中国航空无线电电子研究所 | 一种基于Perl的驱动函数和桩函数生成方法 |
CN103001813A (zh) * | 2013-01-08 | 2013-03-27 | 太仓市同维电子有限公司 | 一种用于网管设备中配置管理的方法 |
US20130174125A1 (en) * | 2011-12-28 | 2013-07-04 | Verisign, Inc. | Test automation environment |
US20140245070A1 (en) * | 2013-02-27 | 2014-08-28 | International Business Machines Corporation | Automated execution of functional test scripts on a remote system within a unit testing framework |
KR20160044305A (ko) * | 2014-10-15 | 2016-04-25 | 삼성에스디에스 주식회사 | 코드의 단위 테스트를 위한 장치 및 방법 |
CN106874202A (zh) * | 2017-02-14 | 2017-06-20 | 网易无尾熊(杭州)科技有限公司 | 用于单元测试的方法、装置以及可读存储介质 |
CN107807883A (zh) * | 2017-10-27 | 2018-03-16 | 郑州云海信息技术有限公司 | 一种用户态网络文件系统的单元测试方法及装置 |
CN108153661A (zh) * | 2016-12-05 | 2018-06-12 | 腾讯科技(深圳)有限公司 | 执行测试用例的方法和装置 |
-
2018
- 2018-09-20 CN CN201811101373.2A patent/CN110928760B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6505342B1 (en) * | 2000-05-31 | 2003-01-07 | Siemens Corporate Research, Inc. | System and method for functional testing of distributed, component-based software |
CN1873626A (zh) * | 2005-06-01 | 2006-12-06 | 中兴通讯股份有限公司 | 一种自动生成桩和驱动函数的单元测试系统及方法 |
US8028276B1 (en) * | 2007-06-29 | 2011-09-27 | Oracle America, Inc. | Method and system for generating a test file |
CN201392526Y (zh) * | 2009-03-25 | 2010-01-27 | 大连海事大学 | 用于移动应用程序的机上测试系统 |
US20130174125A1 (en) * | 2011-12-28 | 2013-07-04 | Verisign, Inc. | Test automation environment |
CN102955740A (zh) * | 2012-12-13 | 2013-03-06 | 中国航空无线电电子研究所 | 一种基于Perl的驱动函数和桩函数生成方法 |
CN103001813A (zh) * | 2013-01-08 | 2013-03-27 | 太仓市同维电子有限公司 | 一种用于网管设备中配置管理的方法 |
US20140245070A1 (en) * | 2013-02-27 | 2014-08-28 | International Business Machines Corporation | Automated execution of functional test scripts on a remote system within a unit testing framework |
KR20160044305A (ko) * | 2014-10-15 | 2016-04-25 | 삼성에스디에스 주식회사 | 코드의 단위 테스트를 위한 장치 및 방법 |
CN108153661A (zh) * | 2016-12-05 | 2018-06-12 | 腾讯科技(深圳)有限公司 | 执行测试用例的方法和装置 |
CN106874202A (zh) * | 2017-02-14 | 2017-06-20 | 网易无尾熊(杭州)科技有限公司 | 用于单元测试的方法、装置以及可读存储介质 |
CN107807883A (zh) * | 2017-10-27 | 2018-03-16 | 郑州云海信息技术有限公司 | 一种用户态网络文件系统的单元测试方法及装置 |
Non-Patent Citations (1)
Title |
---|
徐宏革等, 北京航空航天大学出版社, pages: 79 - 81 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360410A (zh) * | 2021-07-19 | 2021-09-07 | 上汽通用五菱汽车股份有限公司 | 一种c代码软件的测试方法与可读存储介质 |
CN116578498A (zh) * | 2023-07-12 | 2023-08-11 | 西南交通大学 | 一种单元测试用例自动生成方法及系统 |
CN116578498B (zh) * | 2023-07-12 | 2023-09-29 | 西南交通大学 | 一种单元测试用例自动生成方法及系统 |
CN117472785A (zh) * | 2023-12-25 | 2024-01-30 | 银河麒麟软件(长沙)有限公司 | Linux系统下的Openstack测试方法及系统 |
CN117472785B (zh) * | 2023-12-25 | 2024-04-16 | 银河麒麟软件(长沙)有限公司 | Linux系统下的Openstack测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110928760B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108446190B (zh) | 接口测试方法及装置 | |
CN109840206B (zh) | 数据测试方法、装置、终端及存储介质 | |
CN103631720B (zh) | 测试用例的生成方法和装置 | |
CN108845940B (zh) | 一种企业级信息系统自动化功能测试方法和系统 | |
US8549483B1 (en) | Engine for scalable software testing | |
CN101930400B (zh) | Sdk自动化测试系统及方法 | |
US20160357519A1 (en) | Natural Language Engine for Coding and Debugging | |
CN108446223B (zh) | 一种基于动态编译的业务场景自动化测试方法 | |
US8881109B1 (en) | Runtime documentation of software testing | |
CN104077140A (zh) | 用于持续集成的自动化编译方法和编译装置 | |
CN104407973A (zh) | 一种自动化单元测试的实现方法及装置 | |
CN111399853A (zh) | 机器学习模型与自定义算子的模板化部署方法 | |
CN110825619A (zh) | 接口测试用例自动生成方法、装置及存储介质 | |
CN110928760B (zh) | 一种嵌入式系统中的单元测试方法与装置 | |
CN113127347A (zh) | 一种接口测试方法、装置、设备及可读存储介质 | |
US10496379B2 (en) | Facilitated production of code for software testing | |
CN111897727A (zh) | 软件测试方法、装置、计算机设备及存储介质 | |
CN112131116A (zh) | 一种嵌入式软件自动化回归测试方法 | |
CN112083919A (zh) | 一种基于yaml模板的目标服务代码生成方法及装置 | |
CN112230904A (zh) | 基于接口文档的代码生成方法、装置、存储介质及服务器 | |
CN114661615A (zh) | 一种fpga软件测试方法和设备 | |
CN116541308B (zh) | 一种回归测试方法及系统 | |
CN116893960A (zh) | 代码质量检测方法、装置、计算机设备和存储介质 | |
CN114356783A (zh) | 单元测试代码自动生成方法、装置、存储介质及设备 | |
CN115237753A (zh) | 固件排错方法、系统、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |