之前讲了些ET在项目时间过程中是如果来管理的,那么ET tester在拿到自己的任务的时候,自己是怎么来进行ET的呢?
这里我们先考虑2个状态,一个是ET tester的状态,哪些状态呢?
(1)这个ET tester的测试经验怎么样,丰富还是欠缺?
(2)这个ET tester 对AUT的行业经验怎么样,熟悉还是了解?
(3)这个ET tester对AUT本身的功能需求了解怎么样,熟悉还是了解?
不管上面的状态怎么样,在压力下,ET tester采用正确的方法进行ET,往往会取得好的效果的。
那么我们就来分析下ET的一些思维变化吧:
首先这个ET tester要非常清楚自己的状态,也就是自己所拥有的Knowledge,具体包括这些:
(1) 该产品的知识
(2) 测试技术相关的知识
(3) 该产品所在的行业知识
(4) 基本的计算机基本知识
为啥要去check这些知识呢?这样为了方便我们在做ET的时候,能够快速和有方法的确定发现的问题是否是个Bug。
国外有很多这方面的总结,怎么去找到这些证据去确定发现的问题是不是个Bug,这些东西就叫Oracle,使用这个方法来找到:the HICCUPPS(F) heuristic:
(1) History: 目前所做的产品的版本是否与过去的版本是一致的。
(2) Image:这个产品是否与项目组织所想要的image是一致的。
(3) Comparable Products:这个产品是否与相类似的产品是一致的。
(4) Claims:这个产品是否与重要的人所说的那样是一致的。
(5) User’s Expectations: 这个产品是否与用户所想要的是一致的。
(6) Product:这个产品的每个元素是否与同个产品里面的可比较的元素一致。
(7) Purpose: 这个产品是否与其目的(明确的或含糊的)一致。
(8) Statues: 这个产品是否与可适用的法律一致。
(9) Familiarity: 这个产品与任何通用的问题的形式是不一致的。
尽管我们有很多方式去壮大我们的oracles,但这需要很多成本的,所以我们在做ET 过程中,会遇到:
(1)没有oracle可以使我们提前确定这肯定是个正确或错误的结果。
(2)没有一个单独的oracle可以说明某个功能在所有时间或所有情况下都是正确工作的。
(3)有些功能看上去是正常工作的,但事实上在某些情况下会失败而且会使得所有的oracles都是不对的。
可以看到我们在积累我们的oracles时,肯定会遇到很多oracle问题,我们该如何来解决呢?
(1)忽略这个问题(也许这个信息的价值从成本角度考虑不值得)
(2)简单化这个问题(需要可测试性,从需求源头开始)
(3)转移这个问题(并列测试,从类似问题下手)
这里面很多人都可以看到那就是我们怎么去做测试,怎么快速的产出test idea。
ET的特点是我们做测试的时候,没有测试用例指导,学习SUT,和测试设计和测试执行在同一段时间内完成。那怎么去做测试执行呢?我们拿到开发提交的系统后,Lead分配给我们的任务后,该从哪里下手呢?
ET大师James Bach说过,执行ET就像对一个人进行面试一样,那这样就少不了要问问题,该怎么问问题?通过面试者的回答怎样快速提出更好的问题?显然这里面也需要一定的能力,包括如下:
(1)提出有用的问题
(2)观察什么事情在发生
(3)描述自己能够感觉到的东西
(4)对于自己的所知进行批判性的思考
(5)组织和管理业务上的规则
(6)能够设计假设和进行试验
(7)尽管已经知道了仍然进行思考
(8)分析其他人的思考方式
(9)根据因果关系进行推导
好了,现在ET tester都对自己的knowledge有所了解了,接下来就是对于自己的任务,哪个UC,哪个模块进行分析了,怎么分析,分析啥呢?
(1)风险
(2)覆盖率
(3)Oracles
(4)资源或限制
(5)价值或成本
(6)Bugs
这些分析都做好了,那我们就可以开始进行测试了,也就是对我们的SUT进行试验,就像“question<—>answer”的循环一样。
那我们是怎么来进行试验的,具体包括如下几个过程:
(1)配置
—安装产品
—为测试执行准备测试数据和工具
—确认产品是个足够干净的起始状态
—根据自己的任务准备一个有激发性的问题
(2)操作
—通过问题对产品进行试探性的输入来使用这个产品
—使用正确的数据和正确的业务顺序来完成正确功能的练习
(3)观察
—收集关于这个产品是如何工作(正确或错误的输入)的信息来评价产品是否如此工作
(4)评估
—应用之前得到的oracles来发现bugs
之前也说过了,我们的ET是学习和测试设计和测试执行是同一时间完成的,那么我们的测试就是Testing to learn。这边有几个步骤:
(1)形成一个关于产品功能的模型
(2)去了解这个产品是想实现什么样的功能
(3)列出那些你需要测试的产品的因素
(4)查看那些一致性的关系且尝试多个不一样的oracle
(5)产生测试数据
(6)考虑其可测试性和尝试不同的有用的工具
(7)尝试多种不同的方法去试验
(8)报告你所发现的bug
ET tester在试验的过程中,如果遇到比较困惑的问题该怎么呢?
(2)保存当时的状态
(3)不断重复执行自己的action
(4)返回到一个已确认过的状态
(5)优先使用OFAT方式(一次只考虑一个因素)
(6)做出精确的观察