1.序列名不规范
为了工程化的管理测试用例,单元测试时,建议为每个被测函数(uut)创建一个序列,而序列名使用函数名,以便后期维护管理。

2.未确认代码是否编译通过,就开始测试
应当在确定代码编译成功后,再开始用testbed进行静态分析和单元测试
而且如果时间允许,清确保完成了编码规则检查后,再进行静态分析。

3.当被测文件较大时,可将文件只抠出变量定义、函数申明以及被测函数的实现。以加快测试执行进度。
抠代码时,只保留最开始的函数定义和需要的函数,为了提高效率,可以一次扣多个函数的代码
抠代码前清做好源代码的备份工作。
由于抠的代码少了一些函数,创建用例时可能会找不到一些函数,在callview中可以看到一些未知函数,这时我们可以打桩。您可以可以根据实际需要为桩函数设置返回值等。

4.testbed有三种模式,单元测试通常使用Unit test only模式。
testbed的.三种测试模式
Unit test only 纯单元测试
Integraton test 集成测试(所有的函数都集成起来)
Isolate test 集成测试(适合增量测试,只有选定的函数集成,未选中的将被打桩)
当然使用integeration test模式也是可以的,里面的那些函数会使用实现,而不是桩,从某种意义上说,它的值也可以看成是桩。

5.testbed单元测试用例采用分步骤执行以发现问题出现的阶段
在测试用例视图上,选中一个用例,依次点击以下右键菜单,即可实现分步骤执行测试用例。
Gnerator driver、
build driver
execute driver
split regression driver output
process regression driver output

6 测试用例不能导出到中文目录,否则提示 文件没有写权限
导出到中文路径时,提示没有权限,其实是因为中文路径,我曾今在坑里呆过。:)

7 .编译测试用例时,提示undefined symbol 未定义标识**
在文件树上删除该变量,重新编译

8.编译测试用例,提示申明与调用不兼容(imcompitable)
例如,提示与memset 不兼容。
解决方法:将memset打系统桩,并设置参数和返回值的数据类型。

9 testbed测试嵌入式程序时,由于在模拟器上没有指定地址,导致执行到这些地址时,指针跑飞,
解决办法1: 使用修改代码,定义变量
例如, ( int) 0x80000001=9;
由于地址0x80000001未定义
程序改为: int p;
P=9;

解决方法2:在测试用例的预定义代码(通过测试用例的右键菜单打开)中定义宏,让一个变量来替换地址
例如 #define 0x80000001 p;
定义全局变量p,
这样要控制地址中存放的数据,直接设置用户全局变量p的值即可,

10 函数中使用到的指针,要确保值有效。
例如,使用p->name,那么p所指向的结构体struct student需要时存在的,否则程序会跑飞。
修改的方法是,定义一个用户全局变量aaa ,类型为struct student,设置p的值为 & aaa。

11.TESTBED测试程序处理过程
程序编译的大概过程,先生成桩文件(instrument file),然后编译生成测试驱动文件.
桩文件同源文件一个目录,名称为ixxx.CPP
驱动文件在workfls文件夹下,名称为 S_…CPP

12. testbed中用例的输入参数是有顺序的。不合适的顺序可能导致结果不正确或者程序异常。
例如 pstudent参数应当在 pstudeng->name之前赋值。否则可能由于pstudent尚未设置有效值,就去取成员变量,而异常。

13. testbed中用例的界面输入参数是在initial code后执行的。若同时在用例的输入界面和initial code中定义输入参数值,清一定注意顺序。
例如 您在initial code 中 设置全局变量 pNode->next = NULL,而用例输入界面上设置 .pNode = &g_my_code,由于initial code 先执行,程序会异常。

13. 桩函数可以设置多个值,值用逗号分隔,各次调用取一个值。
例如,值设置为1,2,3 ,那么桩函数第一调用时使用1,第二次使用2,第三次使用3

14. 程序跑飞的调试
先看序列文件夹下是否生成exh文件(执行历史文件),如果没有,说明用例参数有问题,删除不必要的参数,检查参数顺序是否正确。
如果有exh文件,查看代码的执行情况,了解到执行了那些块,最后出错时执行的代码是哪个快。可大致分析问题出现的范围后,通过注释桩文件中的代码,逐步缩小范围。
具体方法:找到.exh最后一行编号值,在源程序同目录下找到对应的桩文件inszz_xxx.c 文件,查找该编号值,该编号到下个编号之间的代码就是程序跑飞的范围、

15. 测试用例有问题时,可设置为suspend,先处理其他测试用例。

17. 测试用例可以复制粘贴多份,修改参数后,通过resequence来执行指定参数及其后的测试用例。

