一种C代码软件的测试方法与可读存储介质技术

技术编号:29983691 阅读:23 留言:0更新日期:2021-09-08 10:21
本发明专利技术提供了一种C代码软件的测试方法,包括以下步骤:S1、编制应用程序,使用户通过操作界面完成测试;S2、将采用C代码的C文件导入到该应用程序;S3、通过该应用程序将导入的C文件进行解析,得到要测试的函数,实现测试对象的自动识别;S4、该应用程序自动识别测试函数所调用的子函数,以及测试函数内部所有的判定条件,并辅助测试用例的编制;S5、该应用程序将编制完的测试用例自动导入,转化为测试代码,自动运行测试,得出测试结果。本发明专利技术还提供了一种可读存储介质。本发明专利技术的有益效果是:实现了C代码的自动解析;实现了初版测试用例的自动生成,降低了因为覆盖率修改测试用例的频次。次。次。

【技术实现步骤摘要】
一种C代码软件的测试方法与可读存储介质


[0001]本专利技术涉及测试方法,尤其涉及一种C代码软件的测试方法与可读存储介质。

技术介绍

[0002]现有的C代码测试工具如google test和unittest,需要用户自己理解和解析C代码,编写测试用例,然后编写测试代码将测试用例的测试对象、测试输入以及期望结果转化并加载到google test 或unittest框架中,再进行编译运行。
[0003]目前的C代码测试存在以下问题:1)C代码被测试函数逻辑复杂,调用子函数偏多,现有技术需要用户解析代码,耗费时间长,且容易产生被调用子函数识别遗漏未进行插桩处理,从而导致编译运行不通过,反复修改测试代码。
[0004]2)C代码测试有路径覆盖率的要求,需要编译运行完才能得到测试用例覆盖率,造成测试用例的反复修改和运行测试,以满足覆盖率的要求。

技术实现思路

