究竟什么是敏捷测试和探索式测试?
在发起 敏捷测试现状调查 时,在相关测试的微信群里讨论时,依然感觉不少测试人员(甚至是比较资深的测试人员)还没有真正理解“敏捷测试、探索式测试 ”。所以,为了帮助大家能填好调查表格,先帮助大家统一一下认识:
究竟什么是敏捷测试?
什么是探索式测试?
一、究竟什么是敏捷测试?
按照wiki的定义:“Agile testing is a practice that follows the principles of . Agile testing involves all members of a cross-functional agile team, with special expertise contributed by testers, to ensure delivering the business value desired by the customer at frequent intervals, working at a sustainable pace. (实例化需求) is used to capture examples of desired and undesired behavior and guide coding.”
我在2010年为《程序员》杂志写了一篇文章——敏捷测试的方法和实践,定义“ 敏捷测试就是持续地、及时地向团队反馈软件质量风险/问题 ”。之后,2013年为infoQ 写了一篇文章“究竟什么是敏捷测试?(http://www.infoq.com/cn/articles/agile-test )” ,着重从敏捷开发的12项原则出发,讨论什么是敏捷测试,再结合大家普遍采用的Scrum模型来讨论敏捷测试的具体流程和实践。
但简单的理解,敏捷测试是:
具有敏捷价值观的测试
遵守敏捷开发原则的测试
过去几年,我在做 “敏捷测试” 相关培训时,基于敏捷开发的12项原则基础之上,概括了敏捷测试原则:
我还将 敏捷测试和传统测试做了一个简单的比较:
二、究竟什么是探索式测试?
探索式测试(Exploratory Test,ET)的萌芽可以追溯到1984年Cem Kaner写“Testing Computer Software”一书中所呈现的。比较明确的定义是James Bach 1995年给出的 “测试设计、执行、学习同时进行” 。这里的设计,应该是指测试用例的设计(测试的详细设计)。之后,距1984的23年之后(2007年),Cem Kaner在和众多的上下文驱动测试流派的测试人士(包括James Bach)讨论之后,给出比较全面的ET的定义:
详见: http://www.kaner.com/pdfs/ETat23.pdf
探索式测试不是测试方法,而是一种软件测试方式(最好不要写成“探索性测试”),各种测试方法、技术依旧可以应用于这种ET方式中。探索式测试是上下文驱动流派的具体实践、体现,强调软件研发过程中上下文(需求、进度、人员、风险...)是不断变化的,只有测试人员才能及时适应这种变化,对测试范围、思路和方法、软件的操作等做出调整,不断优化测试,尽快、尽早、尽可能多地发现软件缺陷,提高测试的有效性和效率。
探索式测试相对基于脚本的测试(Scripted testing,ST),只是在详细设计、执行等方面有不同的方式(如ET在头脑中设计,ST要写出详细的测试用例或开发出详细的测试脚本),但依旧需要测试计划、需要测试框架/架构的设计(这里的设计,可以理解为测试的概要设计,包括测试点、场景列表等设计),所以它不同于ad hoc testing(随机/自由的测试)。
敏捷测试参考:
https://myconnect.cn/2013/04/究竟什么是敏捷测试/
探索式测试参考: