自动化测试集成到Hudson中的方法

最近做自动化测试,组长交给我个任务,把自动化测试集成到Hudson中,每天定时运行,并将测试报告发送到指定邮箱。Hudson是安装在Linux环境上;测试脚本是用QTP+VBScript写的,并用MTM管理多个脚本。问题在于QTP只能在Windows环境下运行,需要从hudson远程控制测试主机,启动测试。

 

现在基本的解决方案是:在windows测试主机上安装cygwin,通过ssh实现hudson和测试主机的互联,在Hudson启动测试,远程登录windows测试主机,启动MTM和QTP,测试结束后,将测试结果传回hudson所在的linux主机,通过linux邮件程序将结果发送到指定邮箱。

 

首先需要安装cygwin,并启动ssh服务,我在网上找了一篇文章,说的非常详细清楚,这里就不再重复了。

http://www.ibm.com/developerworks/cn/aix/library/1006_lisali_sshlogon/index.html

 

两台主机之间的通信建立以后,就需要写启动脚本,首先在测试主机方面,需要用脚本来实现QTP和MTM的自动启动,并配置相应的加载项以及邮件、报告的设置。QTP和MTM都提供了自动化的相关接口,可参考帮助文档。这里将自己的vbs代码备份一下(test.vbs):

Option Explicit

'==================================================
'启动并配置QTP
'==================================================
Dim qtApp
Set qtApp=CreateObject("QuickTest.Application")
 qtApp.SetActiveAddins Array("Web","Active")
 qtApp.Launch
 qtApp.Visible=True

'====================================================
'启动并配置MTM
'====================================================
Dim mtmApp
Set mtmApp=CreateObject("MultiTestManager.Application")
 mtmApp.Visible=True
 mtmApp.load("D:\4A\AutoTest\autoTestingAiuap20\MTM\RunQTP\TestingRun.mtm") 
 
Dim mtmRunSettings
Set mtmRunSettings = mtmApp.Preferences.RunSettings
 mtmRunSettings.Iterations = 1
 mtmRunSettings.CloseQuickTest = True
 mtmRunSettings.CloseTestManager = True
 
'=======================================================
'发送邮件设置
'======================================================= 
Dim mtmAccountSettings
Set mtmAccountSettings = mtmApp.Preferences.MailSettings.AccountSettings
 mtmAccountSettings.YourName = "displayname"
 mtmAccountSettings.EmailAddress = "address"
 mtmAccountSettings.UseLogin = True
 mtmAccountSettings.UserName = "username"
 mtmAccountSettings.Password = "password"
 mtmAccountSettings.SMTPServer = "smtp...."
 
'=======================================================
'报告设置(这里为了传输文件方便,每个覆盖原来的同名报告。由于在报告名中加了日期,所以每天有一份报告,若一天运行多次,只保留最后一次)
'========================================================= 
Dim myDateStr
 myDateStr = year(date())&fix(month(date())/10)&(month(date())-fix(month(date())/10)*10)&fix(day(date())/10)&(day(date())-fix(day(date())/10)*10)
 
Dim mtmReportSettings
Set mtmReportSettings = mtmApp.Preferences.ReportSettings
 mtmReportSettings.CreateReport = True
 mtmReportSettings.OverWriteReport = True
 mtmReportSettings.DefaultLocation = False
 mtmReportSettings.ReportLocation = "D:"
 mtmReportSettings.ViewReport = False
 mtmReportSettings.ReportName = "TestingReport_"&myDateStr&"_"
  
mtmApp.Run

While(mtmApp.IsRunning)
 Wend
 
Set mtmRunSettings = Nothing
Set mtmAccountSettings = Nothing
set mtmReportSettings = Nothing


在hudson服务器端,需要做的是远程登录测试主机,并启动test.vbs。脚本如下:

#!/bin/sh
#/home/aiuap

 

autoTest(){
ssh -tt $1 <<EOF
cd autoTest
cmd
            #bat和vbs脚本只能在windows下运行。
call test.bat  #从cygwin启动的cmd,无法直接运行vbs脚本,所以添加bat文件

               #bat文件的内容:CScript "testUACMTM.vbs" ,间接启动test.vbs
exit     #退出cmd
exit     #退出远程连接,不写的话,后面的wait语句无法退出,一直在等待
EOF      #必须顶格写
}
autoTest admin@*.*.*.* &
    #&是放在后台运行的意思
wait

mydate=$(date +%Y%m%d)
myfile="
admin@*.*.*.*:/cygdrive/d/TestingReport_"$mydate"_1.html"
scp  $myfile  /home/aiuap/autoTestReport
    #将测试报告传回Linux主机

 

关于文件存放路径,这里有个问题需要注意,Linux系统文件名和路径名不能有空格,所有最好测试报告文件名和存放路径不要有空格。
    网上资料说有空格时,加引号或者反斜线“\”转义即可,但我试了一下,将脚本放到Linux命令行下单步执行时,这种方法没有问题,但放到shell文件里执行就会出错,不知道为什么,怀疑是linux标准输入输出的问题,因为脚本里有<<,命令行里没有。另外用命令查找最新生成的测试报告也是这样,命令行可以,脚本不行,现在是把测试报告名字固定了,每次覆盖原来的。由于文件名里加了日期,所以每天只有一个报告。

权限问题

登录hudson,执行build,发现可以连接测试主机,并启动test.vbs脚本,但运行出错,提示没有权限创建QTP和MTM的对象并启动它们,原来远程用户还需要分配应用程序权限:
 1. 开始—>运行,输入dcomcnfg,打开组件服务。
 2. 点击组件服务→计算机→我的电脑→DCOM配置,找到MultiTestManager,右键→属性→安全,将启动和激活权限,访问权限和配置权限都设置为自定义,然后编辑,添加用户everyone,赋予其所有的权限。对QuickTest ProFessional Automation同样操作。这样再执行autoTest.sh,就可以执行测试了。

 

这种方法在Windows XP上是可以的,悲剧的是,分给我的测试主机是Windows 2003 Server版的,无法设置DCOM配置,对于Server系统,QTP要求网络版的license自动化测试集成到Hudson中的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值