测试方法原来不仅仅可以去发现bug,它还有如下这些作用 。

1.测试方法的分类

提到功能的测试方法你可能会想到有等价类划分,边界值 ,因果图等 。但是真正去发现bug的时候 ,使用到的方法远不止这些 ,比如你也可以使用发散测试,探索式测试等方法。使用这些方法同样能发现bug 。所以从这个维度来进行划分的话,我们将发现bug的方法划分成两大类 :

  • 设计测试用例的方法 :等价类,边界值 ,错误推测法 ,因果图 ,总结bug转化的方法等。

  • 直接执行时所用的方法(脱离用例所用的方法) : 发散测试 ,探索式测试 ,大数据测试,总结bug转化的方法等 。

从它们的分类上来看 不难发现,它们主要的区别体现在使用的阶段不同。设计测试用例的方法主要使用在设计阶段(提测前) ,而直接执行使用所使用的方法多在执行测试用例之后,往往会单独进行一轮这样的测试。

2.它们的侧重点

在设计测试用例时主要是依据需求 ,所以 ,设计用例的目的往往是考虑覆盖率 ,比如需求覆盖率 ,测试类型的覆盖率等 。而执行时由于已经脱离与需求和用例 ,往往执行的初衷就是为了发现bug ,所以它的特点就是发现更隐藏深入的bug 。你也可以这样理解 ,在横向的覆盖上(需求及功能覆盖),是测试用例的强项 ,而在纵向测试上(深度测试) ,往往在直接执行所用的方法更加擅长 。

另外一个不同是 ,在设计测试用例时,往往强调的是设计 ,因为系统功能不可能进行的全部的输入测试,所以它强调的是使用怎样的方法或方法组合来得到最佳覆盖 。使用的重点就是分类和选择 。比如如何进行分类划分 ,划分后又该如何选择合适数据 。设计测试用例可参考XXX 。

而执行时往往强调的是发散 ,所以你会发现常用的方法都跟发散有关 ,比如发散测试 ,探索式测试 ,交叉测试等。本质上都是在为了提供新思路, 因为往往每个人都是有思维局限 ,如果不换种方式测试你很难用现有的方法去发现问题了 。同样使用的重点是假设和想象,比如假设(如果)我这样操作,系统会进行怎样的反应呢 ? 想象下如果是用户的话会怎样操作该功能呢 ? 他会使用怎样的数据呢 ?等等。

这也是为什么我们要经常把设计测试用例和发散测试结合起来使用,在第一个迭代中,往往是第一轮只进行测试用例的执行,而第二轮就会安排各种各样的方式方法测试 。用例执行进行功能覆盖 ,而发散进行各种查漏补缺 ,深入挖掘等。

3.测试方法的作用

当然,在以上我们谈到的测试方法作用其实就是发现bug ,但测试方法它的作用远不止这个,具体作用下 :

  1. 测试方法发现bug ,只是列在这 ,具体不多说 。

  2. 测试方法可以监控测试过程的问题 ,比如我们经常会关注一个指标 ,通过设计测试用例发现的bug和发散测试发现的bug比率 。这个值都是在一个合理的范围内,太大或太小都可能说明在某一方面测试不足 。

  3. 评估产品质量 ,比如为了全方位的评估质量,我们除了评估需求覆盖率外 ,我们也要评估方法的覆盖率 ,也就是说方法是否覆盖的全面也是衡量产品质量好坏的一个主要指标 。

  4. bug和方法可以相互增加,属于系统中的增加回路 ,所以,方法越多,发现的bug越多,反过来发现bug越多,也能增强更多的测试方法 ,如下图。测试方法原来不仅仅可以去发现bug,它还有如下这些作用 。_第1张图片

你可能感兴趣的:(功能测试,功能测试,bug)