[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等;
完!


浙公网安备 33010602011771号