【转】敏捷测试的挑战
上一篇 / 下一篇 2010-03-23 13:37:57 / 个人分类:敏捷测试
参考:Bret Pettichord 的《Agile Testing - What is it? Can it work?》和《Agile Testing Challenges》
U2o,C/F4q0
A%i/v
]-F8d*^;H0我们从上下文驱动测试的七大原则(www.context-driven-testing.com)可以看出,上下文驱动测试倾向于快速的反馈和适应变化的环境。所以上下文驱动测试的很多原则和做法可以应用到敏捷开发的软件测试中来。
]L"?[i,D\+P0 51Testing软件测试网[GBjz(R?N
什么是敏捷开发?
Rlr xIF1@O0敏捷开发是递增式的、迭代的、不断调整的开发模式。我们逐渐地建立起软件系统,能看到系统在成长,能展示进度。通过多次发布或项目的阶段检查点,每一次都比上一次靠近目标。迭代包括需求的开发和测试,典型的迭代周期是2周。目标随着从上一次的迭代中学到的东西、反馈以及商业机会而调整。
"_U^r"`
P?0 51Testing软件测试网b.G6M8w)t
在敏捷开发中,工作被分解成“故事”,也叫特性或用例,组合成任务分派给不同的程序员。定义好接受标准,开发直到单元测试和接受测试通过才算完成。
+_:yY@H4Kw(k?0 51Testing软件测试网'Y+{@9V1K_'}sW9k;_
敏捷开发讲求合作,结对进行编程,避免个人拥有专门的知识,代码属于项目组共有。51Testing软件测试网HqFn7QH!s#`
51Testing软件测试网 lW&p`Cm(MG&T
在敏捷开发中不存在回退,讲究持续地集成,单元测试(通常使用测试驱动的开发方式),持续地进行回归测试。51Testing软件测试网0[9UJ2nrn
51Testing软件测试网5f!~xbi R{
为什么以前的开发模式不再适用?
lA\Z6XSNB:_-r0以前的开发模式要求有详细的测试计划,但是缺乏足够的时间来写,而且测试计划受很多因素的影响经常改变。
Y2eM8k~ d3`_u h po5~0 51Testing软件测试网b9S p,~
pq
以前的开发过程会专门留出一个阶段来测试,但是你不能定义进入和退出的标准,测试阶段会随之而过。
A!Dx@-Ag@dX0 51Testing软件测试网k8Hgu-LL
以前的开发模式强调变更控制,但是现在的软件需求变更非常频繁,变更成了家常便饭。51Testing软件测试网 NtZU
fG+O
51Testing软件测试网{-g8C1v|j| H
}!O
以前的开发模式要求测试要对软件做出权威的判断,但是测试很难做出权威的关于软件正确性的判断。
Ys+e T'?p0 51Testing软件测试网,|]1I;V^w&G}Y
测试的作用
2dI!O$I"~&{5A0有价值的东西有么提供产品,要么提供服务。那么测试提供什么产品或服务呢?有人认为测试提供调试通过的、经过测试的软件。这是错误的回答。测试不提供产品,测试提供信息,关于开发过程中的软件的状态的信息,以便基于这些信息做出决定。51Testing软件测试网Eqt%wZ/[
51Testing软件测试网uu JTw:C-_!i
敏捷测试的挑战之一:测试员是否不再需要了?
*{&cxNow*L0既然有开发人员做单元测试了,我们还需要测试员吗?有些项目团队采用了敏捷开发方式后把测试员都给解雇了,然后过了不久他们就后悔了。51Testing软件测试网RLFe"d5y0Q@
测试可以是除QA或测试员外的人来做,例如业务分析员,有些项目团队让开发人员来做接受性测试。51Testing软件测试网gb$X-U/SU
w"E|GG+R0但是有专门的测试员带来两个好处:51Testing软件测试网L~[y(S*sm
1、 专注于用户使用而不是软件的技术实现
(qkR6et3B7]-IA3I02、 专注于发现软件的错误而不是证明完整性51Testing软件测试网ouj:{5Rf5_
XkQ4I{dh@p0敏捷测试的挑战之二:测试不完整的软件
;e5zZgT/kT}q0频繁的迭代产生的测试版本很多时候是不完整的,测试员如何测试这些不完整的代码呢?51Testing软件测试网0]$^F E*mi2^
51Testing软件测试网t3E0V
O7q
“故事”应该从业务价值方面来定义。一个“故事”应该在一个迭代周期内完成。好的“故事”是不容易定义出来的,但是差的故事对测试人员的影响比对开发人员的影响还要大。有时候测试人员需要帮助定义“故事”。
h:z2Z(U6cRH7cM:q0 51Testing软件测试网P$f+W/k.q7l0` R`
敏捷测试的挑战之三:可接受性测试是否过于简单了?
3np/vnJ1m9}7|0测试人员如果只是做可接受性测试,只是验证“故事”是否完整,岂不是太简单了?这样怎么能做好测试呢?51Testing软件测试网r
Q9w1c-t d
dl
A6I1^)xp9a2HKx0其实,每一个迭代都需要额外的测试,而不仅仅是局限于验证“故事”的完整性。
在迭代测试中还要按需进行下面类型的测试 :51Testing软件测试网 w-^&b}B5E
探索性测试:同时学习系统、计划和执行测试,寻找bug、遗漏的特性和改进的机会。51Testing软件测试网5SF `P[!o4p%z
组合交互测试:专注于特性之间的交互。51Testing软件测试网~u-[kp_:x {oe
y
场景测试:模拟真实世界的场景进行测试。51Testing软件测试网Od%^dD"xz
G
疲劳测试:长时间地执行软件
H)Q ?
L&|0业务循环测试:基于月末、季度末等业务循环的边界来执行场景51Testing软件测试网R(Yw"@?G J
压力测试:对系统施加强大的压力进行测试
4C?u t(pC d}G2w!M0
&w:[9E F(C\og0敏捷测试的挑战之四:把测试员作为项目组的一部分51Testing软件测试网?(Zv,ev(^l/mO `
把测试员作为项目组中的一员不是牺牲了他们作为一个组织的完整性吗?