[BuildRelease]Smoke Test Automation With VM

 

一 Smoke Test Automation

Smoke Test,也称为Regression Test,通常包含软件的安装和基本功能的测试,用来保证最新的code集成且没有regression。

一般地我们使用脚本来实现Smoke Test的自动化,用虚拟机VM的snapshot机制来保证clean的环境来进行Smoke Test,然后集成到Continous build或daily build中。

 

二 Smoke Test 实现

1)脚本组织

SmokeTest
├─InPut
├─Result
├─RunInGuest
└─RunInHost

其中:

Input用来存储此次Smoke test 所需要的build相关的输入信息;

Result用来存储从VM中返回的Smoketest的运行结果;

RunInGuest下的脚本将被拷贝到VM中,用来真正执行SmokeTest;

RunInHost下的脚本是用户触发SmokeTest的接口,其中包含了启动VM,检测SmokeTest的结果,停止VM,解析最后的SmokeTest的结果等;

 

2)流程图

 

 

 

3)过程解释

[* 表示运行与Host机器;#表示运行与Guest机器;]

[可以通过VM的startupitem,或host调用runinprograminguest,或者rpc调用部署与VM的httpserver来触发smoketest在VM中的准备开始]

[smoketest的脚本可以存储在host机器上的runinguest目录下,由vm启动后copy到vm中,或者也可以存储于scm中,在vm中sync]

* 创建VM,包含安装所需要的软件,登录的用户密码和创建snapshot等,需要设置VM自动登录某个用户;

* 将通用的VM信息设置为变量,供后面使用,例如VM的位置,用户名,密码等;

* 定义此次要测试的build相关的信息为变量;

* 将build相关的变量信息写到RunInGuest下的文本中,供VM中的SmokeTest script使用;

* 启动VM来开始SmokeTest;

* 循环来检测SmokeTest的结果;

# 通过VM的startupitem或使用runprogrameinguest来触发VM从Host中RunInGuest拷贝需要的脚本和此次build相关的输入信息(包含在txt文件中);

# 当startupitem或runprograminguest完成copy后,然后开始脚本的执行;

# VM中的脚本解析build相关的变量;

# VM中NetUse build的安装文件的存储位置和lisence server为虚拟盘;

# 从SCM来sync SmokeTest script;

# Run SmokeTest,包含安装和基本的cases运行;

# copy Smoke Test的结果到host machine;

* 当检测到SmokeTest的结构时,停止VM;

* 解析SmokeTest的结果且推出SmokeTest脚本运行;

 

三 Smoke Test With VM架构

1)如果VM使用的是VMWare的workstation或server,可以使用VMRUN接口控制VM的自动启动和停止;

2)使用Python实现整个过程,包括调用VMRUN来启动和停止VM;

3)设计灵活的接口,可以很容易的切换到其他的VM软件,例如VirtualBox,Xen等;

 

完!

 

posted @ 2010-04-25 11:02  iTech  阅读(397)  评论(0)    收藏  举报