首页 / 专利库 / 电脑零配件 / 嵌入式系统 / 一种适用于嵌入式系统的单元测试框架

一种适用于嵌入式系统的单元测试框架

阅读:1013发布:2020-05-28

专利汇可以提供一种适用于嵌入式系统的单元测试框架专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种适用于 嵌入式系统 的单元测试 框架 ,用于解决当前嵌入式领域应用程序标准化测试的问题。所述单元测试框架包括标准测试 接口 模 块 、测试 用例 导出模块、测试命令解析模块、测试单元执行模块、日志模块和测试结果处理模块。其中测试用例导出模块将测试用例程序抽象为测试初始化模块、测试清理模块和测试用例程序入口模块,并利用链接器特性将测试用例程序导出到程序镜像中 指定 的代码段。所述单元测试框架使用标准C语言编写,实现了通用测试接口,降低了测试用例程序编写难度,提高了代码复用度,缩短了开发周期,适用于所有的嵌入式 操作系统 ,并可以移植到没有使用嵌入式系统的裸机系统中使用。,下面是一种适用于嵌入式系统的单元测试框架专利的具体信息内容。

1.一种适用于嵌入式系统的单元测试框架,其特征在于,包括:
标准测试接口,用于编写格统一的测试用例程序;
测试用例导出模块,用于将测试用例程序抽象为特定的数据结构,存储在可执行程序镜像中;
测试命令解析模块,用于手动指定一个或多个待测试的测试用例程序;
测试单元执行模块,定义了测试用例和测试单元两层结构;
日志模块,用于统一日志输出风格;以及
测试结果处理模块,用于实时记录每一个测试成功或失败的测试项。
2.根据权利要求1所述的一种适用于嵌入式系统的单元测试框架,其特征在于,所述标准测试接口模块使用C语言宏定义的方式实现统一的测试结果判断接口,用户使用所述标准测试接口模块编写测试用例程序,判断测试结果是否与预期结果匹配。
3.根据权利要求1所述的一种适用于嵌入式系统的单元测试框架,其特征在于,所述测试用例导出模块将测试用例程序抽象出一个数据结构,包含测试用例名称、测试用例初始化函数、测试用例入口函数和测试用例清理函数;并利用链接器特性,将上述数据结构存储到可执行程序镜像中指定的代码段。
4.根据权利要求1所述的一种适用于嵌入式系统的单元测试框架,其特征在于,所述测试单元执行模块将测试用例程序定义为测试用例和测试单元两层结构,一个测试用例程序包含一个测试用例,一个测试用例可以对应多个测试单元,测试单元使用测试单元执行模块运行。
5.根据权利要求1所述的一种适用于嵌入式系统的单元测试框架,其特征在于,所述测试命令解析模块定义一套测试命令便于执行所述测试用例导出模块导出的测试用例程序。
6.根据权利要求1所述的一种适用于嵌入式系统的单元测试框架,其特征在于,所述日志模块采用统一的日志风格格式化日志输出。
7.根据权利要求1所述的一种适用于嵌入式系统的单元测试框架,其特征在于,所述测试结果处理模块使用计数的方式实时记录每一个测试成功或失败的测试项。

说明书全文

一种适用于嵌入式系统的单元测试框架

技术领域

[0001] 本发明涉及嵌入式软件测试领域,特别涉及应用于嵌入式系统的单元测试框架的测试方法和测试系统。

背景技术

[0002] 随着计算机技术的飞速发展和物联网技术的快速崛起,嵌入式软硬件迭代速度也越来越快,对嵌入式软件质量和系统稳定性提出了更高的要求。由于嵌入式系统通常使用的是实时操作系统或者裸机系统,且内存受限,通用计算机软件上的C语言单元测试框架并不能应用于嵌入式软件测试。由于嵌入式软件测试没有通用的测试框架,无法撰写可复用的通用测试用例程序,测试覆盖率低。

发明内容

[0003] 鉴于现有技术中存在的问题,本发明提供了一种适用于嵌入式系统的单元测试框架,所述单元测试框架主要包括标准测试接口、测试用例导出模块、测试命令解析模块、测试单元执行模块、日志模块和测试结果处理模块。所述标准测试接口模块用于编写统一的测试用例程序;所述测试用例导出模块使用链接器特性将测试用例程序抽象出的数据结构存储到可执行程序镜像的指定代码段区域,用于降低内存使用;所述测试命令解析模块为用户提供测试命令,以允许用户手动指定需要运行的测试用例;所述测试单元执行模块将测试用例程序定义为两层结构,上层为测试用例,下层为测试单元,简化测试用例功能项的拆分测试难度,使得每一个功能项独立对应于一个测试单元,一个测试用例程序包含一个测试用例,一个测试用例可以对应多个测试单元,测试单元使用测试单元执行模块运行;所述日志模块采用统一的日志输出格,并在测试失败的位置输出详细的信息(如文件名、行号、函数名);所述测试结果处理模块使用计数的方式实时记录每一个测试成功或失败的测试项,并使用日志模块输出测试结果。
[0004] 本发明的有益效果在于以下实现:
[0005] (1)抽象实现了标准测试接口模块,便于实现风格统一的通用测试用例程序,解决了现有测试没有统一的结构和测试结果判断方式的问题;
[0006] (2)采用了链接器特性,将测试用例程序导出并汇总到程序镜像中指定的代码段的方式,增加测试用例程序不会导致额外的内存消耗(小于1K字节),有效避免了嵌入式设备内存小的问题,内存消耗显著低于现有的测试框架;
[0007] (3)使用日志模块标准化输出测试结果,便于集成测试、自动化测试以及数据分析,相比传统的上位机解析更加简单方便。附图说明
[0008] 图1为本发明实施例的整体功能结构图;
[0009] 图2为本发明实施例的测试用例在可执行程序镜像中的示意存储位置图;
[0010] 图3为本发明实施例的单元测试框架的执行流程图

具体实施方式

[0011] 为使本发明实施例的目的、技术方案和优点更加清楚,下面结合说明书附图对本发明实施例进行说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0012] 本发明最关键的设计思想在于:所述单元测试框架对测试用例结构进行了抽象,通过将所有的测试用例的属性和方法抽象出一个数据结构(包括测试用例名称、测试用例初始化函数、测试用例入口函数、测试用例清理函数以及测试用例预期运行时间),并利用链接器特性将所有测试用例数据结构链接汇总到可执行程序固定的一段空间,并采用计数方式处理测试结果及实时输出测试结果,从而达到单元测试框架管理测试用例时对内存的最小占用(小于1K字节)的目的。
[0013] 如图1所示,本发明所述单元测试框架由标准测试接口模块S102、测试用例导出模块S103、测试命令解析模块S104、测试单元执行模块S105、日志模块S106和测试结果处理模块S107组成,用户基于本发明撰写测试用例程序S101。各个功能模块释义如下:
[0014] 测试用例程序S101基于S102模块提供的标准测试接口模块实现测试用例程序;
[0015] 标准测试接口模块S102使用C语言宏定义的方式,实现了统一的测试结果判断接口,判断测试结果是否与预期结果匹配;
[0016] 测试用例导出模块S103将测试用例程序抽象出一个数据结构,包含测试用例名称、测试用例初始化函数、测试用例入口函数和测试用例清理函数,并且该数据结构存储在ROM区域的只读代码段,不占用内存。并创新性地引入链接器的特性将测试用例抽象出的数据结构直接导出并汇总到可执行程序镜像中指定的代码段区域,降低测试框架管理测试用例的内存需求;
[0017] 测试命令解析模块S104用于解析测试命令,支持使用测试命令运行指定的测试用例;
[0018] 测试单元执行模块S105将测试用例程序定义为两层结构,上层为测试用例,下层为测试单元,简化测试用例功能项的拆分测试难度,使得每一个功能项独立对应于一个测试单元。一个测试用例程序包含一个测试用例,一个测试用例可以对应多个测试单元,测试单元使用测试单元执行模块运行;
[0019] 日志模块S106集成日志记录功能,采用统一的风格输出调试日志;
[0020] 测试结果处理模块S107使用计数的方式实时记录每一个测试成功或失败的测试项,并使用日志模块S106输出测试结果。
[0021] 本发明所述单元测试框架中的测试用例导出模块S103目的是将所有的测试用例汇总到可执行程序镜像中指定的代码段进行管理,图2描述了测试用例在可执行程序镜像中的示意存储分布情况。如图2所示,可执行程序镜像存储在嵌入式硬件的只读存储器(ROM)中;其中可执行程序镜像中的代码段被链接器汇总到RO段;可执行程序镜像中可读可写的全局变量被链接器汇总到RW段;所述单元测试框架抽象出来的测试用例数据结构被汇总到测试框架代码段,在图2中使用测试用例1和测试用例n表示。最后,所述单元测试框架执行过程中以C语言数组下标的方式读取图2所示的测试框架代码段区域中的测试用例数据结构,进而执行测试用例程序。
[0022] 为了可以更清晰地了解本发明所述的单元测试框架原理与测试用例运行机制,引入单元测试框架执行流程图,如图3所示,具体步骤包括:
[0023] 步骤S301:定义测试用例数据结构,包括测试用例名称、测试用例初始化函数、测试用例入口函数、测试用例清理函数以及测试用例预期运行时间;
[0024] 步骤S302:通过使用链接器链接描述文件的SECTIONS、.text和KEEP关键字将测试用例的数据结构链接到可执行程序镜像代码段的固定位置;
[0025] 步骤S303:程序运行时,从嵌入式设备代码存储区域(通常称为ROM)查找测试用例代码段存储区域的起止地址,并计算出存储的测试用例数量,该过程不占用内存;
[0026] 步骤S304:使用步骤S303中得到的测试用例代码段区域的起始地址,以数组的方式,通过数组下标来访问具体的一个个测试用例数据结构;
[0027] 步骤S305:使用步骤S304中得到的数据结构,执行该数据结构对应的测试用例初始化函数;
[0028] 步骤S306:使用步骤S304中得到的数据结构,执行该数据结构对应的测试用例入口函数;
[0029] 步骤S307:执行步骤S306中测试入口函数中的测试单元执行模块,测试单元执行模块运行基于所述单元测试框架提供的标准测试接口模块编写的测试代码;
[0030] 步骤S308:步骤S307中对应的测试代码调用所述单元测试框架提供的标准测试接口模块判断测试结果,达成测试目的;
[0031] 步骤S309:在步骤S308中调用单元测试框架提供的测试接口判断测试结果,该过程中,标准测试接口模块会记录测试成功和测试失败的测试项数量;
[0032] 步骤S310:在步骤S308中调用单元测试框架提供的测试接口判断测试结果,在该过程中,通过日志模块输出成功或失败的信息,包括程序测试成功或失败的位置信息(文件名、函数名和行号信息);
[0033] 步骤S311:执行测试用例清理函数,回收测试过程中创建的内存、定时器等资源;
[0034] 最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照优化实施例对本发明进行了详细的说明,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