展望2011

《有效软件测试-提高测试水平的50条建议》之自动化测试学习笔记【更新中】

上一篇 / 下一篇  2007-05-21 18:09:43 / 天气: 晴朗 / 心情: 高兴 / 个人分类:自动化测试

51Testing软件测试网 vF5I_i4^XS

该书中有关于自动化测试的部分有2章,边看边翻译.51Testing软件测试网-S-M\&T|}5ge&x

51Testing软件测试网Q`fxI)LG

第七章 自动化测试工具51Testing软件测试网LU:j+?L

1gg*Y?a5?'{|0建议31:了解不同类型的测试支持工具。51Testing软件测试网0|.Em:n4f/L5\Y `

X"rO]yzOX!K0测试自动化工具有很多类型可供选择,世面上大肆渲染的”录制回访“工具只是其中一种类型。所有这些工具都有助于提高测试生命周期。分析并找出某种工具是最有益于测试过程的。进行花费/利益(cost/benefit)分析。下面是自动化测试工具的种类列表:51Testing软件测试网\z:Rj%MPzh*m
1。测试规程生成器(Test-procedure generators)51Testing软件测试网*t9HJ@ VG2iQl r
需求管理工具捕获需求信息然后交给测试规程生成器,测试规程生成器根据统计学、算法、启发式方法等产生测试规程。测试规程生成器使用一些策略来探测不同种类的软件缺陷,包括:动作(action)、数据(data)、逻辑(logic)、event(事务)和状态驱动(state-driven)。
y${-zF)l~T(s0(测试规程:一个文档,提供详细的测试用例执行指令。测试生成器:根据特定的测试用例产生测试用例的工具。)51Testing软件测试网~`QR)m n'`
2。代码覆盖分析器和代码工具器。(Code-coverage analyzers and code instrumentors)51Testing软件测试网_~5GQ1F0S Z
该工具能计算出设计复杂度,衡量集成测试的数量,帮助产生集成测试并且估量没有实行的集成测试数量。
"QGv9yh0oOn!@03。内存泄漏发现工具(Memory-leak detection tools)
uB'BD3["}#OXV&z0目的是检查应用程序是否合理的使用他的内存资源。释放内存是否失败,提供运行错误侦察。51Testing软件测试网)Evec\ ^
4。度量报告工具(Metrics-Reporting Tools)
?T~.E%v Fd&BH0读取源代码,陈列度量信息:数据流、数据结构、控制流的复杂度。提供有关代码大小的术语度量:模块数、操作数、操作员数(??)、代码行数。51Testing软件测试网U1a*J xm+rU-C,r1Qm#{
5。可用性度量工具(Usability-measurement tools)
4pGYl5R wN h0可用性工程的原则包括:用户界面设计、图象设计、人类环境改造学的关注(汗!)、人性要素、人种学、产业和认知心理学。51Testing软件测试网3`{0a U3s)VNd
6。测试数据生成器(Test-data generators)
`#{{F'nc0自动生成测试数据,这些数据可用于功能测试、数据驱动压力测试、性能测试、负载测试。
1o1Lo*J;bS0A07。测试管理工具(Test-management tools)51Testing软件测试网O-{#|y(@Gzoz
支持测试计划、管理和分析测试生命周期的各个方面。(类似于TD)
TY/oij'r Z4@0
8。网络测试工具(Network-testing tools)
(oe$F4v l0Dh#S0客户端-服务器、web环境包括三个部分:客户端、服务端、网络。测试必须考虑服务端和网络层的性能测试,这类型的工具使得测试人员在网络中侦察、度量、测试、诊断性能。51Testing软件测试网+B+y []n X{*qW
9。GUI测试工具(捕捉/回放)(GUI-testing tools(Capture/Playback)51Testing软件测试网T8DhH}Bl3dl
市场上有很多这种类型的工具,(例如QTP、Winrunner,这类资料非常多,我这就不多介绍了)51Testing软件测试网6YtdgD |
10。负载、性能、压力测试工具(Load,Performance,and Stress Testing Tools)
#I_H/QuO#d!r]0(例如Loadrunner)
o$cwRGdwY^011。专门的工具(Specialized tools)51Testing软件测试网 lP&a7?h;St
不寻常的应用程序类型和结构将需要特殊领域的专门测试工具。例如网站将需要死链接测试,安全测试需要检查web服务器的安全有关的问题。,嵌入式系统。51Testing软件测试网.|_5s Z,n3l5P/D

51Testing软件测试网5g"Qqj:Ho+u G

 

k}~%_,T8N(F0

dAo8@'Z;m:kD)b v,V0建议32:考虑编写个工具代替购买一个.51Testing软件测试网-xAwe-z ^

N |0mOk ^D av0录制/回放自动化测试工具,并不能满足测试的覆盖率,在这种形势下,请开发人员添加些可测试的挂钩(testability hooks,中文的翻译可当作没看见...),所谓hook是指在源代码中插入特别为方便测试编写的代码.他们必须考虑编写一个新的自动化测试工具来增加录制/回放工具的作用.51Testing软件测试网%q K x7u ]g!_ \
录制/回放工具有时候对所测试系统并不满足测试的充分性.原因有很多种可能:测试工具本身就不充分;所测应用程序无法在该工具下自动运行起来;没有适合所测试系统的该类工具;测试任务对于现有的工具来说,太过复杂而无法完成测试.
6n7t`nG"U*z/D7q0是购买还是自己编写测试工具,需要领导的同意,包括预算和资源支持.51Testing软件测试网|$EH3m^0Q,k7mwI
但是,有些情况,除了编写工具,没有其他的选择.51Testing软件测试网?$R8E9lD3lCl9L8b
1.操作系统不兼容.
!{~WN#Bop02.应用程序不兼容.
9? s \w/]f;f03.特殊测试需要.51Testing软件测试网!|9y_FR|B
如果决定自己编写测试工具,下面有些重要的步骤要执行.51Testing软件测试网u;Nw ]iK`X
1.决定资源,预算,和编写测试工具所需的方案.
~2YgTN] ]5X)p1^02.得到领导的正式批准可以做这件事.
oq;g'?6m+G$?03.将测试工具的开发和普通的软件开发一样对待.51Testing软件测试网/vQ T @:P I'd)J
4.对工具的源代码进行版本控制管理.
B9m6{B(G2r']2s05.测试自家做的测试工具证实他是满足需求的.51Testing软件测试网*YN5G2KL w*C
编写工具的复杂程度从写一个简单的分支文件(batch file)或者perl脚本到编写一个复杂的C++应用程序.51Testing软件测试网Wwo r Z$wn(b
另外可以从网上搜索些市场上的免费的或者开源的测试工具然后考虑编写定制的工具.

2P/e_^KD$a051Testing软件测试网lr!fAawO*o

 

!x"BX[Z hvu0

y$D"O&{Z.d;t0建议33:了解自动化测试工具在测试过程中的影响

S6v.t'c)T hm0

7QO:A X*M+]9n'W/s4u/D0自动化测试必须被视为手工测试过程的一种增进方法.
d/z[ Dt5c;B)y#f0有一些错误的观念,认为自动化测试工具将立刻简化测试过程和方案.有些时候,自动化测试很可能失败,因为不切实际的期望,不正确的执行,或者错误工具的选择.51Testing软件测试网 wPM'wN8M
下面列出了一些纠正常见的对自动化测试误解的正确观念.51Testing软件测试网 Q9pB @)F$W _6X4YRz{'ok\
1.多样的工具通常是需要的.一个单一的测试工具不能满足所有自动化测试需求.所以需要多样的测试工具来测试多样的技术.
u-@(aF6|02.测试的努力并没有减少.引进自动化测试最出目的可能是为了减少测试劳动力,但经验显示尝试采用自动化测试伴随而来的是一个曲折的学习过程.
s\FA(t\L3Ei,P03.测试时间不会缩短.实际上,当自动化测试工具最初引进时,测试努力是增加的,测试时间不能像最初期望的那样缩短,甚至,允许时间的增长.
rN,W's#kqy0n O04.自动化测试遵循着软件开发的生命周期.自动化测试可以被视为有它自己的迷你型的开发生命周期,和其他开发过程一样完整.
d O$N!A7yM05.一个稍微稳定的应用程序是需要的.为了有效的使用自动化测试工具.51Testing软件测试网HxMmE,z J9X)W b
6.不是所有的测试应该被自动化.最重要的是分析哪些测试可以被自动化,一些测试是不可能被自动化的,例如一个打印输出的证实.51Testing软件测试网8Qn;l5L1E#V^8Jc-Ik)`
7.一个测试工具无法做到所有可能测试组合的自动化.无论自动化测试工具有多么成熟,同样也无法做到系统和用户行为的无穷排列组合的可能性.即使理论上是可能的,但没有哪个测试团队有足够的时间或资源来支持100%的自动化测试覆盖率.
r }FB5O:k V]s08.工具的整个花费要多于它本身的价格.包括培训费用,自动化测试脚本开发费用,维护开销等.51Testing软件测试网8f*p/oh4F b5b
9."Out-of-the-box"(黑盒?)自动化是无效的.工具生成的测试脚本必须被手工修改,则需要具备工具脚本的知识.
"VN9I#DW0~'[W IQ fL-tM010.培训是需要的.当引入自动化测试工具到新项目中时,在早期开始工具的培训是重要的,可以被视为一个重要的里程碑.51Testing软件测试网%}u;i.I@u
11.测试工具可能是打扰的.为了使某些自动化测试工具正常工作需要插入些特别的代码到应用程序中.为了消除开发人员对代码受影响的担心,在选择这类工具时让开发人员了解到该工具的市场使用情况,不用担心工具对代码产生问题.
-a3D-c Xyn8w@Y012.测试工具可能是不可预知的.测试工具对它们自己来说也是复杂的应用程序,所以他们也会有妨碍测试执行的缺陷产生,然后需要打补丁.
6AtY!A,{0s u&f013.自动化测试工程师可能会忽略测试目的.测试工程师可能变得热衷于开发精细的自动化脚本,而忽略了测试目的:测试应用程序.自动化测试脚本只是测试工作的一部分,但不是全部.

d1?9~V b@Z7H.x Cs0

w$K,`RmnF8M0 51Testing软件测试网0Q3W UXCyP%W

51Testing软件测试网mxIFv\&l

建议34:集中你们组织的需要51Testing软件测试网5_Q4] k3LI7v mf

51Testing软件测试网2aSC ?KsoU tWS

在论坛上经常看到这种类似的问题:在市场上哪个测试工具是最好的,你推荐哪个?最好的回答是:最适合组织的需要,系统工程环境和测试方法学.51Testing软件测试网7O)`vduk
考虑什么时候选择一个测试工具,下面有一些很好的建议.
1p.h5udM2GJ)s|01.选择一种测试生命周期都需要的工具.先确定自动化测试的所有需求是什么.有时候如果有合适的,该工具要支持组织内所有测试需求,要考虑到系统工程环境,应用程序开发技术和其他的组织需要.选择的测试工具要满足开发的评估标准.一旦测试工具的类型已经决定,标准将能更好的被定义.51Testing软件测试网$S%o9Qr s
2.识别不同的系统构架.测试工程师必须识别出应用程序架构的技术,包括中间件,数据库,操作系统,GUI开发语言,第三方插件.另外,测试工程师必须理解详细的系统架构设计原理,它将会影响到性能测试需求.
,p%z!bt"k03.确定是否需要第二个或更多个工具.选择最小数量的工具来满足最多的测试需求.例如,一个工具用于GUI测试,一个工具用于大型的性能测试,一个工具用于可用性测试.工具选择的多少,依赖于目前的测试阶段和对工具测试能力的期望.可能没有哪个工具兼容环境中的所有操作系统和程序语言,这个时候需要自己开发自动化测试工具或测试用具.51Testing软件测试网0f4Z W5B4U$b3Y
4.理解测试过程中,数据是如何被应用程序操作的.这样做的目的是方便定义自动化测试工具输出数据的正确性验证.
yd2d p Y&?*|9`05.回顾技術支援中心(help-desk)的问题报告.正在运行的应用程序版本,从技术支援中心的问题报告中获得普遍存在的问题,在新版本开发中,选择的工具能支持这些常见问题发生的测试范围.51Testing软件测试网-{9b4m"x'{
注:技术支援中心是一种基于电话对用户遇到的技术问题进行解决的服务.HELP DESK 是其它服务的衔接点,用户通过HELP DESK获得直接的技术支持、咨询,以及获取快速现场支持响应。51Testing软件测试网ZD Eo Tc9E!y%c{;h4m
6.知道所要的测试类型.测试策略首先被定义,再来选择需要的测试类型,例如回归测试,压力测试,容量测试,可用性测试等.选择的测试工具是否能实现最重要的测试类型?期望这个测试工具完成的测试目标和功能是什么?
$b C \:o+AN.T)^07.知道项目方案.选择的测试工具是否适合整个项目方案,是否会影响到项目方案?其中最重要的一点是,是否有足够的时间让测试人员在有限的方案时间内学习该测试工具.如果没有足够的时间,最好是放弃,推迟到下次方案最适宜的时候引入进来.
c#e eM,Ie{,?08.知道预算.选择测试工具要根据预算来决定,选择最适合的,而不是最好的51Testing软件测试网B8{U8T^]e
总之,选择工具最重要的是,测试人员应该明白,市面上没有一个满足所有环境的最好的测试工具,所有工具有它们各自不同的环境,适合自己的测试环境和测试需求的工具才是最好的.51Testing软件测试网3X7EPj-JMfp

P&u:^8WgNRba0 

:ad&W'm.n'm5l051Testing软件测试网~#Dp7u9QEr j

建议35:在一个应用程序原型上对工具进行测试.51Testing软件测试网+w(m_Rp&Q"|

[ fH l!RRNZJ0判断一个测试工具是否适合自己的系统,最好的办法是在被测试的应用程序上来试用该工具,但在工具的评估阶段,所测系统通常还无法使用.所以,开发人员能建立一个系统原型来评估这些测试工具.原型的建立必须在系统关键范围的基础上,提供系统中使用的一些简单而且具有代表性的技术.工具的兼容性测试对于GUI测试工具非常重要,因为这些工具可能无法识别应用程序的用户接口的定制控件,特别是windows平台.这些控件是第三方编写的,很少有测试工具制造商能满足多个公司编写的成百上千个各种控件.因为引入不兼容的第三方控件,将导致所有使用该控件的功能都无法用该工具测试.51Testing软件测试网J W3W+}e V$]
评估测试工具的人员也必须有适当的背景.通常,技术背景是需要的,确认他能在应用程序或原型上使用该工具,保证该工具是适合系统所需的技术.要想看到在运行当中的工具,除了在应用程序原型上跑,没有其他的选择.

l:? qUmS-o:{AJ051Testing软件测试网&Z4~1x"RoP

第八章 自动化测试:选择最好的实践.

QKE"e-_h8e;RdX0

,fE?L@2ns\/E)L0建议36:不要过分依赖于录制/回放工具.

D E3z \!j)FC r051Testing软件测试网0^*V+f+P?*AhK2l&q

即使是应用了最好的录制/回方自动化技术,这类工具作用也是有限的,不能成为自动化测试过程中唯一的方法.51Testing软件测试网spF0z_r^C
录制/回放脚本在初次录制之后还需要被修改的.除了黑盒测试,还需结合灰盒测试和白盒测试,如果只是录制/回放,无法达到最好的自动化测试效果.
pz"~Y/ex0录制/回放是大多数自动化测试工具的一个特征,如果只是录制/回放的脚本,会有下面严重的限制和缺陷:51Testing软件测试网|$vC H K+Fr
1.被固定编码的数据值(Hard-coded data values).如果用户界面或应用程序的其他方面发生变化,在测试执行的时候,这些固定值将变得有问题:测试脚本可能会不正确的影响应用程序或者完全的测试失败.
K{];P.x,U-q7F02.无模的(non-modular),难于维护的脚本.例如,一个网站的URL在脚本中多次出现,一旦URL的值有所修改,需要在脚本的多处进行同步修改.如果是有模开发方法,该URL只在一个函数中出现,然后这个函数被脚本的多处进行调用,所以该URL的任何改变,只需要在一个地方进行修改.
!C ws2s G%w03.缺乏再次可用性的标准(lack of standards for resuability).待续...51Testing软件测试网-N(YBi_~7f A(m


TAG: 自动化测试 有效软件测试

 

评分:0

我来说两句

Open Toolbar