51Testing软件测试网/\|;|HU&Q@@史亮简介:
.m7w,teRA0?+`&o-R+Z,f&K8j0 史亮,男,毕业于东南大学,获得计算机软件与理论专业博士学位,研究领域为软件分析与测试。于2006年加入微软(中国)有限公司,任职软件开发测试工程师,负责微软在线服务与商业智能产品的测试工作。于2011年工作调动至微软总部,从事下一代Microsoft Office产品的测试工作。51Testing软件测试网&_vsU C3y
51Testing软件测试网4F ~;N7sq BL'q7D:D探索式测试的概念与现状51Testing软件测试网xo2j7[0M/s!Bn
51Testing软件测试网
gjsh+B&@"b2RH 51Testing:最近主要在从事哪方面的工作?51Testing软件测试网"g*Q,X.gvC2n
i3P
kO(M&X7g&N!U
X0 史亮:我正在测试下一代Microsoft Office产品,测试对象是Windows桌面应用。
TEQ`2Kr051Testing软件测试网$MVV2b(f'q 我与高翔合著了《探索式测试实践之路》一书,由电子工业出版出版发行,即将在2012年8月上市。该书针对测试人员对探索式测试的困惑与误解,分享了作者们在探索式测试领域的实战经验和反思总结,并介绍了业界专家的相关见解。希望读者不吝赐教。
L1C+p"w/B}x
d$Ktd7O051Testing软件测试网;`6O`%La#fwHv 51Testing:随着敏捷测试的推广,探索式测试逐渐受到测试人员关注和重视的同时也感到相当的困惑。那么到底什么是探索式测试?
R.N5k4g
P9Vs3e0fJUt]5e)[;Q0 史亮:作为一个技术术语,“探索式测试”是测试专家Cem Kaner博士在1983年提出的,并受到了语境驱动测试思想的指导。目前,影响力最大的定义是Cem Kaner的论述:51Testing软件测试网1L-sv#h#Ro*bHr
^d%F6C`I#J^0 探索式测试是一种软件测试风格,它强调独立测试人员的个人自由和职责,为了持续优化其工作的价值,将测试相关学习、测试设计、测试执行和测试结果分析作为相互支持的活动,在整个项目过程中并行地执行。
0k+b!Ti&M051Testing软件测试网"[P&aD fSMI-Y 该定义包含三个方面的内容。51Testing软件测试网HaE,{e6w
51Testing软件测试网;z m;A}$h}$u)`
第一,探索式测试是一种软件测试风格,而不是一种具体的软件测试技术(如等价类划分、边界值分析等)。作为一种思维方法,探索式测试强调依据当前语境选
择合适的测试技术,而不局限于特定的测试技术。测试人员可以在探索式测试中使用任何一种测试技术,也可以将探索式风格应用于任何测试活动。51Testing软件测试网Y@K_*K;S:xJB7Y/\KP
AA-TS#W!R0 第二,探索式测试强调独立测试人员的自由和责任。测试人员应该为个人和团队负责,调动所有能量,发挥人的灵活性,在整体上持续优化个人和团队的产出。51Testing软件测试网(g6`,r;A{Ca
p#RgB3j O$I'x0
第三,探索式测试建议在整个项目过程中,将测试相关学习、测试设计、测试执行和测试结果分析作为相互支持的活动,并行地执行。实际上,人脑难以并行地执
行多项任务。探索式测试旨在将测试学习、测试设计、测试执行和测试结果分析作为一个循环快速地迭代,以不断收集反馈、调整测试、优化价值。51Testing软件测试网&e$qWhf;Y"Y T@`M$zW4@
I
N"E4Tdy0 51Testing:您觉得目前普遍存在的问题有哪些?
j|:ks1o Y e]051Testing软件测试网4TJ{4_6kB 史亮:我认为目前主要的问题是一些测试人员对探索式测试存在较多的误解,例如:51Testing软件测试网:^(y
iw)d
51Testing软件测试网 o.ksOJ
] ● 探索式测试就是即兴测试(Ad-hoc Testing)。
q;x,M-SxA
^*a051Testing软件测试网6Nl6hb4y$Bk ● 探索式测试不编写文档。
G+P1Gm%kzYw0&E\v@)f0u4y0 ● 探索式测试的测试设计只发生在测试执行的时候。51Testing软件测试网j+H
r~/\~V8rO"d
51Testing软件测试网i}3J'i
p ● 探索式测试的应用领域是手工的功能性测试。
3ea}EQ
@&Ys-M0\o:d/Pg3b|I'D^]0 ● 探索式测试的过程是不透明的,难以追踪、解释和度量。
V_
]QLL051Testing软件测试网yN(Cy;M0iQZ#L ● 探索式测试只是脚本测试(Scripted Testing)的补充。
8@X#c
R
C6KW051Testing软件测试网 kT6j.A]Nh)T ● 探索式测试比脚本测试有更高的风险。51Testing软件测试网g&{)| r(jvm.k&M
1?%UI-cvp"zT:n$x0 ● 探索式测试只适合测试专家,不适合测试新手。51Testing软件测试网z:`F;YX7N:Mt
`g|1`2~4a0 我发现一些很优秀的测试文献在此产生了不好的影响。例如,《敏捷软件测试》将探索式测试置于测试四象限的第3象限(如下图),而该象限的特征是:以手工测试为主、面向业务领域、评价产品。这种观点严重局限了探索式测试的应用范围。
$T9yrb
{U;A;[ ]&c051Testing软件测试网0rey+D3q {w
51Testing软件测试网&a? CKXR]S)_[fI 实际上,探索式测试能够很好地应用于所有四个象限,包括半自动化测试、自动化测试、基于工具的测试等。例如,第4象限的安全测试。请想象一下黑
客是如何攻破软件产品的。他们的基本方法是“错误猜测”:通过分析已知的安全缺陷,抽象出可利用的缺陷模型,然后开发出相应的缺陷挖掘工具。这些工具可以
是黑盒工具,通过持续地输入攻击数据来发现缺陷;也可以是白盒工具,通过扫描源代码(或目标代码)来识别漏洞。他们运行工具,分析输出中的蛛丝马迹,一旦
发现疑似缺陷,便深入探索。整个攻击过程常常需要广泛扫描、深入挖掘、迂回前进、反复尝试。从安全测试的角度看,黑客都是探索式测试的绝顶高手。
KJ
j&M7eb1n]051Testing软件测试网+bj
z5` G)w1i7@Z 《探索式测试实践之路》系统地讨论探索式测试,有助于消除误解,建立正确的观念。其中,第7章详细讨论了探索式测试与测试自动化的互补关系,介
绍了如何利用探索式风格来开发测试用例和测试工具。通过若干探索式自动化测试的实例,说明探索式测试的风格与思想同样适用于测试开发。51Testing软件测试网l(d:we*GZ
`3^4uf
51Testing软件测试网Kk#qK*M 51Testing:探索式测试的思维方式与其他的测试方法有什么区别吗?
[+R!U4U'ce8h2I5n0vSbjT0 史亮:探索式测试的核心优势是有助于“学习”。此处的学习是指学(获取知识)与习(应用知识)的持续过程。
J'ggtVE vPPV051Testing软件测试网.a/B3F}5lH[ 对于测试人员,软件测试是一个持续学习并实践的过程。他的学习范围包括:行业知识、用户角色、软件产品、计算平台、编程技能、测试技术、程序缺陷、项目环境等。51Testing软件测试网8LC#]:Kw!KV7d9Ms
51Testing软件测试网M8^5_(H H/oG)\I;W3P 测试人员不需要在项目之初就掌握所有知识,他可以通过每天的工作去逐步理解用户、项目、技术和团队。更重要的是,他需要在每天的工作中实践所学
的内容:规划测试方案、创建并执行测试用例、分析测试结果和编写测试报告。实践是练习,是“学”的自然延伸。知行合一才构成“学习”的完整内核。51Testing软件测试网\(iDF!\@s,k1vz
51Testing软件测试网:xSk
t.d#_-H"[;W 探索式测试在本质上鼓励测试人员去自由地探索、创造和应用。
?6KI F5H)D0/{ K!qqe|Q3} DC4`0 ● 探索是带着使命在某个空间中有目的的漫游,但没有预先确定的路线。探索包括不断学习和实践。
o/g'p&Y%hbxkB8y~051Testing软件测试网3F-N5Q&}/zX(E%dr ● 探索式测试者持续应用他所学到的知识。所谓“学而时习之,不亦悦乎”,探索式测试将学习与应用作为相互支持的活动逐步展开,为测试者的知识提升提供了平滑的学习曲线。51Testing软件测试网8k0E)s@fr
51Testing软件测试网 [8w3MN!V z2h3N ● 探索式测试有助于测试人员在合适的时间学习合适的内容,并立即应用,以获得真实反馈。这提高了学习效率和效果,并降低了浪费测试资源的风险。
$vl6S3J
E,H-|%Vc8w09n+Y1DNt\&i0 ● 在探索式测试中,测试者创造出一切有助于学习和实践的数据和工具。它们包括测试输入数据、结果检查脚本、数据分析报告和业务流程图表等。51Testing软件测试网F2e0Ka&Z
"^H3Ym"t;g%C~i0 ● 探索式测试是一项富有智力挑战的活动,充满了乐趣。
0g$R4k%c/[0"t.Oo(kE6K~0 学习的一个重要成果是成为更优秀的测试人员。他们可以根据项目语境,选择合适的流程、技术和工具来高效地测试,以推动软件质量的提高。51Testing软件测试网*pcBd)Q+X?+v,i*y
^f-F\'Z'c7t|5i0 51Testing:执行探索式测试的具体方法有哪些?51Testing软件测试网*YR
u/T's0z0m1y
b:~psM*~0 史亮:探索式测试是一种测试风格,强调依据当前语境选择合适的测试技术。51Testing软件测试网8X5Y9\o#}m
D-_S:T
51Testing软件测试网s&_6g2Ve`On3N 在这种测试风格的指导下,涌现出了一批支持探索式测试的测试技术。例如,James A.
Whittaker在《探索式软件测试》中提出了一套基于系统化错误猜测和测试隐喻的“漫游测试”技术,丰富了探索式测试的手段。又例
如,Jonathan Bach和James
Bach发明了基于测程的测试管理,显著地提高了探索式测试在测试组织、汇报、交流和度量上的能力。再例如,开发工具Microsoft Visual
Studio 2010开始支持手工测试和探索式缺陷,Visual Studio
2012进一步增强了对探索式测试的支持,这体现了软件行业对探索式测试的认可,也表明探索式测试辅助工具和自动化将获得更多的重视与发展。
*xa,Q[1W&{1FU0sH4y~jy*_Zc0 51Testing:是否可以向我们介绍一些探索式测试工具?请举一个实例分析51Testing软件测试网Q~!S.J\(^)V:N\([(K"Z
51Testing软件测试网9B N4WU#[v5O r 史亮:探索式测试原则上可以利用一切恰当的工具,不过许多工具鼓励观察和学习的风格,能够延展测试人员的能力,为广泛且深入的探索提供了支持。使用这些工具对提高探索式测试效率有明显帮助。
|$?qu`a9m].@0