软件测试思考系列[2]:提交测试-2

上一篇 / 下一篇  2012-04-23 10:49:20 / 个人分类:杂谈

持续集成要求的构建是开发每次提交代码,都会触发构建,而不是一些软件公司常用的定时触发(比如每隔一个小时),如果构建失败会发送邮件给导致构建失败的相关人员,要求其立即修复;如果构建成功,则将构建结果发布到Alpha场所,供后续的测试、试用、验收工作使用。修复失败的构建是所有任务中优先级最高的。 对于如何做到每次提交代码触发构建,Hudson提供了一个很好的API:Hudson Remote Access API。我们可以利用这个API和SVN的post-commit hook结合,相关的脚本示例如下:post-commit.bat

6J9O5Skb#Z051Testing软件测试网5}5D!m1ii;q6q#c

SET REPOS=%1
F"t,d0R*[5v0SET REV=%251Testing软件测试网;}L5W6Z wl5`@n#o |
SET CSCRIPT=C:\WINDOWS\system32\cscript.exe51Testing软件测试网G-w;X&B W%Bzt r
SET VBSCRIPT=E:\Document\hooks\post-commit-hook-hudson.vbs
? eq'y [ Z_eP0SET SVNLOOK=D:\opt\Subversion\bin\svnlook.exe51Testing软件测试网 G0S^"L6Jn0L2?;G
SET HUDSON=http://127.0.0.1/hudson/job/code%E6%9E%84%E5%BB%BA%E5%92%8C%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/51Testing软件测试网MJ#gV2?j4pf
"%CSCRIPT%" "%VBSCRIPT%" "%REPOS%" %REV% "%SVNLOOK%" "%HUDSON%"
51Testing软件测试网gz'F2IX

x/]hK` Y0

%W{$rv1~D{m/d0  post-commit-hook-hudson.vbs

OMKE9WF6z]051Testing软件测试网rmdl6U7CoMp

51Testing软件测试网J5z7VjmDo%i p

repos   = WScript.Arguments.Item(0)51Testing软件测试网'xtEHIeep)x
rev     = WScript.Arguments.Item(1)
(}M+R7W3T^'f'K#bc~h0svnlook = WScript.Arguments.Item(2)51Testing软件测试网R X*R Tx8?4Q _
hudson  = WScript.Arguments.Item(3)51Testing软件测试网y"v(b6YRnD x-Ci

8t)gI:I4Ul0f [E0Set shell = WScript.CreateObject("WScript.Shell")
(CA})f*?K(M0
.@}%_ ?_#H5m/{'KR'P0Set uuidExec = shell.Exec(svnlook & " uuid " & repos)
+L4v;I4gzJ`B'Y0Do Until uuidExec.StdOut.AtEndOfStream
ZZ9]_V*x.v T0  uuid = uuidExec.StdOut.ReadLine()51Testing软件测试网.P5kI9PBD
Loop
p&eW)^:P#^r0Wscript.Echo "uuid=" & uuid51Testing软件测试网 C%` ?3b O;U%\9x1{:G1c

8jL+h G0oxa0Set changedExec = shell.Exec(svnlook & " changed --revision " & rev & " " & repos)51Testing软件测试网t4~9kD/y1B |q
Do Until changedExec.StdOut.AtEndOfStream51Testing软件测试网)xdtm2y_zL
  changed = changed + changedExec.StdOut.ReadLine() + Chr(10)51Testing软件测试网]'k#cBmzNy
Loop
a]"Q:Q1^x&O0Wscript.Echo "changed=" & changed
_Y.I*J k#ye0
![1b*{q(]9eW1Z0change=CStr(changed)
_!D l[W8C6R0a=InStr(change,"trunk/code/")51Testing软件测试网b;@xp2U#cv X

&N\Z?!U }]:l9I;m0url = "http://127.0.0.1/hudson/job/code%E6%9E%84%E5%BB%BA%E5%92%8C%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/build?token=testanddevelop"51Testing软件测试网!v|*q+`3jQ1uQ5c
Wscript.Echo url51Testing软件测试网[BI guF,@Xe7v&u,M

v"v!l M@ac0if a>0 then
Mxs%Mt lb ^0Set http = CreateObject("Microsoft.XMLHTTP")
;~[ }%tb'[0http.open "POST", url, False51Testing软件测试网K;l,LxoQU
http.setRequestHeader "Content-Type","text/plain;charset=UTF-8"
+y,bd,Y%~+F'OB4_!L}0http.send changed
!_ @z1fA9tR5ET0set http = nothing
4xWlKYh D3l kd'g0end if
0_X Y*M7j2c0set repos = nothing
XSC1F'a TM0set rev =nothing
b5a0t4{#t3s(z0set svnlook = nothing
l_'bOv ]bD Ye0set hudson = nothing51Testing软件测试网 o(y_IJ)HcB"P
set shell = nothing
f4{a%e8K9D%h*q:WGk0set uuidExec = nothing
$|YA9@-TNy0set changeExec = nothing
"N^0UG6t0set change = nothing
\P5w+Yq8tH0set a = nothing51Testing软件测试网5}%MR w W5cZ3}w4g
set url = nothing
51Testing软件测试网I/tz$k Uh?8o.{W

51Testing软件测试网C_ Ky-P$`$E,u

I7h7Oq+R7ju0z)]"l%Z H0  更多的关于构建的知识,推荐这个系列文章: 软件工程进阶之每日构建 (墙外)。 三. Alpha场所 Alpha场所是一个地方,里面有一堆东西,常见的包括Alpha安装包,构建后的产物,Alpha应用等等。所有的这些东西都有一个共同的愿景: 就是降低测试和升级Jar包的难度,一直降低,直到:公司的任何一个人(甚至客户),只要愿意,都可以方便的进行试用,测试和验收等工作,就像使用测试一个网站那样方便。 一般来说,Alpha场所里面的东西是经过构建,或冒烟测试后所得的产物,但这个Alpha的愿景更多的表示,公司内部可以非常方便的获取这些构建结果,以达到及时响应,快速反馈的目的。比如Alpha安装包基本上相当于一个普通的安装包和一个方便的Update工具,而Alpha Web应用就更方便了,每次构建成功后都会自动推送热部署到Tomcat下的该应用,任何人只需打开浏览器访问该应用,都能获得最新的功能体验。 四. 冒烟测试 冒烟测试是收到构建成功后放到Alpha场所的二进制包,在其他测试验收活动开始之前进行的简单测试,只包括最基本的功能,一般每天早上过来跑一次,因此叫做每日冒烟测试。 为什么要有冒烟测试? 我可以举一个没有冒烟测试之前的例子。有一段时间,开发组经常进行大规模的代码重构,并且导致很多基础的功能用不了,并且因此更多的依赖这些基础功能的测试工作也无法开展,按照持续集成的指导原则来说,越早的集成和测试越好,但是这样测试工作一下子就被阻滞了。原先想的办法是,提交紧急BUG,让开发优先修复,但后来发现根本不起作用,因为紧急只空留一个名义上的紧急,但实际处理的时候,可能还是要好几天才会得到处理。后来通过将那些最影响其他测试工作的项,组织成冒烟测试条目,并约定:如果冒烟测试失败,需要当天立刻修复,每一测试项都会对应有一个开发人员。51Testing软件测试网Vs;v8kdA8z1t

/tE$kn)fgzc_0相关链接:51Testing软件测试网g;tl/tH'r

Gs0R&R0mW8Z1K4]0软件测试思考系列[0]:概述51Testing软件测试网 R4tkJq"R%vm'I

51Testing软件测试网5X |7c9s3N3rhL

软件测试思考系列[1]:往持续交付的方向努力51Testing软件测试网 K9E ^ Co3A)_


TAG:

 

评分:0

我来说两句

Open Toolbar