调测工具VcTester攻略之搭建敏捷开发环境Word格式.docx

上传人:b****5 文档编号:16136445 上传时间:2022-11-20 格式:DOCX 页数:14 大小:186.28KB
下载 相关 举报
调测工具VcTester攻略之搭建敏捷开发环境Word格式.docx_第1页
第1页 / 共14页
调测工具VcTester攻略之搭建敏捷开发环境Word格式.docx_第2页
第2页 / 共14页
调测工具VcTester攻略之搭建敏捷开发环境Word格式.docx_第3页
第3页 / 共14页
调测工具VcTester攻略之搭建敏捷开发环境Word格式.docx_第4页
第4页 / 共14页
调测工具VcTester攻略之搭建敏捷开发环境Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

调测工具VcTester攻略之搭建敏捷开发环境Word格式.docx

《调测工具VcTester攻略之搭建敏捷开发环境Word格式.docx》由会员分享,可在线阅读,更多相关《调测工具VcTester攻略之搭建敏捷开发环境Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

调测工具VcTester攻略之搭建敏捷开发环境Word格式.docx

简单来说,在VcTester中把被测程序运行起来后,用脚本可以把被测系统中变量的值修改掉,也可以用脚本将被测函数直接调起来,还可以写一个脚本函数,在线的替代被测的C/C++函数,比较神奇!

不清楚它是怎么做到这一点的。

我勉强拿CppUnit与VcTester作对比,但又觉得这两者完全不同,CppUnit用C++写测试用例,它与C++编程没太大区别,少不了编译链接,而VcTester用脚本写用例,写完后立即执行,立即看到运行效果,具有强烈的即兴操作风格。

还有MOCK对象,尽管也起到打桩的作用,但理念很不相同,用惯MOCK桩后切换到脚本桩,思维方式会闹别扭,而用惯脚本桩后,又打心底瞧不上MOCK这种怪胎式做法。

以上权当VcTester的扼要介绍,相比ezTester的官方文档,随意了点,阅读官方材料可能半天不知所云,我拿几个现成工具作比较,先给大家一个大致的概念。

关于这个工具,还得补充一句,数年来大家一直找不到VcTester最新版本,从V2.2.0开始,VcTester就封闭起来只对商业用户开放了,在网上只能找到三年前的版本(VcTesterV2.1.4),目前VcTester已发展到V5.1,从5.1起ezTester公司重新向公众开放一个可免费体验的版本(VcTesterMini),请到www.ezT下载最新版本,本系列文章就是基于这个Mini版展开介绍的(老版本太陈旧,就别用了)。

关于本系列文章

自从一年前我第一次接触VcSmith与VcSmart工具时,就被它精练实用的语言映射技术所吸引,我拿它配合VC做开发用得很顺手,很早就想写点东西,总结一些经验分享出来,因为工作忙没顾上写,直到上个月我从事的项目终于收尾了,晚上不必加班,我才倒腾出一点时间。

恰巧,这时VcTesterMini发布了,终于有免费体验的新版本了,欣喜之余我把原计划写一篇文章改成写一个系列,写作时间拉长,内容更充实些。

初步设想是在这系列文章中逐次描述本人曾经历的应用体验,有一些与本人前阶段的工作有关,我用VcSmith辅助我们的项目开发已有半年,有一些实际使用经验,另一些则是本人业余爱好,喜欢琢磨点东西,像API测试、数据驱动测试体系,ezTester没提供相关材料(或许有,但我不是他们的商业客户),是我自己琢磨出来的,如果大家第一次看到此类应用,就追认我为创始人吧。

多说一句闲话,ezTester似乎该多提供一些应用实例,单有用户手册是不够的。

上面提到VcSmith、VcSmart,可能大家一头雾水,这与VcTester有什么关系?

我先说明一下,VcSmith与VcSmart是VcTester的共享版,VcTester近半功能已在VcSmith中公开,而VcSmart则是VcSmith的精简版本。

脚本驱动在VcSmith中是完整的,但脚本桩缺失,随着VcTesterMini版本推出,脚本桩也能免费体验了。

本系列文章中有近半内容与脚本桩相关,这也是ezTester公开Mini版后,我才决定将一篇改成一个系列的原因。

本系列文章罗列如下:

《调测工具VcTester攻略之:

搭建敏捷开发环境》

使用快捷编辑功能》

快速定位问题》

敏捷开发方式下调测组织过程》

脚本驱动API测试》

使用脚本桩构造数据驱动测试》

撰写本系列文章时得到ezTester技术专家Sundy多次帮助,在此谨表感谢!

VcTester适用性

VcTester只能与VisualC/C++配套使用,被测工程既可以是C代码,也可以是C++代码。

据推测,VcTester有不少功能依赖于VC的调试数据库(PDB文件),所以离开VC编译环境,这个工具估计不会这么好用。

VcTester支持的VC6、VC7(即VisualStudio2003)、VC8(即VisualStudio2005)、VC9(即VisualStudio2008)各个版本。

据本人验证,如果您的代码越接近于C语言,VcTester用得就越爽,越玩高级C++特性,用VcTester就没那么爽了,VcTester明确不支持对C++的动态数据类型RTTI、模板Template实施映射,另外,C++的inline风格的函数、fastcall风格的函数、操作符重载函数,VcTester也不支持映射。

对未支持的C++特性的使用影响限于如下几个方面:

1、某些变量或函数不能解析,所以在提示输入或函数调用图中找不到。