18. 桩程序和驱动程序
桩程序和源文件在同一个目录,主要用于进行覆盖率的统计。名称通常为ixxx.c或 ixxx.cpp
驱动程序在序列文件夹(xxxseqwrkfls)测试用例执行就是在执行该程序
先生成桩程序,创建测试用例时,生成驱动程序。

19.testbed 静态分析闪退
该问题有可能是由于源代码中存在大段的注释引起。

20.测试用例build时,提示变量confilct
根据错误提示查看,通常是由于两处定义不同,例如,一处为数组,一处不是,
解决方法1:最方便的是在用户定义全局变量中将那个冲突的全局变量删除掉。这样就只剩余一处,就不冲突了。
解决方法2:也可以修改用户全局变量,使其不冲突。

21 误删除了用户全局变量怎么办?

误删除了用户全局变量,点击工具条上的 按钮,系统自动会将误删除的变量补充回来,

22 tonado模拟器异常后,再执行用例结果会有问题。
使用 vxworks 的tonado环境进行嵌入式程序测试时,清注意观察模拟器的状态。例如是否已经有异常等,有问题了及时重启。

23 注意位域对值得影响
有时测试时,明明给全局变量给定了值,结果并没有进入预期的分支。
这时可能有以下几种情况:
a。该变量的值进入用例后,到达分支之前,值被改变了(被赋值,或者其间的其他函数中改变了它的值);
b。是否全局变量为一个位域,如下结构体,成员b的取值只能为0,1,2,3,
当您为其赋值4(对应的二进制位 100)的时候,其真正保存的值为0.
当您为其赋值6(对应的二进制位 110)的时候,其真正保存的值为2.
struct student
{
int a:8;
int b:2;
int c:6;
};

24 用例执行出错,原因可能是:
a 某个全局变量可能被误删除掉了 ,
这个在日志视图可以看到相应的错误。点击工具条上G,恢复全局变量。
b 用例参数值设置的顺序不对,导致程序跑飞。
例如,pstudent为结构体类型的指针,如果用例中先设置 pstudent->name=“aaa”,再设置pstudent=&student1, 由于设置顺序的问题,程序会跑飞。
解决办法:调整输入顺序。
c 被测函数中使用到的指针未被初始化,导致执行异常。
例如,被测代码中 pstudent->sex=1;
由于pstudent为初始化,程序跑飞。
解决办法,定义一个类型为student的用户全局变量student1,在测试用例中将pstudent 设置为&student1,这样指针指到一个有效地址,程序就不跑飞了,

25.测试用例丢失了怎么办
用例丢了怎么办?还好testbed有很好的备份机制,可以到备份文件夹中寻找。
如下图所示,备份文件夹在 LDRA_workarea下的tbwrkfls下,文件夹以tbtcffiles结尾。

26 testbe的编译器环境配置?

1.安装tbconfig;
2.启动tbconfig,点击菜单导出序列号,发送给厂商,然后将厂商反馈的ctl文件导入,方可打开;

3.点击菜单 developer tools,在子菜单中选择需要的编译器后,在弹出窗口中设置testved的安装目录,编译器的安装路径等,点击ok,即可完成环境配置。
环境配置完成,在testbed的对应的编译器目录下会生成相应的配置文件。

28 如何为未识别的函数打桩。

首先在call view视图中,选中该函数,点击右键菜单create Mnanaged Stud ,设置其为桩函数。
然后在call view中,选中该函数,依次点击菜单 Managed Stud Properties->parameters、Return type 设置输入参数,和函数返回类型。

27 如何设置桩函数的指针型参数保存的值

桩函数最常用的是设置桩函数返回值,但有时我们希望退出桩函数时设置这些指针参数所指地址保存的值,该怎么办呢
1.首先在桩函数管理窗口中,选择该桩函数,点击右键菜单 Set Parameter on Exit,

在弹出窗口上点击impirt,选择参数名前带有*的加入,

加入后,设置要给定的值后,点击ok按钮即可。

28 编译时提示参数不匹配。
这可能是由于某个桩函数由于函数原型没有找到原型,它的形式参数和返回值少了,我们只要在右侧的call view的列表中找到该函数,点击右键菜单 Managed stub properties ->return type \ parameters 可设置返回值和函数参数值。正确设置参数值后,编译错误。
如果还有问题,吧system stub 勾选上,试一下,有时这个也需要悬选上。
29 ccs编译器环境配置注意事项。
tbconfig中正确选择ccs硬件系列(如c6x),testbed的路径,ccs的路径后点击ok。
这样生成的文件还是需要根据具体硬件型号、以及项目依赖的库修改对应compile.bat、build.bat、xxxmenu.cmd
cmd文件修改依赖的lib文件(参照项目工程的lib即可)
两个bat文件修改编译参数,如-mv6700,具体的编译参数在ccs中编译一下即可看到,

