常见问题解答

Testbed使用过程中问题解析
1.如何处理中文?
问:在代码中出现的中文字符(包括字符串和注释),在格式化代码(Reformatted Code)中变成空格,这就导致插装的程序在运行时无法显示中文,比如一些按钮、菜单,非常不方便。
答:从c/c++ Testbed 7.07开始能够处理中文,方法如下:
编辑%Testbed%\c\cvals.dat和%Testbed%\cpp\cppvals.dat:
    修改:
    166    0      Single line comment flag SLCMTF for kanji and china chars.
    为:
    166    1      Single line comment flag SLCMTF for kanji and china chars.
    还要修改:
    182    0      Flag for chinese or kanji chars in strings
    为:
    182    1      Flag for chinese or kanji chars in strings。
2.如何尽快入门:介绍tutorial
问:Testbed如何入门?想看手册,却发现手册就有800多页,而且是英文。
答:Testbed比较庞大。学习使用它其实有很好的教材,已经随Testbed安装了。从开始菜单中打开Testbed程序组,会发现有几个Tutorial文档,这就是LDRA公司编写的入门教材。
Testbed的教材有:
    c_c++ LDRA Testbed Tutorial -- Single File
    c_c++ LDRA Testbed Tutorial -- Set
    c_c++ LDRA Testbed Tutorial -- MSVC Scribble
TBrun的教程有包含在TBrun的手册中。
这些教程手把手的带领读者分析示例,一步一步地完成测试流程,如何处理常见问题。教程中大部分篇幅中都配有操作示意图,容易理解。
只要花上几天工夫学习教程,边做边学,就能基本掌握Testbed。
    相应的中文资料为:
       
中文使用指南
fopen中文路径问题
中文使用指南
3.安装的问题:文字竖排、输入许可、软件狗驱动
问:在Windows 98/Me上安装Testbed,运行时发现窗口中的字符变成竖排。
答:这是Windows 98/Me字体的一个bug,替换为正确的字体文件即可。操作:
    替换%Windows%\System\Riched32.dll。
4.用户许可无效“Control File Configuration”
问:安装完Testbed后运行,弹出一个对话框“Control File Configuration”,不能继续运行。
答:这说明用户许可无效。需要输入正确的许可信息。许可信息在随软件而来的一张纸上,把上面的信息对照对话框输入,注意大小写和空格敏感,这样就可以使用了。
另外,输入的许可信息存放在%Testbed%\l中,可以拷贝这个文件作为备份,下次安装的时候直接把这个文件拷贝过来就可以了,不需要再输入这些许可信息了。
5.试用版不要更改日期
问:我安装了试用版Testbed,为什么不能修改系统日期?
答:安装时Testbed记录下了当时的日期,并开始计时,以保证一个月内许可有效。如果用户修改了系统日期,与Testbed计算的日期不符,误差在一天以上,它就会注销现在的许可,你必须重新申请许可。
6.嵌入式系统软件的测试(bitmap插装)
存储空间、运行时间的限制
bitmap插装
RTinsight的使用
创景移植了多种开发环境
传统的测试软件覆盖的方法是,在源代码中插装(instrument)路径记录代码,然后编译执行之,执行的过程中,插装代码把路径执行历史写入到本地文件中,然后对这个执行历史文件进行分析,得到执行的覆盖率。
对于一般运行在通用平台软件,比如Windows、Unix等,这样的方法可以满足要求。在嵌入
式系统的软件测试中,常常难以奏效。如何获得覆盖率信息成为一个难题。
因为嵌入式系统的硬件存储空间小,软件实时性要求高,遇到的问题是这样的:
第一,插装之后的代码编译后目标文件体积变大,甚至超过系统中的内存空间,无法下载执行。
第二,插装的代码在执行中要记录执行历史信息,这就影响了其他部分的执行时效,经常会影响系统功能的实现;
第三,在嵌入式系统中,往往没有文件系统,比如51单片机系统,执行历史文件无从生成。
借助Testbed的接口开放、bitmap插装等技术,我们已经在实践中解决了以上问题。
采用bitmap插装技术(可以参考《Testbed的bitmap插装技术》)减小目标文件的体积,并且把向文件中输出执行历史改为向指定内存端口(地址)输出,这样就把操作文件的大量代码变成了一条简单的写端口指令,更加减小了目标文件的大小,执行速度更快。没有了文件,那么我们如何获得执行历史呢?
RTmonitor正是这样一种硬件装置,它能够捕捉、存储真实目标机上指定端口(地址)的输出,主机可以从RTmonitor中随时取出执行历史进行动态分析,得到执行的覆盖信息。从而完美的解决了嵌入式系统的测试问题。
7.Testbed的bitmap插装技术
----------------------------------------------------------------
经过静态分析,确定了代码中的分支点,并且每个分支点都有统一的编号。插装就是在所有分支点上部署“探头”——插装代码,当执行到这个点时,探头就输出这个编号到文件中。从这个文件中,我们就可以得到执行历史信息,从而计算出代码的覆盖率。
然而,这样的方法会造成历史文件体积庞大,频繁的读写文件也会影响软件的执行效率。bitmap插装能够解决这些问题。bitmap对应于常见的位图技术,在历史文件中,用一个位代表一个分支点,0代表这个点没有执行过,1代表已经执行了,这样历史文件的最小体积就相当于分支点个数/8个字节。而且在执行过程中,是在内存中开辟一个数组记录分支点信息,程序结束时才写入文件的,这就大大提高了执行效率。