现在对于探索性测试,大家很多的看法都存在一点误区,都认为探索性测试不会控制和管理测试进度,大家在网上可以找到很多关于探索性测试的介绍,很少介绍到探索性测试应用在项目过程中式任何管理的,没有涉及到核心,那么很多人都关心这个ET到底在项目中怎么来做呢?还有一个就是之前说了ET(探索性测试,后续统称为ET)很难去控制和管理整个进度,那到底有没有什么好的办法去管理ET呢?下面我们就去看看国外是怎么做的吧。
首先要说的是这些问题在ET发展过程中,ET的那些大师们已经想好了怎么在项目实践过程中应用ET,也有一些比较成熟的解决办法。
1.1 实践中ST和ET的使用模型
这里需要说明的是怎么应用ET在项目过程中,可以从不同的维度去考虑:
一个是ET和ST的结合方式,和测试人员具体做ET还是ST或都做无关
另一个是team的组成方式,从测试的专业性角度去分隔开ET tester和ST tester
看下面的模型更易理解:
(备注:ST就是Scripted based Testing, 就是我们目前所做的基于测试用例进行测试的测试方法; Tester A是专门做ST Team的ST测试人员,Tester B是专门做ET Team的ET测试人员)
从模型的演变过程可以看到,其实我们最终目标是没有ST tester和ET tester之分的,所有人都是标准的ET tester。国外ET的大师们确实带了好几个ET team,在项目测试过程中已经达到了模型四的境界,可想ET是可以主导整个项目测试的,其进度控制和质量管理都在实践中有了自己方法。
1.2 ET team的管理方式
在ET team里面又存在2个不同的管理方式:Delegation和Participation,这个区分的角度是从ET team lead在整个项目ET过程中的作用来看的。
Delegation:
(1) Test lead指定需要测试的charters, 不参与具体测试任务
(2) ET tester完成这些charters并且report back
(3) 对于一些问题和测试报告召开定期会议
Participation:
(1) Test lead在项目测试过程中与ET tester一样,参与某些测试任务
(2) Lead可以实时的根据测试质量情况制定最后的测试策略
(3) Lead可以持续的了解他所想要的了解的team的任何情况
这里还可以让大家知道的是相比较单个人进行ET测试,在一个ET team中大家工作在一起,在同一时间对于同一个SUT(Software Under Test)进行ET,经常会出现很多更好的测试idea。 所有还有一种组合ET team的方式是让测试人员组成一对且让他们在同一台计算机上进行测试。另一种就是其中一个测试人员进行测试,傍边有多个测试人员观察且做记录,通过问测试执行人员不同的问题产出更多的测试idea,这里有一个好处就是测试执行人员不必担心发现的bug难以重现,因为傍边的测试人员会做记录和分析,这样测试执行人员可以不必分心去继续自己的测试。还有一个好处就是如果一旦这个测试人员思维过于开阔,去测试很多非当前需要测试的模块时,傍边的测试人员可以给予及时提醒。但其缺点就是更多资源消耗在同一个功能模块上,成本上有待商榷。
1.3 ET过程中的任务
下面我们说说具体的ET tester是怎么完成这些Charters的,还有怎么管理和控制他们完成的这些Charters。Charter的定义:ET过程中使用到的一个非常清晰地任务列表,指出了要测试什么,怎么测试(强调策略,不是详细测试步骤),要寻找什么样的bug,有哪些风险,要去检查什么文档等。
在测试执行之前,ET lead和Senior ET tester参与制定所有的charters,并根据实际情况从charters中分离出所有需要测试的sessions(一个基本的测试工作单元,一般对应1-2个UC)。这里我们可以看到ET tester所有进行的ET是基于session的,那么我们使用的管理方法就叫Session-Based Test Management(Jon Bach的首创)。
这里需要说下制定这些session的一些基本的原则:
(1) 这些Session必须是chartered(与测试任务绑定的)
(2) 这些Session必须是uninterrupted(独立的功能,且执行时不受外界的干扰)
(3) 这些Session必须是reviewable(其Session sheet可以被第三方review)
(4) 每个Session一般不超过90 min, 其大致范围从45 min(short session)到120 min(Long session)
首先我们来分解下ET过程中,大概花的时间的分配:
(Opportunity 指的是Opportunity testing,就是执行其他的session的功能)
这里每个ET tester完成一个Session过后,必须记录session sheet,下面是主要的因素:
(1) Session Charter (charter名称,和session名称)
(2) Tester name(s)
(3) Data and time started
(4) TBS metrics (包括3个方面的effort统计:测试设计和执行,bug分析和报告,session setup)
(5) Data files
(6) Test notes(ET 过程中的随时记录的一些东西,比如test ideas, risk list 等)
(7) Issues(ET 过程中的问题和疑惑)
(8) Bugs
1.4 ET中管理Session
下面我们继续ET在项目中的管理(这里说的是上述的模型三或四),大致如下在:
Lead针对SUT做出Charters和Sessions
Lead针对所有sessions和资源来做出Test plan和测试策略(包含对SUT的攻击策略)
设计阶段ET tester对于自己负责的sessions进行test idea development
设计阶段ET tester还需要对自己负责的session所对应的oracles(可以准确任务这个问题是个bug的所有信息,包括文档) 进行梳理
测试执行的时候ET tester根据之前的test idea list来进行测试,根据SUT本身的response并采用Heuristics的方法产出更多的test idea(这部分的test idea 不是必要记录下来)