[0005]为了解决现有技术中的问题,本专利技术提供了一种C代码软件的测试方法与可读存储介质。
[0006]本专利技术提供了一种C代码软件的测试方法,包括以下步骤:S1、编制应用程序,使用户通过操作界面完成测试;S2、将采用C代码的C文件导入到该应用程序;S3、通过该应用程序将导入的C文件进行解析,得到要测试的函数,实现测试对象的自动识别;S4、该应用程序自动识别测试函数所调用的子函数,以及测试函数内部所有的判定条件,并辅助测试用例的编制;S5、该应用程序将编制完的测试用例自动导入,转化为测试代码,自动运行测试,得出测试结果。<br/>[0007]作为本专利技术的进一步改进,所述测试方法还包括步骤S6、该应用程序自动将测试结果导出,并生成测试结果报告和覆盖率报告。
[0008]作为本专利技术的进一步改进,在步骤S3中,通过代码解析工具读取C文件和头文件,调用gcc编译器进行预编译并存储在字符串中,通过词法解析器和语法分析器,将字符串进行处理,生成标记节点并以节点构建抽象语法树,通过遍历语法树节点,识别函数名和变量名,然后生成函数调用图和流程图,并提取函数内部形参、函数使用的全局变量。
[0009]作为本专利技术的进一步改进,在步骤S4中,根据代码解析工具生成的函数调用关系、判定条件以及函数使用变量,测试用例生成脚本生成excel版本的测试用例。
[0010]作为本专利技术的进一步改进,生成的测试用例包含了变量声明、桩函数、被测函数、函数调用、测试输入、期望输出以及测试结果。
[0011]本专利技术还提供了一种可读存储介质,所述可读存储介质中存储有执行指令,所述执行指令被处理器执行时用于实现如上述中任一项所述的测试方法。
[0012]本专利技术的有益效果是:实现了C代码的自动解析;实现了初版测试用例的自动生成,降低了因为覆盖率修改测试用例的频次。
附图说明
[0013]图1是本专利技术一种C代码软件的测试方法的流程图。
[0014]图2是本专利技术一种C代码软件的测试方法的函数调用图。
具体实施方式
[0015]下面结合附图说明及具体实施方式对本专利技术作进一步说明。
[0016]如图1至图2所示,一种C代码软件的测试方法,包括以下过程:1)编制应用程序,使用户通过操作界面完成测试。
[0017]2)应用程序将导入的C文件进行解析,得到要测试的函数,实现测试对象的自动识别。
[0018]3)应用程序自动识别测试函数所调用的子函数,以及测试函数内部所有判定条件,辅助测试用例的编制。
[0019]4)应用程序将编制完的测试用例自动导入,转化为测试代码,自动运行测试得出测试结果。
[0020]5)应用程序自动将测试结果导出并生成测试结果报告和覆盖率报告。
[0021]通过编写应用程序,实现从C代码导入到测试报告生成的全自动化,如图1所示。
[0022]为了实现C代码解析功能,开发了代码解析工具。解析工具读取C文件和头文件,调用gcc编译器进行预编译并存储在字符串中。通过词法解析器和语法分析器,将字符串进行处理,生成标记节点并以节点构建抽象语法树。通过遍历语法树节点,识别函数名和变量名,然后生成函数调用图、流程图,如图2所示,并提取函数内部形参、函数使用的全局变量。
[0023]为了实现测试用例自动生成,开发了测试用例生成脚本。根据解析工具生成的函数调用关系、判定条件以及函数使用变量,测试用例生成脚本生成excel版本的初版测试用例。通过判定条件的识别,可提升生成测试用例的路径覆盖率。生成的测试用例包含了变量声明、桩函数、被测函数、函数调用、测试输入、期望输出以及测试结果。用户可根据需要补充测试输入和修改桩函数代码,并重新导入修改后的测试用例。
[0024]为了实现测试代码自动生成和编译运行,开发了测试代码生成和编译工具。此工具处理excel版本测试用例,并生成测试代码。此测试代码通过调用google test的函数接口,与google test共同构成了可编译运行的工程。此工具可将整个工程进行编译生成exe可执行文件,并自动运行生成测试结果,最后以xml格式进行保存。
[0025]为了实现测试覆盖率功能和生成测试报告,开发了脚本。此脚本可调用gcov生成xml格式的测试覆盖率结果,测试覆盖率包括语句覆盖和分支覆盖。此脚本可将xml格式的测试执行结果和覆盖率结果转化为html格式的测试报告。
[0026]为了实现测试覆盖率功能和生成测试报告,开发了脚本。此脚本可调用gcov生成xml格式的测试覆盖率结果,测试覆盖率包括语句覆盖和分支覆盖。此脚本可将xml格式的
测试执行结果和覆盖率结果转化为html格式的测试报告。
[0027]为了压缩测试工具的运行时间,对测试代码编译部分进行了优化。将其中的google test框架部分编译成lib文件,极大压缩了测试工具的运行时间。
[0028]为了实现自动化回归测试,在测试工具预留了接口。可通过批处理脚本在后台进行自动化大量测试用例的逐步导入和运行。结合windows的定时任务功能,可实现自动化回归测试。
[0029]本专利技术提供的一种C代码软件的测试方法,有以下特点:1.通过C代码解析脚本,实现了C文件的自动解析,得出测试函数,调用子函数以及所有判定条件。
[0030]2.通过自动脚本,实现了测试用例的导入,并将其转化为测试代码,进行自动运行,自动生成测试报告和覆盖率报告。对显示屏的显示区进行严格划分,仪表主机无需分析和处理网联的具体显示内容,只需将网联显示区空出来,然后叠加网联显示内容。
[0031]与现有技术相比,本专利技术提供的一种C代码软件的测试方法,具有以下进步:一、降低了用户编写测试用例的难度,降低了因为测试用例问题,测试反复编译运行的频次,实现自动生成测试用例模板,用户仅需修改测试数据和桩函数即可。
[0032]二、用户无需编写测试代码,点击操作按钮,自动得到测试结果报告和覆盖率报告,大大节省了测试时间。
[0033]三、可自动进行回归测试本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种C代码软件的测试方法,其特征在于,包括以下步骤:S1、编制应用程序,使用户通过操作界面完成测试;S2、将采用C代码的C文件导入到该应用程序;S3、通过该应用程序将导入的C文件进行解析,得到要测试的函数,实现测试对象的自动识别;S4、该应用程序自动识别测试函数所调用的子函数,以及测试函数内部所有的判定条件,并辅助测试用例的编制;S5、该应用程序将编制完的测试用例自动导入,转化为测试代码,自动运行测试,得出测试结果。2.根据权利要求1所述的C代码软件的测试方法,其特征在于:所述测试方法还包括步骤S6、该应用程序自动将测试结果导出,并生成测试结果报告和覆盖率报告。3.根据权利要求1所述的C代码软件的测试方法,其特征在于:在步骤S3中,通过代码解析工具读取C文件和头文件,调用gcc编译器进...

【专利技术属性】
技术研发人员:王双贵王伟梁玮侯进陈伟
申请(专利权)人:上汽通用五菱汽车股份有限公司
类型:发明
国别省市:

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

1