|
VcSmith、VcTester与VcAuto都建立在语言映射与在线调测技术之上,这三者属于同一技术体系,为相同类型的软件产品提供调测服务。
适用范围定义
本系列测试工具与Visual C/C++配套使用,包括VC6、VC7、VC8、VC9,不是VC开发的代码只有移植到VC平台后才能使用本系列产品。
本系列工具适用于C源码与C++源码的编辑与调测,不支持其它编程语言,C/C++代码中内嵌汇编代码不影响本系列工具使用,但不支持汇编语句调试或测试。
使用本系列工具进行调测时,要求被测对象源码可见,或者接口定义可见。已编译的可执行程序或者动态库(DLL)如果得不到源码或接口定义,则不能选用本系列测试工具。
使用本系列工具提供从编码、单元测试,到集成测试、接口测试,再到自动化测试与市场问题诊断等阶段的调测服务。
本系列工具聚焦业务
常见软件产品通常可划分几个层次:功能表现层、业务逻辑实现层、中间件与基础库支持层,如下图:

功能表现层提供用户操作界面,通常用Java、Delphi、VB、C#等开发,要求快速响应市场需求,既要快速实现,也能快速变更、方便维护。业务逻辑实现层往往采用面向对象语言或过程语言,典型的用C/C++开发,中间件或基础库通常由公共软件部门(或项目组)开发,在多个产品重用,这一层还经常采用商用库代码。
本系列工具为下两层软件(即“业务逻辑实现层”与“中间件/基础库支持层”)的编码、调试,单元测试、集成测试、协议测试、接口自动化测试、市场诊断等,提供全方位解决方案。
本系列工具与研发阶段
本系列工具的技术基础是C/C++语言映射到CSE脚本语言,或者说拿CSE语言仿真C/C++的行为。

在被测系统中驻留CSE脚本系统,将被测C/C++代码中的类型、变量、函数、类方法等映射为脚本系统中的实体,然后以脚本形式任意操作C/C++系统变量与函数。从编写第一行代码开始,调测体系就具备对等仿真能力,被测对象有两付面孔,其一是C/C++代码表现的产品功能,其二是调测脚本模拟出来的产品功能。
VcTester语言映射能力较为完整,所以仿真系统不仅具备强大的调测能力,还方便的支撑调测功能重用与调测能力延伸。在编码、单元测试、集成测试阶段主要使用VcSmith与VcTester工具,集成测试之后主要使用VcAuto工具。

非直接适用的场景
对于某些不是VC的C/C++工程,可以先移植到VC环境,保证VC下成功编译后再使用本系列工具。这时用户通常要为被测系统添加一个隔离层,让被测代码具有跨平台功能,在专有环境与VC-Win32环境都能运行。
本系列工具还适应函数定义不完整的被测工程,使用“/force”编译指令强制生成被测程序,移植代码经常采用这种方法,许多测试并不涉及的底层函数,可以不必移植。

对于某些逻辑分层并不严格的系统,稍微调整一下软件结构,就更适合于从单元测试、集成测试,再到接口测试与自动化测试通盘解决。比如界面操作与业务逻辑处理捆绑过于紧密,相关交叉过多肯定不处于自动化测试实现,不妨在这两层之间插入一个抽象的隔离层。
有一些系统天然近似于Windows下VC程序开发,比如:起源于DOS的ucOS实时系统,它的多数组件可以直接挪到VC下编译,再如Embedded Visual C++,同是Microsoft出品,语言规则与界面风格与VC近似,EVC还提供一个供Windows下运行调试的模拟器。对于这些系统,对原有代码稍加改造,或者新开发底层代码时注意保持跨平台特性,还是很容易让VcSmith、VcTester、VcAuto工具用起来的,额外调整的工作量并不大。
另外,在某些跨平台开发环境下,不修改现成代码也能使用本系列工具,比如:
- 某些开源跨平台编译器,支持在VC下建立工程,比如SDCC(Small Device C Compiler)
- GCC的Win32适配平台,常见的有:MingW32(Minimalist Gnu-Win32)、Dev-C++、Code::Block等
- 某些可集成到VC中的跨平台软件库、仿真库,如VC6环境下的symbian编程、Matlab图形处理等。
|