testbed常见问题及处理(1)相关推荐

  1. 如何使用vs来运行box2d中Testbed的案例

    0 环境 vs: vs2012 box2d: Box2D_v2.1.2 1 得到box2d编译版本 可以参考: https://blog.csdn.net/sty945/article/details ...

  2. llvm常见问题 (FAQ)

    llvm常见问题 (FAQ) License 可以修改 LLVM 源代码并重新分发修改后的源代码吗? 可以修改 LLVM 源代码并重新分发基于二进制文件或其它工具,而无需重新分发源代码吗? 源代码 L ...

  3. 深度学习常见问题解析

    深度学习常见问题解析 计算机视觉与自动驾驶 今天 一.为什么深层神经网络难以训练? 1.梯度消失.梯度消失是指通过隐藏层从后向前看,梯度会变得越来越小,说明前面层的学习会显著慢于后面层的学习,所以学习 ...

  4. oracle数据库性能awr,常见问题:如何使用AWR报告来诊断数据库性能问题

    常见问题:如何使用AWR报告来诊断数据库性能问题 (Doc ID 1523048.1) Last updated on FEBRUARY 03, 2019 适用于: Oracle Database - ...

  5. JAVA 多用户商城系统b2b2c-Spring Cloud常见问题与总结(一)

    在使用Spring Cloud的过程中,难免会遇到一些问题.所以对Spring Cloud的常用问题做一些总结.需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台 ...

  6. 视频直播常见问题与解决办法汇总【系列二—直播截图】

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 使用场景 用户常需要对视频直播的内容进行分析.例如,需要对直播中的某一帧的内容作为封面图片或者对于直播内容进行鉴黄以查 ...

  7. 小编说之“常见问题答疑”

    2019独角兽企业重金招聘Python工程师标准>>> 关于前嗅Forespider爬虫的常见问题答疑 奋战在一线为客户答疑的狗蛋儿给小编提供了很多客户经常会问到的问题的素材,小编帮 ...

  8. pda找不到服务器,PDA连不上服务器常见问题分析.doc

    PDA连不上服务器常见问题分析.doc PDA连不上服务器常见问题分析 请查看PDA的网络通不通,可以先检查WIFI/3G是否连接上网络,如果连接不上,点击PingToots工具,用"pin ...

  9. 初学者css常见问题_5分钟内学习CSS Grid-初学者教程

    初学者css常见问题 Grid layouts are fundamental to the design of websites, and the CSS Grid module is the mo ...

  10. OpenStack环境搭建(六:常见问题及解决方案总结)

    实验要求: 完成Virtual box平台安装,会应用相关操作: 在virtual box虚拟平台上部署Fuel Master节点: 在virtual box虚拟平台上部署计算节点Computer: ...

最新文章

  1. python r语言 作图_R语言低级绘图函数-rect
  2. C++学习手记五:C++流操作
  3. 关于Python里的super用法研究
  4. sql三表查询_SQL第五关:多表查询
  5. 大数据:技术与应用实践指南_大数据技术与应用社团 社会实践总结篇
  6. linux之创建大文件
  7. 4种软件架构,看看你属于哪个层次!
  8. delphi 10.3.1 android沉浸式透明状态栏
  9. 通达信完全加密指标破解 通达信完全加密公式源码提取 tni tne tn6还原源文件
  10. js vue echarts 前端绘制 cie1931 马蹄图 色度图
  11. Latex文档中 插入符号和编号
  12. 支付宝怎么看银行卡号?支付宝查询银行卡号仅需3步
  13. 【python数模小作业】动手‘预习‘高数之 人口预测(线性拟合)
  14. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)
  15. 雷曼另类“死因”:巴菲特漏看求救短信
  16. [文摘20080131]89个管理定律及点评
  17. 解决vagrant up启动失败,停留在Booting VM...过程的方法
  18. uoj #311.【UNR #2】积劳成疾 dp
  19. 上海交通大学考博:过来人的考博考经验【zz】
  20. Visual Studio 2019 和 qt 5.15.1 下 opengl 的运用 - Lighting - 03 - Materials

热门文章

  1. 基于Multisim的循环彩灯控制器仿真设计
  2. 计算机内存128毫升,内存128.1M的微信怎么可能只能聊天!
  3. 百度AI图像处理—图像主体识别调用教程(基于Python3-附Demo)
  4. DSP学习(3)—— DSP调试与追踪
  5. linux+ipv6免流量下载,如何限定apt-get使用IPv4或IPv6协议下载
  6. java 服务器程序部署环境搭建
  7. PSV微豆瓣FM v0.1.0
  8. 学习《华为基本法》(大结局):法的修订与接班人
  9. idea创建j2ee_java实战项目教程分享(纯干货,建议收藏)
  10. C#-Windows计算器