System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于CppUnit框架的单元测试脚本自动生成方法技术_技高网

一种基于CppUnit框架的单元测试脚本自动生成方法技术

技术编号:40484435 阅读:4 留言:0更新日期:2024-02-26 19:17
本发明专利技术公开了一种基于CppUnit框架的单元测试脚本自动生成方法,包括以下步骤:(1)分析CppUnit单元测试框架的语法,识别关键要素,并设计标准的Excel用例模板,模板中定义生成脚本所需的关键字及属性;(2)设计单元测试脚本自动生成工具的前台UI页面;(3)浏览用户填写的Excel用例模板,搜索和遍历表头中的关键字,对用户填写信息的合规性和模板正确性进行校验,给出错误提示;(4)对Excel用例模板进行处理;(5)从存储的数据结构中提取信息,格式化生成满足CppUnit单元测试框架的.cpp测试脚本文件;(6)从存储的数据结构中提取信息,格式化生成满足CppUnit单元测试框架的.h测试脚本文件;本发明专利技术能够自动检查并校验用户填写的用例设计表;实现用例设计的快速编写,甚至是批量设计用例,大大提高脚本开发的效率。

【技术实现步骤摘要】

本专利技术涉及软件工程,具体涉及一种基于cppunit框架的单元测试脚本自动生成方法。


技术介绍

1、嵌入式软件开发及维护过程中,需要开展单元测试来提升软件产品质量,降低代码缺陷泄漏。cppunit移植自junit,作为一套开源的单元测试框架,广泛适用于嵌入式软件的单元测试活动。使用cppunit进行单元测试时,由于脚本编写和修改的工作量大,涉及到的技术细节较多,人工编写时极易出错,导致单元测试花费大量时间都是在解决脚本问题,影响了单元测试的效率和质量,也增加了测试人员的学习成本。


技术实现思路

1、专利技术目的:本专利技术的目的是提供一种基于cppunit框架的单元测试脚本自动生成方法实现通过填写excel表即可完成测试用例脚本的开发,降低脚本编写的难度,规范化脚本格式,减少脚本编写过程的出错率,一键化自动生成可编译执行的单元测试脚本,提高单元测试脚本质量和测试效率。

2、技术方案:本专利技术所述的一种基于cppunit框架的单元测试脚本自动生成方法,包括以下步骤:

3、(1)分析cppunit单元测试框架的语法,识别关键要素,并设计标准的excel用例模板,模板中定义生成脚本所需的关键字及属性;

4、(2)设计单元测试脚本自动生成工具的前台ui页面,包括浏览excel用例路径、填写源代码顶层文件夹名称、选择软件架构、填写无返回值的桩函数列表、生成初始test文件和单元测试脚本按钮;

5、(3)浏览用户填写的excel用例模板,搜索和遍历表头中的关键字,对用户填写信息的合规性和模板正确性进行校验,给出错误提示;

6、(4)对excel用例模板进行处理,判断桩函数是否需要打桩,查找并存储各个输入、输出及桩函数,收集用于脚本生成的必要信息;

7、(5)从存储的数据结构中提取信息,格式化生成满足cppunit单元测试框架的.cpp测试脚本文件;

8、(6)从存储的数据结构中提取信息,格式化生成满足cppunit单元测试框架的.h测试脚本文件。

9、进一步的,所述步骤(1)包括以下步骤:

10、(11)每个被测函数设计一个excel用例模板,以“test_函数名”来命名,包含3个sheet页:第1个sheet页的名称为函数名,第2个sheet页命名为“变量信息映射表”,第3个sheet页命名为“测试信息”;

11、(12)第1个sheet页中表格每一列对应用例的不同属性,第一行的表头用来告知用户需要填写哪些信息;从第2行起,每一行代表一个具体的测试用例;表头的内容依次为caseid用例号、reqid需求号、loopcnt该用例循环次数、输入参数填写、输出参数填写、测试方法、用例说明;

12、(13)使用特征字符“i/o”来分隔输入、输出参数;使用特征字符“end”来分隔输出参数与测试方法;将被测函数的所有输入参数填写到第一行输入参数的位置;将被测函数的所有输出参数填写到第一行输出参数的位置;其中,若输入有桩函数,则在桩函数的函数名前加上特征字符“[i]”;若函数有返回值,则在返回值前加上特征字符“[r]”,并作为输出参数;

13、(14)从第2行开始,用户根据实际情况填写用例信息,计算期望输出,标识出所用的测试方法,并对该用例覆盖的场景进行说明;

14、(15)第2个sheet页中,按照第1个sheet页中所有输入、输出的顺序对其进行对应属性补充,包括变量名、变量类型和变量属性;

15、(16)第3个sheet页中是用来记录测试过程信息的,记录内容包括测试人员、测试日期、代码版本、需求版本和审核人员。

16、进一步的,变量属性包括:全局变量、一般形参和指针形参;

17、进一步的,所述输入参数包括:包括形参、全局变量、桩函数;输出参数包括:指针、全局变量、返回值;

18、进一步的,测试方法包括:等价类、边界值、重复性、特殊路径、mcdc、循环验证、溢出验证、除零验证。在列表中选择“√”或“×”标识出所用的测试方法。

