Testbed测试

Testbed

Posted by ZFKY on May 13, 2017

Testbed

Testbed测试流程

单元测试

  1. File/Select File
  2. 点击工具栏上的“+”按钮(Unit Test only)
  3. 新建序列,Sequence/New
  4. 选择要测的函数,右击选择create new test case(后面的弹窗全部点击continue)
  5. 生成测试用例后在右下角的初始值输入栏中输入初始值,前面是I的表示输入,是O的表示输出,这里我们只有为输入的变量设置初始值。(为指针变量设置初始值时,需要让其指向一个地址,如int*(0))
  6. 点击工具栏中的绿色编译按钮
  7. 在用例上右击选择View Fowgraph,可以看到整个程序的流图,期中绿色表示已经跑到的分支红色为没跑到的(这里是指之前所有用例加在一起的分支覆盖)。点击上面的一个蓝色按钮可以看到当前用例执行的分支,红色表示当前覆盖,蓝色表示当前未覆盖
  8. 建立多个用例将函数的语句覆盖率和分支覆盖率都跑成100%

集成测试

  1. 先了解你要测的是哪几个函数的集成,了解他们之间的调用关系(一般是一个主函数调用多个子函数),找到每个函数包含在哪个.c里,记录这些.c

  2. 选择工具栏中的Set,点击Select/Create Set创建新的set,然后点击Set按钮下的list/add,add之前所有记录的.c文件,然后点击工具栏中“+”字左边的按钮(Isolation Unit/Moudle Test)

  3. 新建序列,Sequence/New

  4. 选择所有要测的函数,右击选择Inclue,选择你所测的主函数右击create new test case(后面的弹窗全部点击continue)

  5. 生成测试用例后在右下角的初始值输入栏中输入初始值,前面是I的表示输入,是O的表示输出,这里我们只有为输入的变量设置初始值。(为指针变量设置初始值时,需要让其指向一个地址,如int*(0))

  6. 点击工具栏中的绿色编译按钮

  7. 在用例上右击选择View Fowgraph,可以看到整个程序的流图,期中绿色表示已经跑到的分支红色为没跑到的(这里是指之前所有用例加在一起的分支覆盖)。点击上面的一个蓝色按钮可以看到当前用例执行的分支,红色表示当前覆盖,蓝色表示当前未覆盖

Testbed测试中遇到的问题

  1. 编译过程中出现的Undefine报错》》》》在.c上面右击选择insert code/pre,在这里重新定义(在要测的项目中找到定义,直接复制过来即可)
  2. 头文件无法解析》》》》将头文件的相对路径改为绝对路径
  3. .c文件无法打开,报Unknown错误》》》》引用某个头文件导致的,挨个注释头文件直至打开(注释掉头文件编译过程中会出现未定义,解决方法见1)
  4. 有些初始变量在右下角的初始变量设置栏看不到》》》》点击初始变量设置栏左下角的一个工具图标,选择restore,在里面就可以找到
  5. 初始变量无法赋值问题,有时候会出现明明已经给初始变量赋值了,但是传不进去》》》》将源代码中的定义删除,然后在.c上面右击选择insert code/pre,在这里重新定义
  6. 指针指向的对象无法赋值,在软件的右下角的初始值赋值里面有这一项,但是给他赋初值传不进去》》》》可以在桩函数里为其赋值(找到合适的桩函数,在其之前执行)
  7. 由于源码中定义使用了extern导致的undefine问题》》》》点击工具栏上的G,自动生成变量
  8. 集成测试中黑框里报CPU地址错误》》》》把输入输出中没用的项删除
  9. 程序中没有死循环,但是测试用例运行时一直在黑框状态》》》》数组越界导致出错,比如a[x]中x的值被赋为了-1
  10. 测试用例运行之后弹出白框,覆盖率不显示》》》》数组指针赋值不正确,不能赋值为0,可以赋为NULL或者{0}
  11. 测试中遇到需要单个函数跑多次的问题》》》》模式从单元测试切换到最左边那个正方形图标的模式,然后在设置里将灰盒模式改成黑灰盒模式,再建测试用例即可
  12. 集成测试中c和c++代码混合的时候报错》》》》c和c++的代码单独建序列,c++的代码测试中如果有问题可以一个cpp一个序列
  13. ti中的.h找不到》》》》更改配置文件Tic66x

Testbed使用手册