此项影响甚小,VcTester对不能解析的符号只是简单忽略,编码时缺点辅助信息提示您而己。

2、对未支持映射的变量,不能用脚本读它的值,写它的值,对未支持映射的函数,不能用脚本发起调用、不能打脚本桩。

局部未支持映射的符号,不会扩大到其它地方,比如某个类方法被编译成inline函数,VcTester无法支持用脚本调用这个类方法,但该类的其它类属性或类方法仍正常支持脚本化操作。

如果被测VC工程涉及一些上面介绍的VcTester支持不到的特性,您应进一步分析相关代码是不是当前调测要关注的,如果调测时您根本用不到这些未持映射的变量或函数,那么,VcTester仍非常适用,因为您关注范围内的变量与函数都正常被映射,用脚本可以正常发起调测。

如果您的被测代码使用少量template模板、操作符重载等特性,这时,VcTester是否适用取决于:

无法用脚本操作这些不支持映射的变量与函数,对您的调测工作影响有多大。

VcTester提供的功能还算丰富,您可以浅层次简单使用这个工具,也可以深入研究,发展出一套适用自身企业的敏捷开发平台体系。

浅层次应用包括:

Ø

VcTester提供了一套不错的IDE环境,您可以将日常编码工作挪到VcTester。

用VcTester构造调试环境,拿脚本构造一些测试数据,再用脚本发起函数调用。

借助VcTester构建规范的白盒测试过程,VcTester支持测试集与测试例的工程化管理。

深层次应用包括如下几个方面(可能不全面,恕笔者研究还不够深入):

实施白盒覆盖率测试,VcTester宣称完整支持第4代白盒测试方法。

构造API测试与业务自动化测试体系,包括数据驱动测试、表格驱动测试、ActionWord驱动测试等。

构建一套以持续集成、每日构建、测试先行等为特征的敏捷开发平台。

让Scrum敏捷实践在C/C++项目落地,ezTester倡导的周演制度属此类应用。

脚本化开发,以脚本为主体实施开发,脚本最终翻译为C++代码用于产品发布,此项CSE网站称之为“扁平化开发体系”,但资料欠缺,尚不清楚其具体内涵。

总之,简单来看,VcTester提供了与SourceInsight、VisualAssist、CppUnit、CSE等工具对等的功能,是这些工具所提供功能的一个综合体。

但VcTester绝非只是叠加某些工具的功能,重要的是,它承载了一套基于敏捷实践的研发理念,这才是本人看好VcTester发展前景的根本原因。

搭建一个简单到不能再简单的调测环境

先安装VcTesterMiniV5.1版本,下载版本后,运行安装程序,接受许可协议,如下图:

之后按缺省配置,一路按“下一步”完成安装即可。

然后我们在VC中创建一个简单的被测工程,这里以VC6为例,创建一个工程名为test控制台项目,添加一个被测C++文件(root.cpp),该文件源码如下:

#include<

stdio.h>

intiForTest=5;

intMyAdd(inti,intj)

{

returni+j;

}

intmain(intargc,char*argv[])

charbuff[256];

printf("

Pleaseinput'

exit'

toquit\n>

>

"

);

scanf("

%s"

buff);

return0;

这里我们定义一个全局变量iForTest,一个函数MyAdd,后面我们将用这个变量与这个函数做演示。

入口函数main仅让控制台程序挂起,等待用户键入一个字串后退出。

之后在Debug模式下编译该工程,生成被测程序test.exe。

如下图:

之后,启动VcTester安装目录下的VcSmart.exe程序,VcSmart是VcTester的精简界面版本,在其主界面,我们先启动刚才生成的被测程序test.exe,点击“Runtargetapplication”按钮

,弹出如下对话框:

指定被测的EXE程序(如果需要,还可再指定它的启动参数与工作目录)后,点OK按钮关闭对话框即启动被测的test.exe程序。

之后,被测程序自动与VcSmart界面建立通信联接。

我们的被测代码中没额外附加代码,只要在VcSmart中启动被测程序(要求是Debug模式下生成的EXE程序),两者就能自动连接,神奇吧?

更神奇的还在后面。

在VcSmart主界面,我们键入如下脚本“vd.iForTest”,然后选中这句脚本,按Ctrl+E快捷键,选中的脚本立即被执行,从打印信息中可看到这个iForTest变量的当前值为5。

iForTest是被测系统中的一个全局变量,被测变量与被测函数都映射到脚本的vd模块下,所以要用“vd.iForTest”表达这个映射变量。

接着键入脚本“vd.iForTest=3;

”,选中这行脚本运行后再查看这个变量的值是否被改成3了。

调用从C/C++映射过来的函数也很简单,键入脚本“vd.MyAdd(3,7);

”选中运行这行脚本,其计算结果是10,说明被测函数MyAdd用脚本成功调起来了。

上面是最精简方式的脚本化调测环境搭建过程,您需要做的,只一件事:

在VcSmart中把被测程序运行起来。

至于如何编写调测脚本,VcSmart用户手册有详细介绍,您可以使用CSE脚本构造任意复杂的测试数据,调用任意被测函数来发起各种调试操作或测试操作。

是不是很神奇?

从试用VcSmart、VcSmith,到VcTester,该系列产品曾多次让我觉得神奇,就说最近试用VcTesterMini,支持脚本打桩总得在被测代码中做点文章吧?

插装改造、加个钩子什么的,偏不,被测代码一点不动,只须在V

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1