19、进一步的,所述步骤(2)包括以下步骤:

20、(21)每个被测函数创建一个以“test_函数名”来命名的文件夹,用于放置excel用例设计表和测试脚本;通过设计“浏览”按钮,保存excel用例模板及相关路径信息。

21、(22)设计“源代码顶层文件夹名称”文本框,由用户根据实际情况填写。

22、(23)设计“软件架构”下拉菜单,由用户根据实际情况选择是“通用架构”还是“非通用架构”。

23、(24)设计一个多行文本框用于让用户补充填写桩函数名称;该处的桩函数不需要填写形参,若存在多个桩函数则用回车符分隔。

24、(25)设计“生成初始test文件”按钮和“生成脚本”按钮,用于触发后台自动生成逻辑。

25、进一步的,所述步骤(3)包括以下步骤:

26、(31)用户使用“生成脚本”功能,校验文件所在路径是否合法,若存在异常,则给出提示。

27、(32)读取各sheet页信息,在表头中搜索并记录“i/o”、“end”、“用例说明”关键字所在的列号,将所需的信息记录存储下来。

28、(33)对excel用例设计模板做合法性检查,包括但不限于:表格及各sheet页的命名是否正确、表头中是否有空白、关键字是否有缺失、桩函数名称是否有重复、前两个sheet页中的变量个数、类型、顺序是否存在不一致;若检查有错,会提示具体错误信息;若检查通过,则可以继续生成测试脚本。

29、进一步的,所述步骤(4)包括以下步骤:

30、(41)删除i/o和end所在的列,生成只含有效列的数组结构。

31、(42)遍历第2个sheet页中的变量属性,计算输入形参的总数,包括“一般形参”和“指针形参”。

32、(43)如果桩返回值个数与桩函数列表都为空,则认为该用例无需打桩;否则,判断为需要打桩。

33、(44)循环遍历表头信息,得到输入数组、输出数组、test_fun中的形参输入、形参输出,找出各形参的类型,存储到paramtype(参数类型)数组中。

34、(45)在输入中查找是否存在有返回值的桩函数,在桩函数列表中查找是否存在无返回值的桩函数,处理数据中的前缀和后缀,获取桩函数名称,并存储到桩函数信息的类结构中。

35、进一步的,所述步骤(5)包括以下步骤:

36、(51)参照cppunit单元测试的框架形式及各类文件的组织形式,生成预编译宏、头文件包含、初始化函数基础信息;

37、(52)根据存储的桩函数信息,在.cpp文件中生成桩函数的调度次序及定义。

38、(53)格式化生成全局变量和期望输出两个初始化函数的定义,并在setup()中生成全局变量及期望输出初始化函数的调用;

39、(54)格式本文档来自技高网...

【技术保护点】

1.一种基于CppUnit框架的单元测试脚本自动生成方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于CppUnit框架的单元测试脚本自动生成方法,其特征在于,所述步骤(1)包括以下步骤:

3.根据权利要求2所述的一种基于CppUnit框架的单元测试脚本自动生成方法,其特征在于,变量属性包括:全局变量、一般形参和指针形参。

4.根据权利要求2所述的一种基于CppUnit框架的单元测试脚本自动生成方法,其特征在于,所述输入参数包括:包括形参、全局变量、桩函数;输出参数包括:指针、全局变量、返回值。

5.根据权利要求2所述的一种基于CppUnit框架的单元测试脚本自动生成方法,其特征在于,测试方法包括:等价类、边界值、重复性、特殊路径、MCDC、循环验证、溢出验证、除零验证。

6.根据权利要求1所述的一种基于CppUnit框架的单元测试脚本自动生成方法,其特征在于,所述步骤(2)包括以下步骤:

7.根据权利要求1所述的一种基于CppUnit框架的单元测试脚本自动生成方法,其特征在于,所述步骤(3)包括以下步骤:

8.根据权利要求1所述的一种基于CppUnit框架的单元测试脚本自动生成方法,其特征在于,所述步骤(4)包括以下步骤:

9.根据权利要求1所述的一种基于CppUnit框架的单元测试脚本自动生成方法,其特征在于,所述步骤(5)包括以下步骤:

10.根据权利要求1所述的一种基于CppUnit框架的单元测试脚本自动生成方法,其特征在于,所述步骤(6)包括以下步骤:

...

【技术特征摘要】

1.一种基于cppunit框架的单元测试脚本自动生成方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于cppunit框架的单元测试脚本自动生成方法,其特征在于,所述步骤(1)包括以下步骤:

3.根据权利要求2所述的一种基于cppunit框架的单元测试脚本自动生成方法,其特征在于,变量属性包括:全局变量、一般形参和指针形参。

4.根据权利要求2所述的一种基于cppunit框架的单元测试脚本自动生成方法,其特征在于,所述输入参数包括:包括形参、全局变量、桩函数;输出参数包括:指针、全局变量、返回值。

5.根据权利要求2所述的一种基于cppunit框架的单元测试脚本自动生成方法,其特征在于,测试方法包括:等价类、边界值、重复性、特殊路径、...

【专利技术属性】
技术研发人员:张伟沈杰靳争李志鹏邢林狄名轩
申请(专利权)人:中国航发控制系统研究所
类型:发明
国别省市:

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

1