【面试】功能测试面试的一些基本知识

1.测试用例设计方法

测试用例的常见设计方法分为:等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景图法等。

1.1 等价类

定义:等价类划分法是把所有可能输入的数据,即程序的输入域划分策划国内若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。此方法是一种重要的、常用的黑盒测试用例设计方法。

等价类划分有两种不同的情况:有效等价类和无效等价类。

  1. 有效等价类,是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明所规定的功能和性能。
  2. 无效等价类 指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。

举一个例子:

一个输入框需要输入3~20个字符串,
有效等价类就是:输入3~20个字符串
无效等价类就是:输入<3个字符串;输入>20个字符串

1.2 边界值

定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

与等价类区别:

  1. 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
  2. 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

举一个例子:

一个输入框需要输入3~20个字符串,对这个例子进行边界值分析法就是:
输入2、3、19、21个字符串的结果如何。

1.3 错误推断法

定义:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。
基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。

比如说在平时的工作中,文本框中数据为空,为0等都是使用了错误推断法编写的测试用例。

1.4 因果图法

因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

为什么使用因果图?

  • 等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
  • 如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。

因果图介绍

  • 4种符号分别表示了规格说明中向4种因果关系。

在这里插入图片描述

  • 因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。
  • C1表示原因,通常置于图的左部;e1表示结果,通常在图的右部。C1和e1均可取值0或1,0表示某状态不出现,1表示某状态出现。

因果图涉及的概念

  • 关系

    Ø 恒等:若c1是1,则e1也是1;否则e1为0。

    Ø 非:若c1是1,则e1是0;否则e1是1。

    Ø 或:若c1或c2或c3是1,则e1是1;否则e1为0。“或”可有任意个输入。

    Ø 与:若c1和c2都是1,则e1为1;否则e1为0。“与”也可有任意个输入。

  • 约束

    输入状态相互之间还可能存在某些依赖关系,称为约束。例如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。
    在这里插入图片描述

Ø 输入条件的约束有以下4类:

· E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。

· I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。

· O约束(唯一);a和b必须有一个,且仅有1个为1。

· R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。

Ø 输出条件约束类型

输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0。

采用因果图法设计测试用例的步骤:

  1. 分析软件规格说明描述中,那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件),并给每个原因和结果赋予一个标识符。

  2. 分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关系,根据这些关系,画出因果图。

  3. 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。

  4. 把因果图转换为判定表。

  5. 把判定表的每一列拿出来作为依据,设计测试用例。

举一个例子,自动售货机:

有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。

分析这一段说明,列出原因和结果

原因:

	1——售货机有零钱找

	2——投入1元硬币

	3——投入5角硬币

	4——押下橙汁按钮

	5——.押下啤酒按钮

结果:

	21——售货机〖零钱找完〗灯亮   

	22——退还1元硬币

	23——退还5角硬币             

	24——送出橙汁饮料

	25——送出啤酒饮料

画出因果图,如图所示。所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示处理的中间状态。中间结点:

	11—— 投入1元硬币且押下饮料按钮

    12——押下〖橙汁〗或〖啤酒〗的按钮

    13——应当找5角零钱并且售货机有零钱找

    14——钱已付清

在这里插入图片描述
转为判定表:
在这里插入图片描述

在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16列与第32列因什么动作也没做,也删去。最后可根据剩下的16列作为确定测试用例的依据。

1.5 判定表

定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。

优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表适合于处理这类问题。

判定表由四部分组成:

	条件桩(Condition Stub):列出了问题的所有条件。通常认为列出的条件的次序无关紧要。
	动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
	条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。
	动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。

规则及规则合并:

  1. 规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。显然判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。
  2. 化简:就是规则合并有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系。

判定表建立步骤:

	确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故2n种规则。
	列出所有的条件桩和动作桩
	填入条件项
	填入动作项,等到初始判定表
	简化,合并相似规则(相同动作)

举一个例子:
对功率大于50马力的机器,维修记录不全或已运行10以上的机器,应给予优先的维修处理,

  1. 确定规则的个数:这里有3个条件,每个条件有两个取值,故应有222=8种规则。
  2. 列出所有的条件桩和动作桩:
    在这里插入图片描述
  3. 填入条件项。可从最后1行条件项开始,逐行向上填满。
  4. 填入动作桩和动作项。这样便得到如下图的初始判定表
    在这里插入图片描述
  5. 初始判定表化简。合并相似规则后得到
    在这里插入图片描述
    除此之外还有一些其他的测试用例设计方法,但是这里只介绍以上常用的几个测试用例设计方法。
    这里有个博客可以参考一下:https://www.cnblogs.com/molrang/p/6420918.html

2. 测试基本步骤

在面试的时候经常会问到,给你一个杯子或者是一支笔之类的,你要怎么对其进行测试,写至少30个测试用例,
那么我们应该按照一定的框架或者说是思维模式对其进行测试:

2.1 界面测试

首先我们应该考虑对其进行界面测试,测试用例如下:
主要关注水杯外观、颜色、设计等方面

  • 外观是否完整
  • 外观是否舒适
  • 颜色搭配及使用是否让人感到舒适
  • 杯子外观大小是否适中
  • 杯子是否有图案,图案是否易磨损

2.2 功能测试

  • 主要关注水杯基本功能

  • 水杯是否可以正常装水

  • 水杯是否可以正常喝水

  • 水杯是否有盖子,盖子是否可以正常盖住

  • 水杯是否有保温功能,保温功能是否正常保温

  • 水杯是否会漏水,盖住盖子拧紧后是否会漏水

2.3 易用性测试

主要关注水杯使用是否方便

  • 水杯喝水时否方便

  • 水杯拿起放下是否方便

  • 水杯装水是否方便

  • 水杯携带是否方方便

  • 水杯是否有防滑功能

  • 水杯装有低温或者高温水时,是否会让手感到不适

2.4 性能测试:

  • 水杯装满水时,是否会露出来
  • 水杯最大使用次数
  • 水杯的保温性是否达到要求
  • 水杯的耐寒性是否达到要求
  • 水杯的耐热性是否达到要求
  • 水杯掉落时时,是否可以正常使用
  • 水杯长时间放置时,是否会发生泄露

2.5 兼容性测试:

主要关注水杯是否可以装其他液体,如果汁、汽油、酒精等

2.6 可移植性测试:

主要关注水杯放置环境等

  • 将水杯放在常温环境中,使用是否正常
  • 将水杯放在零下的环境中,使用是否正常
  • 将水杯放在高于正常温度的环境中,使用是否正常

2.7 安全性测试:

主要关注水杯是否释放有毒物质等

  • 当水杯装上水后,是否会产生有毒物质
  • 把水杯放在零下环境时,是否会产生有毒物质
  • 把水杯放在高温环境时,是否会产生有毒物质

其他的对其他东西的测试也可以按照以上的框架书写测试用例。

猜你喜欢

转载自blog.csdn.net/qq_34659777/article/details/89337226