之前讲了些ET在项目时间过程中是怎么来使用Heuristics,这期要说下ET过程在总体上的思考和怎么样来考虑覆盖率的问题。
回到之前所说的,当我们拿到自己的任务的时候,知道了自己需要测试哪些模块,就需要一个策略去进行ET测试,我们可以考虑如下:
学习这个产品:
—— 思考这个产品存在一些重要的潜在的问题
—— 思考怎么去探索这个产品才能找到这些问题
—— 一般情况下,思考怎么去探索这个产品,思考的方式有这些:
充分利用自己现有的资源:
—— 包括:用户,文档信息,开发人员关系,同事,设备和工具,计划等
使用一些不同的技术的混合体:
—— 包括:功能测试,域测试,压力测试,流程测试,场景测试,用户测试,风险测试,自动化测试,声明测试
利用自己实际能够做的东西:
—— 包括:自己擅长的,最容易暴露问题的,自己的时间和精力
另外在做ET过程中,需要不断的变化我们的测试思路去攻击SUT,但一般我们会采用哪些方法或思路去变化我们的test idea呢?
微小的行为:其他的人或不用心的人改变了一点点思路,可能会产生新的test idea。
随机性:能够让你从那些有选择性的偏见中走出来
数据交换:同样的操作,在不同的数据库中,或不同的输入,会得到很不同的结果。
平台替换:推测类似的平台,但却不支持某种操作
时间/并发变化:同样的操作,改变依赖其发生的时间周期或并发的事件时,会得到很不同的结果。
场景变化:同样的功能,当我们在一个不同的流程或上下文环境下,会出现截然不同的操作方式。
状态污染:一个复杂的系统,一般会有很多隐藏的变量,通过改变某些操作的顺序,级数,类型,会加快程序状态污染,从而发现隐藏问题。
敏感度和期望值:不同的测试人员可能对不同的因素,会有不同的敏感,且有看到不同的区域。同一个测试人员在不同的时间可看到不同的东西。
为了在复杂的系统中快速发现未期望的问题/持续使用才会出现难懂的问题,更多的问题,我们必须De-Focus:
1.从一个不同的状态开始(没有必要清除状态)
2.优先进行复杂且有条件的action
3.从模型的变化中产生test idea
4.质疑我们的试验流程和工具
5.试着去观察每个东西
6.宁愿使我们的测试很难通过,也不能太顾忌问题的重现难易程度