之前讲了些ET在项目时间过程中是怎么来使用Heuristics,这期要说下ET过程在总体上的思考和怎么样来考虑覆盖率的问题。
回到之前所说的,当我们拿到自己的任务的时候,知道了自己需要测试哪些模块,就需要一个策略去进行ET测试,我们可以考虑如下:
学习这个产品:
—–思考这个产品存在一些重要的潜在的问题
—–思考怎么去探索这个产品才能找到这些问题
——一般情况下,思考怎么去探索这个产品,思考的方式有这些:
充分利用自己现有的资源:
—-包括:用户,文档信息,开发人员关系,同事,设备和工具,计划等
使用一些不同的技术的混合体:
—-包括:功能测试,域测试,压力测试,流程测试,场景测试,用户测试,风险测试,自动化测试,声明测试
利用自己实际能够做的东西:
—-包括:自己擅长的,最容易暴露问题的,自己的时间和精力
另外在做ET过程中,需要不断的变化我们的测试思路去攻击SUT,但一般我们会采用哪些方法或思路去变化我们的test idea呢?
微小的行为:其他的人或不用心的人改变了一点点思路,可能会产生新的test idea。
随机性:能够让你从那些有选择性的偏见中走出来
数据交换:同样的操作,在不同的数据库中,或不同的输入,会得到很不同的结果。
平台替换:推测类似的平台,但却不支持某种操作
时间/并发变化:同样的操作,改变依赖其发生的时间周期或并发的事件时,会得到很不同的结果。
场景变化:同样的功能,当我们在一个不同的流程或上下文环境下,会出现截然不同的操作方式。
状态污染: 一个复杂的系统,一般会有很多隐藏的变量,通过改变某些操作的顺序,级数,类型,会加快程序状态污染,从而发现隐藏问题。
敏感度和期望值:不同的测试人员可能对不同的因素,会有不同的敏感,且有看到不同的区域。同一个测试人员在不同的时间可看到不同的东西。
为了在复杂的系统中快速发现未期望的问题/持续使用才会出现难懂的问题,更多的问题,我们必须De-Focus:
1.从一个不同的状态开始(没有必要清除状态)
2.优先进行复杂且有条件的action
3.从模型的变化中产生test idea
4.质疑我们的试验流程和工具
5.试着去观察每个东西
6.宁愿使我们的测试很难通过,也不能太顾忌问题的重现难易程度
下面从一个模型中来说明怎么开始ET测试,选择一个有用的,有趣的,容易开始的点:
这里还是需要详细说明下:Knowledge,Analysis,Experiment,Testing Story.
Knowledge: Product Story; Technical Knowledge; Domain Knowledge; General knowledge.
Analysis: Risk; Coverage; Oracles; Resources/Constraints; Value/Cost; Bugs .
Experiment: Configure; Operate; Observe; Evaluate.
Testing Story: Test Plan/Report; Work Products; Status.
上面说了很多,之前也说过,但细心地就可以发现,我们还没说Coverage这个关键东西。在ET实践过程中,同样在理论形成过程中,Coverage永远是一个很大的问题,很多人都说ET最不能保证的就是Coverage,所以不敢轻易去尝试。那么ET在Coverage是不是就是这样不靠谱呢?事实上,不管你采用ST还是ET,对于Coverage都是很难完全保证的,但我们可以在Coverage上做些努力,下面说下ET在Coverage上是怎么考虑的。
我们说的Coverage一般就是Product coverage,同样也是这个被测产品的一部分。那么对于Product coverage又包括哪些方面的coverage:
第一个就是Structure,也就是产品的一个因素,对于这个Structural Coverage,我们到底是测试什么呢?我们到底要cover什么呢?我们要测试的就是这个产品时怎么构成的,我们要cover的就是构成这个产品的部分。我们以打印机产品为例,看看Structural Coverage到底要考虑什么:
——打印需要用到的文件
——实现打印功能的代码模块
——在这个模块里面的代码语句
——在这个模块里面的代码分支
可以看到这个时候我们关注的是产品的内部结构。
第二个就是Function,也是产品的一个因素,对于这个Functional Coverage,我们到底是测试什么呢?我们到底要cover什么呢?我们要测试的就是这个产品能够做什么?我们要cover的就是这个产品做得什么样。同样以打印机产品为例,看看Functional Coverage到底要考虑什么:
——打印,页设置,打印预览
——打印range,打印复制,zoom
——打印所有的,当前页,或指定的range
可以看到这个时候我们关注的是产品的功能。
第三个就是Data,也是产品的一个因素,对于这个Data Coverage,我们到底是测试什么呢?我们到底要cover什么呢?我们要测试的就是这个产品能够对数据能够做什么?我们要cover的就是这个产品能够处理什么样的数据。同样以打印机产品为例,看看Data Coverage到底要考虑什么:
——打印文档的类型
——文档里面的元素,文档的大小和结构
——关于怎么打印的数据(比如zoom factor; no. of copies)
可以看到这个时候我们关注的是产品使用过程中不同的数据处理。
第四个就是Platform,也是产品的一个因素,对于这个Platform Coverage,我们到底是测试什么呢?我们到底要cover什么呢?我们要测试的就是这个产品依赖什么才能使用?我们要cover的就是这个产品怎么处理不同的依赖的。同样以打印机产品为例,看看Platform Coverage到底要考虑什么: