UML软件工程组织

 

 

第4代白盒测试方法实践之“如何在VcTester集成自动构建功能”
 
作者:wayne_chan 来源:CSDN
 

VcTester是一款针对Visual C/C++工程中C代码的白盒测试工具,它不仅提供在线测试(包括在线脚本驱动、在线脚本桩、在线测试改进),还提供功能强大的集成开发环境(IDEIntegrated Development Environment),集辑辑、调试、测试与一体,该IDE还支持将各式各样的外部命令嵌进来,籍此集成第三方调测辅助工具。其中,VCbuildrebuildclean等构建命令是VcTester日常编程中经常用到的,把这些命令集成到VcTesterIDE环境,对提高工作效率大有帮助。

本文描述如何在VcTester中集成VC的构建功能,以及,如何编写批处理文件实现被测工程的自动构建与自动启动测试,这一步是借助VcTester打造每日构建平台所必须的。本文描述的集成过程同时适用于VcTester的共享版与商用版。

自动构建集成的原理

Visual Studio软件,无论VC6VC7还是VC8,都提供了命令行集成功能,在VC6中,调用msdev程序,使用命令行参数指定待编译的工程名及工程配置名,即可实现buildrebuildclean操作。同样类似的,在VC7VC8中,调用devenv程序也能实现命令行集成功能。

比如,在VC6中实现build编译操作可运行如下命令:

msdev c:\VcTester21\sample\demo\demo.dsp /MAKE "demo - Win32 Debug"

VC6中实现rebuild重新编译操作运行命令:

msdev c:\VcTester21\sample\demo\demo.dsp /MAKE "demo - Win32 Debug" /REBUILD

VC6中实现clean清除操作运行命令:

msdev c:\VcTester21\sample\demo\demo.dsp /MAKE "demo - Win32 Debug" /CLEAN

VC7VC8中用命令行实现这3类操作是类似的,主要差别是传给msdevdevenv的参数格式不尽相同。另外,需要注意的是:在调用msdevdevenv之前,都应调用vcvars32.bat,这个批处理文件在VC各版本的bin目录下,它主要用来设置编译所需的环境变量及路径配置。

为方便集成,我们把相关DOS命令集中在一个批处理文件中,传入不同参数来区别buildrebuildclean操作。比如在VC6中,我们编写批处理文件VcBuild6.bat,定义它的调用格式为:

call VcBuild6.bat "dsp FileName" "ProjectName – ConfigName" [/build | /rebuild | /clean]

批处理中的封装比较简单,在VcBuild6.bat中实际起作用的就如下两条语句:

call vcvars32.bat
msdev %1 /MAKE %2 %3

针对VC7VC8,我们也按同样方法炮制,编写批处理文件VcBuild7.batVcBuild8.bat,这3个批处理文件可在VcTester安装目录找到,大家不妨打开看看。

集成步骤

VcTester工具提供了两种集成方式,其一是按上述原理手工集成,其二是由辅助工具SetupVcBuild.exe按上述原理自动生成一个批处理文件,并将相关命令安装到IDE环境(即修改CseWin.exe的配置文件)。

手工集成过程包括两步:第一步修改批处理文件中的“call vcvars32.bat”,比如将VcBuild6.bat中该语句改成:

call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\vcvasr32.bat"

如此改动的目的是让该DOS命令能找到vcvars32.bat文件。第二步是将buildrebuildclean命令集成到IDE环境。比如集成如下3VC6构建命令:

cmd.exe /c call "c:\VcTester21\VcBuild6.bat" "c:\VcTester21\sample\demo\
demo.dsp" "demo - Win32 Debug" /build

cmd.exe /c call "c:\VcTester21\VcBuild6.bat" "c:\VcTester21\sample\demo\
demo.dsp" "demo - Win32 Debug" /rebuild

cmd.exe /c call "c:\VcTester21\VcBuild6.bat" "c:\VcTester21\sample\demo\
demo.dsp" "demo - Win32 Debug" /clean

这里我们以VcTester V2.1版本中集成c:\VcTester21\sample\demo\demo.dsp工程为例,针对不同VcTesterVC版本及不同的被测工程,大家可以类推。

如果由辅助工具SetupVcBuild.exe进行集成,操作过程就非常简单了,不必手工指定vcvars32.bat所在路径,辅助工具自动帮你找出来,在IDE界面的添加外部工具的过程也省了,辅助工具会自动配置。运行SetupVcBuild.exe后显示的配置界面如下:

图:构建生成工具

以上步骤更详细的过程请参考《VcTester商用版使用手册》中“环境配置与构建集成”一节。补充一点,由于build是经常使用的操作,建议在IDEoption对话框中UserTool页,为该命令指定一个快捷热键,比如Ctrl+F9,有热键后操作效率可提高不少。

编写自动build及自动启动测试的批处理文件

理解上述集成原理后,我们可以编写支持每日构建的批处理文件了,一个“每日构建”实施过程大致如下:

1.从版本机VSS中获取最新代码

2.编译包含最新代码的VC工程,生成可执行文件

3.启动新生成的被测程序,启动测试。

由于VSS提供命令行操作接口(调用ss.exe),从版本机获取最新代码的操作可以定义到批处理文件中,另外,支持自动测试的VC工程,应该用宏开关控制被测程序是否一经启动就自动实施测试,请部分内容请参考《VcTester共享版使用手册》中“配置VcTester代理”一节,要将ctAddSearchDirctSetRootTestCase两项配置设正确。

比如我们编写这样的批处理文件是DailyTest.bat,内容如下:

rem First step: check out source code
...

rem Second step: rebuild project
call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\vcvasr32.bat"
msdev c:\VcTester21\sample\demo\demo.dsp /MAKE "demo - Win32 Debug" /REBUILD

rem Third step: Start program and log print message
c:\VcTester21\sample\demo\debug\demo.exe

这个例子中我们还没给出从VSS取源码的命令,完整过程请大家参考《使用VcTester构造持续集成及每日构建平台》一文。

定义这个批处理文件后,按如下命令启动,即开始“每日构建”测试,相应的打印信息被定向到一个log文件:

call DailyTest.bat > log.txt

把这个命令添加到Windows平台的“任务计划”,可指定在每个工作日的固定时间(比如晚上10点)自动启动测试。

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号