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

发表于:2012-4-20 13:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:hackfisher    来源:51Testing软件测试网采编

分享:

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

SET REPOS=%1
SET REV=%2
SET CSCRIPT=C:\WINDOWS\system32\cscript.exe
SET VBSCRIPT=E:\Document\hooks\post-commit-hook-hudson.vbs
SET SVNLOOK=D:\opt\Subversion\bin\svnlook.exe
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/
"%CSCRIPT%" "%VBSCRIPT%" "%REPOS%" %REV% "%SVNLOOK%" "%HUDSON%"

  post-commit-hook-hudson.vbs

repos   = WScript.Arguments.Item(0)
rev     = WScript.Arguments.Item(1)
svnlook = WScript.Arguments.Item(2)
hudson  = WScript.Arguments.Item(3)

Set shell = WScript.CreateObject("WScript.Shell")

Set uuidExec = shell.Exec(svnlook & " uuid " & repos)
Do Until uuidExec.StdOut.AtEndOfStream
  uuid = uuidExec.StdOut.ReadLine()
Loop
Wscript.Echo "uuid=" & uuid

Set changedExec = shell.Exec(svnlook & " changed --revision " & rev & " " & repos)
Do Until changedExec.StdOut.AtEndOfStream
  changed = changed + changedExec.StdOut.ReadLine() + Chr(10)
Loop
Wscript.Echo "changed=" & changed

change=CStr(changed)
a=InStr(change,"trunk/code/")

url = "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"
Wscript.Echo url

if a>0 then
Set http = CreateObject("Microsoft.XMLHTTP")
http.open "POST", url, False
http.setRequestHeader "Content-Type","text/plain;charset=UTF-8"
http.send changed
set http = nothing
end if
set repos = nothing
set rev =nothing
set svnlook = nothing
set hudson = nothing
set shell = nothing
set uuidExec = nothing
set changeExec = nothing
set change = nothing
set a = nothing
set url = nothing

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

相关链接:

软件测试思考系列[0]:概述

软件测试思考系列[1]:往持续交付的方向努力

22/2<12
春暖花开更文季,点击参与还有惊喜礼品~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号