在testbed中C代码中的"单元"指的是一个函数,单元测试就是针对每个函数进行测试。

在使用testbed进行单元测试前需要先确认当前使用的编译器是否正确,且current compiler和default compiler是否是一致的。如果当前编译器不正确,可点击configure-switch compiler选择目标编译器,接着select即可。如果current compiler和default compiler不一致,可点击configure-switch compiler-reset current set进行设置。

 由testbed进入Tbrun有三种模式:integration unit/ module test、isolation unit/ module test、unit test only,每种模式对应不同的测试类型,C代码单元测试使用unit test only模式,cpp代码单元测试使用另外两种模式皆可。

点击Tbrun-unit test only,进入单元测试环境中。

TBrun中使用测试序列(sequence)容纳测试用例和测试数据,单元测试第一步就是创建测试用例,一个函数对应一个测试序列。点击TBrun菜单sequence-new创建测试序列,sequence name中输入序列名(函数名),选中code coverage选项卡中的code coverage选择框(自动计算覆盖率),选中Test Enviroment选项卡中除Test build选择框之外的其他选择框,其他选项卡保持默认值,点击continue确认。

创建测试用例,将鼠标放到某个函数上,右键弹出菜单点击create new test case,弹出测试用例创建向导窗口,此窗口显示函数的基本信息,可忽略,点击continue即可,此时,一个用例创建完成,用例管理窗口test case view中显示已创建的用例,在variable I/O view窗口中显示函数的输入输出参数。

设定测试用例的输入输出参数值,验证函数功能,函数的输入输出不只有函数的参数,还包含函数内部使用的全局变量。

桩函数——使用一个函数原型相同的空函数代替原函数。如果被测函数中调用了其他函数,则被调用函数会被打桩,如果被调用函数的返回值影响了被测函数的分支流程,或被调用函数的动作影响了被测函数的分支流程,则需要对桩进行设置,一般设置桩的返回值。点击M图标即可打开桩的属性设置其返回值。

设置好测试用例的IO和桩后,即可执行测试用例:1、一键式运行用例,在测试用例管理窗口的空白处右键,然后点击run test case driver;2、分步式执行用例,在测试用例管理窗口的空白处右键,然后依次点击generate driver 、build driver、execute driver、(split regression driver output)、process regression driver output,每一步执行成功会有√提示。

用例执行完后查看测试结果:函数功能验证、函数覆盖率。函数功能验证通过测试用例执行后的pass/fail结果来反映。函数覆盖率可通过动态覆盖率分析报告查看,点击Tbrun菜单result-dynamic coverage analysis report,此报告包含整个文件中所有函数的语句、分支、MC/DC覆盖率信息。此外,也可以通过图形化的方式查看函数覆盖率,在用例管理窗口选中用例右键,点击view flowgraph 打开覆盖率图形化显示窗口,绿色代表已覆盖,红色代表未覆盖。

测试完成后,点击Tbrun菜单sequense-exprot test case(TCF)保存测试用例,以便进行回归测试。

创建测试用例时常用的几个重要操作

1、测试用例中增加用户全局变量

单元测试的测试用例针对的是某个函数,编译时只编译代码中的一个函数,如果此函数中使用了全局变量,且恰好此变量用extern声明,即全局变量的声明(定义)不在此文件内部,就需要用户自己在Tbrun中添加此全局变量的声明(定义)。点击Tbrun菜单Global variables-create user global弹出全局变量定义窗口,在窗口中输入name和declaration type后点击finish。

2、测试用例创建向导中对全局数组的处理

创建测试用例时,测试用例创建向导提示遇到全局数组,有三种处理方式,用户自主选择:

add all elements to the test case 把数组的所有元素都添加到用例的IO窗口中

add multiple elements to the test case 把数组的部分元素都添加到用例的IO窗口中

remove all elements from the test case 把数组的所有元素从用例的IO窗口中删除

3、测试用例创建向导中对指针的处理

输入指针:如果被测函数的参数中包含输入指针(该指针所指向内容未被改变),测试用例向导会提示用户发现输入指针,一般选择第二种处理方式set input pointer to the address of entity,随后填入要指向的实体,也可以通过find选择已有的全局变量,或者new一个全局变量来指向。

输出指针:如果被测函数的参数中包含输出指针(此指针的所指向内容被改变),测试用例向导会提示用户发现输出指针,一般选择第二种处理方式mapping把此指针映射到某个实体,点击next出现映射窗口,在此窗口中选择map to global entity,然后assign分配映射到哪个全局变量,再点击next,随后一步步next或continue完成输出指针的处理。

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: