软件测试思考系列[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软件测试网;}L5W6Zwl5`@n#o | SET CSCRIPT=C:\WINDOWS\system32\cscript.exe51Testing软件测试网G-w;X&BW%B zt
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'F2IXx/]hK`Y0%W{$rv1~D{m/d0 post-commit-hook-hudson.vbs
OMKE9WF6z]051Testing软件测试网rmd l6U7CoMp51Testing软件测试网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") (C A})f*?K(M0 .@}%_?_#H5m/{'KR'P0Set uuidExec = shell.Exec(svnlook & " uuid " & repos) +L4v;I4gzJ`B'Y0Do Until uuidExec.StdOut.AtEndOfStream Z Z9]_V*x.vT0 uuid = uuidExec.StdOut.ReadLine()51Testing软件测试网.P5kI9P BD Loop p&eW)^:P#^r0Wscript.Echo "uuid=" & uuid51Testing软件测试网C%`?3b O;U%\9x1{:G1c
8jL+hG0oxa0Set 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*Jk#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软件测试网[BIguF,@Xe7v&u,M
v"v!l M@ac0if a>0 then
Mxs%M t
lb
^0Set http = CreateObject("Microsoft.XMLHTTP") ;~[}%t b'[0http.open "POST", url, False51Testing软件测试网 K;l,LxoQU http.setRequestHeader "Content-Type","text/plain;charset=UTF-8" +y,b d,Y%~+F'OB4_!L}0http.send changed !_@z1fA9tR5ET0set http = nothing 4xWlKYh
D3lkd'g0end if 0_X
Y*M7j2c0set repos = nothing XSC1F'a TM0set rev =nothing b5a0t4{#t3s(z0set svnlook = nothing l_'bOv]bD Y e0set 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}%MRw
W5cZ3}w4g set url = nothing |
51Testing软件测试网I/tz$kUh?8o.{W51Testing软件测试网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
^
C o3A)_
收藏
举报
TAG: