【转】自动化框架搭建
上一篇 / 下一篇 2012-10-12 11:32:05 / 个人分类:其它
'\]dG Cz~0说起自动化测试,我想大家都会有个疑问,要不要做自动化测试? 自动化测试给我们带来的收益是否会超出在建设时所投入的成本,这个嘛别说是我,即便是高手也很难回答,自动化测试的初衷是美好的,而测试工程师往往在实现过程中花费了很多成本、精力,而最终以失败告终。 失败的原因会很多,我总结几项:
:i#VG!L#x_!n051Testing软件测试网 F;Ztl3I*_Sm&oB1. 太过依赖测试工具,高估了工具的力量,最终会以失望告终。51Testing软件测试网(?+AN6@;?J*p t{
51Testing软件测试网M&C/z.{~}$p2. 项目紧急的情况,为了规避那些多余的环节,干脆人工测试,结果整个链路中断。
0v?z9z;HeL&v051Testing软件测试网/G'F$gq6Sjg ga3. 研发和测试人员不能很好的交互,如果这两个角色之间有了一道防火墙,那别说自动化测试了,手工测试也不会有好的效果。测试人员可以把研发想象成自己的女朋友, 努力培养相互之间的感情。51Testing软件测试网z;L'\i'}(H"s#J
FFOv:v,Z04. 自动化测试人员实力被低估而导致的情绪低落,这个问题在所有岗位上都会发生,当然要看领导重视程度了。
ZUlk3JXG/c051Testing软件测试网"o/Ua?rYHF5. 资源不够,公司不舍得资源投入,或者蹑手蹑脚,那就不要浪费时间了。
Ig S l!?V+g051Testing软件测试网\@Q&D*bI!u!v Q6. 太高的期望,过低的回报。
,@d)gw,wx*l0S&W-_ }2J&qLF%|0现在国内没有几家公司说能玩转自动化测试的,在看国外那些耳熟能详的企业像google ,Microsoft ,它们反而搞得热火朝天的。可笑的是在微软中国的测试部门工作过几年的测试经理,出来搞个什么《微软自动化测试体系最佳实践课程》,就能忽悠国内的那些知名的企业掏钱去听,我这也不是说他们的东西不好, 只是希望我们自己也能够重视起来,要知道人家“卓越”体系也是由那些“专业团队”花了很多的时间和精力才搭建起来的,所以先不说收益如何,即便是为了这一个美好的初衷,我们也应该去尝试一下,即使是失败。51Testing软件测试网8j B+v"p;t2Z8r
51Testing软件测试网&Z#LQQ?J我也做了几年的测试,但也是最近才开始研究自动化测试的,在工作中多多少少接触过几种常见的工具,如 silktest 和Selenium,搞过测试的应该都听过,我最近刚刚为现有项目搭建了一个测试框架,为其中的部分模块编写了一些测试case, 收益还是颇丰的,先说说这两种工具吧。51Testing软件测试网x;E:XY ~Q SR
%}!c7bs~j{ V3W;v0SilkTest 是商业工具,想使用是需要花钱的,但是有现成的平台和框架,也比较容易学习,可以基于windows ,unix平台。ie ,firefox (部分)浏览器。可以录制回放,对象识别或者手工编程,也能基于数据驱动,关键字驱动等等测试框架。SilkTest 里面的语言4test 其实是类C (也有Silk4J ,用Java写),编程能力相对较强。
*J4WExo?Q051Testing软件测试网&KQ e*za;tQ%XSelenium 是免费的,需要有类似ide (如eclipse ),原先是thoughtworks 的几个牛人开发的,现在google 维护(人都跳槽过去了)。可以基于windows ,unix ,mac 等平台。ie ,firefox 等浏览器。 测试团队,经费不足,能力很强(Java 上面),有对测试平台和环境要求比较高(ie ,firefox ,safari 等等),那么Selenium 是很不错的选择。51Testing软件测试网{uv kAjX:R]\+U\
51Testing软件测试网Uk/{'^1Ek^V 今天我就简单入个门,先介绍通过junit+selenium+Coverlipse+ant 来搭建一整套自动化测试框架,开始之前我先提出几个问题,请大家根据下面的问题来阅读本篇文章。
${u?B%fdl3{01. 如何录制脚本?51Testing软件测试网Du}(e1KH m#RS
2. 如何转换成junit 脚本?51Testing软件测试网%j],b6\*Y"[
51Testing软件测试网m2J:w0@}@3. 如何生成junit日志?51Testing软件测试网Pm"a7be#G6\
51Testing软件测试网eL0Uw5n"n2b#O4. 如何回放selenium 及查看回放日志?51Testing软件测试网o%R I wit
51Testing软件测试网G:e;|5h{m5. 如何查看代码的覆盖率?51Testing软件测试网D+NjI u+[ P u
0@YC7p-[8G,`q0一、工具准备51Testing软件测试网#b_1|.j.l+|+a-\
51Testing软件测试网s;vq'z0g
qpL,u3mrWl0工具
2e1XZZ
CXJ+xs \0 说明51Testing软件测试网f E bXT*rpa*V
下载51Testing软件测试网p&_VaO%C
@e,d[G:N7l2A j0junit
\%g6gf[ b.U!{0 JUnit 是一个开发源代码的Java 测试框架,用于编写和运行可重复的测试。
~qYZJ(j{0 http://www.junit.org
5@? n#{BFB.oC0
-p,xas/HO'H0 51Testing软件测试网_ RDR^c
selenium
%\bMwJ?7q6]1S0 先介绍两个重要的组件Selenium-IDE 来录制脚本;selenium-rc selenium-remote control 缩写,是使用具体的语言来编写测试类
T.b"aRCu6t5@
o0 http://seleniumhq.org/download/51Testing软件测试网\OFmQ!Z@
P
51Testing软件测试网k#P@ oc,NO'hw
w
j$}6D{0Coverlipse51Testing软件测试网&i*w#N2GT ep8~!~
Coverlipse 这个Eclipse 插件能够把JUnit 测试的代码覆盖直观化。51Testing软件测试网1vLq(h8e2?
http://coverlipse.sourceforge.net/download.php51Testing软件测试网^$|#E:BX.mB!]
G Fc7_ [0 51Testing软件测试网'\ twEga'C
dUK:F
Ant51Testing软件测试网Ejtr|?K8^
Ant 是一个类似make 的工具, 大家都已经很熟悉了,这里我们可以利用其中的ant task 来生成junit 日志
~%GYeQu0 http://ant.apache.org/bindownload.cgi
"f_$}r7^[0
~5as6@]
b'I8H A"g.Z0 51Testing软件测试网 q2i YDv8`
8fV
kC({m0
yu9ff-z8@0二、Junit 的安装
4o1H6u8_2] OU&xm01. Eclipse 本身会自带Junit.jar 包,所一般情况下是不需要额外下载junit 的。51Testing软件测试网%i([y\U/_$O
51Testing软件测试网#Wf%?P!d H2. 将junit3 的library 添加到工程的buildPath 中
L&f@]`&d;?g+l5Zd*A051Testing软件测试网N/b,g"~_3. 因为junit 的日志是通过Ant 来生成的,所以一定要将Junit.jar 添加到ant_home 里51Testing软件测试网^.Sv^3Y }(tt
s:q+[}*M9OR*\g0三、selenium 的安装51Testing软件测试网:|[Kfd)p'm ?
E'w ` m*jVCxf1[!}J01. 安装seleniumIDE ,打开火狐浏览器,然后进入工具—> 添加附件,搜索seleniumIDE
)TN6s@0Yo:Q({'}0WeI8tX KZ02. 查询出对应的IDE 后,点击直接安装,安装结束后重启FireFox ,看到下面的菜单说明安装成功
R8]q n {_0iG"CkuW;Z03. 安装selenium-rc ,先去http://www.openqa.org/selenium/下载selenium 包。用命令行来到解压到文件夹下:d:\autoTesting\ selenium-server-standalone-2.0b1.jar 目录下
!W.z E;VA051Testing软件测试网[A2o%v~+Ib2W4. 运行java -jar selenium-server-standalone-2.0b1.jar ,启动seleniumserver。为了在运行时应用运行的浏览器与selenium 服务的浏览器分开可在其后面加–multiWindow 。51Testing软件测试网TS*k_2Ijd$ue
51Testing软件测试网1uG~J] y'O5. 在Eclipse 创建一个项目,在项目的build path 里面加上elenium-server-1.0-beta-1 下selenium-server.jar 、selenium-java-client-driver-1.0-beta-1 下selenium-java-client-driver.jar (这两个在刚解压的包里面)和eclipse\plugins\org.junit_3.8.1 下junit.jar 。
eret2MKqOy0/Xu
f3P Zd+M\;P051Testing软件测试网kT3^L|\
6. 将制定的Jar 包导入到工程里,然后你就可以集成并使用相应的API ,编写自己的测试CASE 了。
h#I+N/G$G@:_4vMA:?0四、Coverlipse 的安装51Testing软件测试网:C#^:d2E2IGOd9u6Q
51Testing软件测试网E-s%KQVx?1. 直接通过Eclipse 即可安装,步骤如下51Testing软件测试网!S6NU1XS&J
51Testing软件测试网W.t,?0ohx*{e4xp;}(q•In Eclipse, click Help -> Software Updates -> Find and Install.
9oL,Kz.Ci(A:d
rw^X0•In the dialog, select Search for new features to install, then Next.51Testing软件测试网s.i:vS} h%PD(UT
•In the next step, add a New Remote Site. Name it "Coverlipse update site", the URL is "http://coverlipse.sf.net/update/".51Testing软件测试网^ BYD
Fq
•Press Finish. Eclipse now searches for the Coverlipse feature to install and shows that to you. 2. 配置 Coverlipse 以获取代码覆盖51Testing软件测试网}:MD+Ah6tvI/N
3. 一旦单击了 Run ,Eclipse 会运行 Coverlipse 并在源代码(如图 7 所示)中嵌入标记,该标记显示了具有相关 JUnit 测试的代码部分
.M&Wsd$?M2]04. Coverlipse 生成的具有嵌入类标记的报告
6{2wNZU{0
4pqbT;KI)C+}8a A05. 正如您所见,使用 Coverlipse Eclipse 插件可以更快地确定代码覆盖率。例如,这种实时数据功能有助于在将代码签入 CM 系统前 更好地进行测试。51Testing软件测试网M5~ Z+m2Gg
五、ANT 安装,eclipse 自带,只需要配置环境变量ant_home 即可。
,^@pfuy'^!p/h0f
G8G2gF4f:F`*q0
hTK$HX9JF0六、创建一个案例
1. 创建一个工程testSelenium 安装下面目录结构51Testing软件测试网3h [|e v{
51Testing软件测试网lD'UP)i nx)`V2. 录制脚本,打开Firefox 浏览器,进入selenium IDE 菜单
%|d/K jm051Testing软件测试网{ A%s9uH'Zu3. 输入相应录制的地址,点击红色按钮,开始录制51Testing软件测试网 s2j7O V(np"w0F
u.S|hYd$M8C04. 将脚本转换成junit 代码,然后将其拷贝到测试类中做为测试CASE 编码的雏形。51Testing软件测试网p*w I2^M-T.s
51Testing软件测试网c4[,x$GIjA8M\六、如何查看日志,这里日志分两类:
pX*ye/g(l T"T[(o051Testing软件测试网n9]OL4c)Tl Junit 日志,通过junit 写的断言,和标准输出,这些操作产生的日志记录。
i;a&|ng F K*i;X Z03J kNCl0l Selenium 日志,当运行junit 脚本时,selenium 相关的脚本就会产生回放日志,例如打开界面的url ,标准输入,输出等信息。
-R*Y)vU XU/T(e k F0"ps%h j/{/J1l!M0 虽然这两种日志没有交集,需要分开查看。但一般情况下我们只需要观察Selenium 日志已经足够用了,与其相比Junit 日志更适用于编码阶段。
FtMy!Ye3Cp^051Testing软件测试网'TVrD_%H{1. Junit 日志, 只需要配置脚本build-selenium.xml ,如下