代码改变世界

四步测试设计法—摘自《测试架构师修炼之道》

2021-04-01 22:39  第二个卿老师  阅读(765)  评论(0编辑  收藏  举报

如何做好功能测试,测试设计占很大比重。想提高团队的整体测试水平,是不是有一套测试设计流程可供参考?后面在网上看到了这套四步法设计,觉得很好,这里记录下


测试设计是什么

测试设计之前就是测试分析,常说的需求评审其实也包括了测试分析,如何进行测试分析,可以依据ISO/IEC 25010的八大质量特性。

实际测试分析的时候,根据测试对象,颗粒度可以适当缩小,提高针对性。

  • 比如测试APP,现在会考虑应用的版本覆盖安装,对应互用性
  • 针对强更版本,由于iOS有审核空挡期,要考虑前后版本的兼容性
  • 。。。

测试分析就是把被测对象按照测试方法分析成测试点,而把测试点加工成测试用例,就是测试设计。

比如上面APP版本覆盖安装就是测试点,而测试用例可以是在用户登录条件下,1.1.0版本的华为的安卓覆盖,也可以是未登录的条件下iPhone12的iOS覆盖等等,因为安卓可以分不同厂商,iOS也可以分不同机型。

经历过用例评审的都知道,虽然测试点一样,但很多情况下自己写的用例与他人的用例大不相同?

测试设计的创造性。

从测试点到测试设计,我们会加工测试点,对它们进行组合、拆分、选择测试数据等等,这是个“创造性”的过程,100个测试者,就会有100个不同的思路。

有没有一套测试设计方法,能够对测试团队在测试设计中起到很好的指引作用,并能帮助我们输出优质的测试用例呢?

四步测试设计法

四步测试设计法是一套通过四个步骤来完成测试设计的方法。其中包含一些模型,对每一种模型,都有适合这个模型的测试设计方法,起到了很好的测试设计指引的作用。

四步测试设计法的四个关键步骤:

第一步:建模

根据测试点的特征,为测试点选择一个适合后续测试设计的模型,可大致分为以下四类。

  1. “流程”    ——>>      对“流程”类,可以通过绘制“流程图”来建立测试模型。

  2. “参数”    ——>>      对“参数”类,可以通过“输入输出表”来建立测试模型。

  3. “数据”    ——>>      对“数据”类,可以通过“等价类分析表”来建立测试模型。

  4. “组合”    ——>>      对“组合”类,可以通过“因子表”来建立测试模型。

第二步:设计基础测试用例

在这个步骤中,我们会对已经建立好的测试模型,来设计一些基础测试用例,覆盖这个测试模型。

为什么我们称此时的测试用例为基础测试用例呢?测试用例和基础测试用例最大的差别在于,测试用例确定了测试条件(类似“在××情况下,进行××的测试”的描述)和测试数据(就是输入的“参数值”或“数值”),而基础测试用例只确定了测试条件。

由于此时我们关心的仅是对模型的覆盖,得到的是一些测试条件,因此我们称此时的测试用例是基础测试用例。

第三步:补充数据

在这个步骤中,我们为基础测试用例来确定测试输入,补充测试数据,这时基础测试用例就升级成真正的测试用例了。

对有些测试设计方法来说,可以在第二步覆盖模型的同时确定测试数据,这时得到的就是测试用例,当然这样我们也不再需要进行第三步了。

第四步:扩展

模型不是银弹,不能解决测试设计的所有问题。我们还需要根据经验,特别是对系统哪些地方容易发生缺陷的认识,补充一些测试用例,增加系统的有效性。

如:新老版本的兼容性测试,性能测试,安全测试等。

下面我们来说说测试点如何分类

测试点分类

流程类测试点

流程类测试点,拥有流程方面的一些特征。具体来说,我们将测试点分成一些步骤,会因为输入的不同而进行不同的处理,全部分析完成后,能够将测试点绘成如下图所示的流程图。

有时候,一个测试点可能只能绘出一个流程片段,我们可以把与此相关的测试点放到一起,使其能够表示一个较为完整的流程。

参数类测试点

参数类的测试点有以下两个重要的特点:

  • "参数值"的个数是有限的,可以通过遍历的方式来测试覆盖到。
  • 系统会对不同的“参数值”作出不同的处理或响应。

如果测试点中主要包含的是一些参数,能够概括成和下图所示类似的样子(“A”表示参数,“a1”“a2”“a3”表示“A”的取值),就可以认为这个测试点是参数类的。

有时候,一个测试点中可能会有好几个参数,如左下图所示。甚至“A”和“B”之间可能也会存在一些依赖关系,如“A要选择a1,B才能配置”“如果A选择了a1,B就必须选择b1”等。如果这样的关系存在于不同的测试点中,如右下图所示,“A”和“B”分别存在于“测试点1”和“测试点2”中,在做“测试设计”的时候,我们就需要把“测试点1”和“测试点2”放在一起来考虑。

                             

数据类测试点

和“参数”类相比,“数据”类的特点是:

  • 数据的取值是一个范围,通常不能用遍历的方式来测试覆盖。
  • 系统对允许输入的“数据”作出的处理或响应往往是一样的。

如果测试点中主要包含的是一些数据,能够概括成和下图所示类似的样子(“A”表示参数,“amin”“amax”表示“A”的取值范围),就可以认为这个测试点是数据类的。

一个数据类的测试点中,也可能会有好几个数据,如左下图所示。但是数据类的“A”和“B”之间是没有关系的,换句话说,我们可以将这个包含“A”和“B”的“测试点”直接拆为两个“测试点”,然后分别对测试点1和测试点2进行分析,如右下图所示。如果我们发现“A”和“B”之间存在关联,我们就需要通过等价类和边界值的分析,将它们转换为参数类的测试点,再进行测试。

                             

组合类测试点

测试点是可以“组合”的。在测试设计时,我们可以把流程类、数据类和参数类的测试点组合在一起进行测试设计。为了和前面的测试点类型对应,我们称这种需要放在一起进行测试设计的测试点为“组合”类测试点。

组合类的测试点可以描述为如下图所示的流程,和单纯的流程类相比,它可能有多个“输入”,这多个“输入”可能为参数,也可能为数据。