#学习笔记五#测试用例的设计

软件测试中最重要的因素之一是设计和生成有效的测试用例,当然,完全的穷举测试是不现实的,只能尽量设计完全,保证软件中的错误尽可能少。
一.主要设计方法
测试用例设计方法描述
以上的方法,在实际编写测试用例的时候,最好是尽可能使用到所有的方面,避免某种方法遗漏掉错误。推荐是先用黑盒测试方法来设计测试用例,白盒测试根据情况设计补充测试用例。

二.黑盒测试
1.等价类划分:通过定义条件和错误类来帮助减少测试的工作量,这种划分假设某分类的一个代表值能够等价于属于该分类的所有值或者条件。等价类分为有效等价类和无效等价类。
1.1有效等价类
对于程序规格来说合理的、有意义的输入数据的集合,检验程序是否实现了规格说明中的功能和性能。

1.2无效等价类
不合理的、无意义的输入数据集合,验证程序处理意外数据的能力。

1.3划分方法
划分等价类时,可分为按区间划分、按数值划分、按数值集合划分、按限制条件和规则划分、按处理方式划分。除了应掌握必须使同类数据的处理过程及处理结果完全一致的大原则,可参考以下划分方法:
1) 输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类,如合格成绩取值范围为[60,100],则范围内取值为有效等价类,范围外<60和>100为无效等价类
2) 输入条件规定了输入值的集合或“必须如何”的情况下,可以确定一个有效等价类和一个无效等价类,如:规定数据库类型必须选择oracle,则选择oracle时为有效等价类,否则为无效等价类
3) 输入条件是一个布尔量的情况下,可以确定一个有效等价类和一个无效等价类
4) 输入条件规定必须遵守某种规则的情况下,可以确定一个有效等价类和若干个无效等价类(从不同角度违法规则),如:规定输入必须为非0正整数,则无效等价类可以分为空、0、负整数、小数、字符等
5) 在规定了输入数据的一组值(假定N个),并且程序要对每个输入值分别处理的情况下,可以确立N个有效等价类和一个无效等价类。如下列框选择“科目”,每个科目所显示的信息不同。
6) 在确知已划分的等价类中各元素在程序处理镇南关的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类

1.4等价类表
在确立了等价类后,可以建立等价类表,列出所有划分出的等价类
等价类表

1.5设计测试用例
然后从划分出的等价类中按以下原则设计测试用例:
1)为每个等价类规定一个唯一编号
2)设计一个新的测试用例,使其尽可能多得覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止
3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有无效等价类都被覆盖为止

2.边界值分析:测试等价类中每一个分类取边界值时的情况,既要考虑输入等价类,也要考虑输出等价类。
2.1边界值适用场景
边界值法多被应用于以上几个场景中:
输入(输出)条件规定了取值范围
输入(输出)条件规定了值的个数
程序规格说明书中提到的输入或输出是一个有序的集合
程序中使用了一个内部数据结构
边界值取值应当选取正好等于、刚刚大于最大边界值和刚刚小于最小边界值最为测试数据。

2.2边界值选择测试用例原则
1) 如果输入条件规定了值的范围,则应取刚达到这个范围的边界值、以及刚超越这个范围边界的值作为测试输入数据
2) 如果输入条件规定了值的个数,则选取最大个数、最小个数、比最大个数多一、比最小个数少一的数作为测试数据
3) 根据规格说明的每个输出条件,使用规则1)
4) 根据规格说明的每个输出条件,使用规则2)
5) 若输入域是有序集合,则选取集合的第一个元素和最后一个元素作为测试用例
6) 如果程序使用了一个内部数据结构,则应当选择内部数据结构上得边界值作为测试用例
7) 分析规格说明,找出其他可能的边界条件

3.因果图:通过生成布尔图来诠释测试用例的可能结果,使用该法旨在帮助选择那些有效地测试用例达到比较完整的测试用例设计效果。以下因果图部分内容为转载 https://blog.csdn.net/woshiyaoling/article/details/79394976,看书看得眼花缭乱,这篇文章写得比较容易理解。

一、适用场合

在一个界面中有多个控件,如果控件之间有组合关系或者限制关系,不同的控件输入组合会产生不同的输出结果。为了弄清不同的输入结果会产生怎样的输出结果,可以使用因果图或者判定表法。(一般适合测试组合数量较少的情况)

二、关于因果图的基础知识

1、因果图

因(原因):输入条件

果(结果):输出结果

因果图:用画图的方式表达输入条件和输出结果之间的关系。

2、因果图的图形符号

1)基本图形符号

   表示:因与果之间的关系

   1)恒等

   如果a=1,那么b=1

   如果a=0,那么b=0

2)与

与的含义:所有条件都为1(true)时结果才为1,如果有任何一个条件为0(false)(或者所有条件均为0)那么结果为0。(简化:1为1,有0为0

理解:如果多个输入条件都出现,结果才出现。

3)或

或的含义:所有条件都为0,结果为0(false),有任何一个条件为1(或者所有条件均为1)结果为1(true)。(简化:0为0,有1为1

4)非

含义:取反

如果a=1 那么b=0

如果a=0 那么b=1

2)限制关系图形符号

   表示:要么输入条(因)之间,要么输出结果(果)之间的限制关系

   1)互斥(E-exclude)

   含义:如果选只能选1个,但可以不选

2)唯一(O-Only)

含义:必须选,且只能选1个

唯一与互斥的区别:唯一是必须要选一个;互斥是可以不选,如果选只能选一个

3)包含(I-include)

含义:至少要选1个(可以多选但不能不选)

4)要求(R-required)

含义:如果a=1,则要求b必须是1,反之如果a=0时,b的值无所谓

5)屏蔽关系(M-masked)

含义:当a=1时,要求b必须为0;而当a=0时,b的值不一定

三、因果图法的测试步骤:

1、分析需求,找出所有的输入条件(因)

2、找出所有的输出结果(果),将因和果写到《判定表》中

3、找输入条件之间的组合和限制关系

4、明确不同的输入组合会产生什么对应的输出结果,画因果图,填写判定表(实际工作中可以只写判定表,省略因果图)

说明:

1)画因果图只是一种辅助分析工具,通过分析得到判定表,再通过判定表编写测试用例。但有时画因果图非常麻烦,影响测试效率,所有在应用数量了以后,可以直接写判定表,省略因果图。

2)判定表的缺点:输入条件之间的限制关系不好表达

解决办法:可以通过在判定表中添加备注的方式解决

3 ) 一般图形符合(表示因和果的关系):恒等、与、或、非

恒等和非对应1个输入条件;

与和或对应多个输入条件;

恒等 a=1 b=1;a=0 b=0

a=1 b=0 ;a=0 b=1

1则1,有0则0

0为0,有1为1

4 ) 限制关系图形符合:互斥(E)、唯一(O)、包含(I)、要求(R)、屏蔽(M)

互斥和唯一为单选,互斥可以不选,唯一必须

包含为多选,不能不选

要求:当a=1,要求b=1,当a=0,b不要求

屏蔽:当a=1,b=0;当a=0,b无所谓


4.错误推断法:依靠直觉和测试专家经验来定位程序可能出错的地方,并由此设计出更高效的测试用例。
错误推断法一般基于以往的测试经验和直觉,参照以往的软件系统出现的错误,推测程序中可能存在的各种错误,列出程序中所有可能有的错误和容易发生错误的情况,有针对性的设计测试用例。

三.白盒测试
1.语句覆盖:每条语句至少执行一次。
2.判定覆盖:每个判定的每个分支至少执行一次。
3.条件覆盖:每个判定的每个条件应取到各种可能的值。
4.判定/条件覆盖:同时满足判定覆盖条件覆盖。
5.条件组合覆盖:每个判定中各条件的每一种组合至少出现一次。
6.路径覆盖使程序中每一条可能的路径至少执行一次。

以下我举个例子
白盒测试设计用例举例
对于一个这样逻辑的程序它的代码大致如下

if(y>1&&z=0)
x=x/y;
if(y=2||x>1)
x=x+1;


1.语句覆盖每条语句至少执行一次。
  我们只需是每条语句执行一次即可 x=4,y=2,z=0
2.判定覆盖每个判定的每个分支至少执行一次。
  我们只需是每个分支执行一次即可
  假设第一个用例在两个判断都为真,第二个用例都为假
  x=4,y=2,z=0;x=1,y=1z=1
3.条件覆盖每个判定的每个条件应取到各种可能的值。
  只需让每个调剂出现一次,条件为y>1,z=0,y=2,x>1
  用例一让所有条件为真x=4,y=2,z=0;用例二是所有条件为假x=1,y=1z=1
4.判定/条件覆盖同时满足判定覆盖条件覆盖。
  x=4,y=2,z=0;x=1,y=1z=1
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
  可能组合为 真真,真假,假真,假假
  用例一x=4,y=2,z=0;用例二x=1,y=2,z=1;三(2,1,0);四(1,1,1)
6.路径覆盖使程序中每一条可能的路径至少执行一次。
  即两个判断组合为真真,真假,假真,假假
  一(4,2,0)二(1,1,0)三(4,2,1)四(1,1,1)
例子是转自https://www.cnblogs.com/shuhaoz/p/4419193.html

一、适用场合

在一个界面中有多个控件,如果控件之间有组合关系或者限制关系,不同的控件输入组合会产生不同的输出结果。为了弄清不同的输入结果会产生怎样的输出结果,可以使用因果图或者判定表法。(一般适合测试组合数量较少的情况)

二、关于因果图的基础知识

1、因果图

因(原因):输入条件

果(结果):输出结果

因果图:用画图的方式表达输入条件和输出结果之间的关系。

2、因果图的图形符号

1)基本图形符号

   表示:因与果之间的关系

   1)恒等

   如果a=1,那么b=1

   如果a=0,那么b=0

2)与

与的含义:所有条件都为1(true)时结果才为1,如果有任何一个条件为0(false)(或者所有条件均为0)那么结果为0。(简化:1为1,有0为0

理解:如果多个输入条件都出现,结果才出现。

3)或

或的含义:所有条件都为0,结果为0(false),有任何一个条件为1(或者所有条件均为1)结果为1(true)。(简化:0为0,有1为1

4)非

含义:取反

如果a=1 那么b=0

如果a=0 那么b=1

2)限制关系图形符号

   表示:要么输入条(因)之间,要么输出结果(果)之间的限制关系

   1)互斥(E-exclude)

   含义:如果选只能选1个,但可以不选

2)唯一(O-Only)

含义:必须选,且只能选1个

唯一与互斥的区别:唯一是必须要选一个;互斥是可以不选,如果选只能选一个

3)包含(I-include)

含义:至少要选1个(可以多选但不能不选)

4)要求(R-required)

含义:如果a=1,则要求b必须是1,反之如果a=0时,b的值无所谓

5)屏蔽关系(M-masked)

含义:当a=1时,要求b必须为0;而当a=0时,b的值不一定

三、因果图法的测试步骤:

1、分析需求,找出所有的输入条件(因)

2、找出所有的输出结果(果),将因和果写到《判定表》中

3、找输入条件之间的组合和限制关系

4、明确不同的输入组合会产生什么对应的输出结果,画因果图,填写判定表(实际工作中可以只写判定表,省略因果图)

说明:

1)画因果图只是一种辅助分析工具,通过分析得到判定表,再通过判定表编写测试用例。但有时画因果图非常麻烦,影响测试效率,所有在应用数量了以后,可以直接写判定表,省略因果图。

2)判定表的缺点:输入条件之间的限制关系不好表达

解决办法:可以通过在判定表中添加备注的方式解决

3 ) 一般图形符合(表示因和果的关系):恒等、与、或、非

恒等和非对应1个输入条件;

与和或对应多个输入条件;

恒等 a=1 b=1;a=0 b=0

a=1 b=0 ;a=0 b=1

1则1,有0则0

0为0,有1为1

4 ) 限制关系图形符合:互斥(E)、唯一(O)、包含(I)、要求(R)、屏蔽(M)

互斥和唯一为单选,互斥可以不选,唯一必须

包含为多选,不能不选

要求:当a=1,要求b=1,当a=0,b不要求

屏蔽:当a=1,b=0;当a=0,b无所谓


4.错误推断法:依靠直觉和测试专家经验来定位程序可能出错的地方,并由此设计出更高效的测试用例。
错误推断法一般基于以往的测试经验和直觉,参照以往的软件系统出现的错误,推测程序中可能存在的各种错误,列出程序中所有可能有的错误和容易发生错误的情况,有针对性的设计测试用例。

三.白盒测试
1.语句覆盖:每条语句至少执行一次。
2.判定覆盖:每个判定的每个分支至少执行一次。
3.条件覆盖:每个判定的每个条件应取到各种可能的值。
4.判定/条件覆盖:同时满足判定覆盖条件覆盖。
5.条件组合覆盖:每个判定中各条件的每一种组合至少出现一次。
6.路径覆盖使程序中每一条可能的路径至少执行一次。

以下我举个例子
白盒测试设计用例举例
对于一个这样逻辑的程序它的代码大致如下

if(y>1&&z=0)
x=x/y;
if(y=2||x>1)
x=x+1;


1.语句覆盖每条语句至少执行一次。
  我们只需是每条语句执行一次即可 x=4,y=2,z=0
2.判定覆盖每个判定的每个分支至少执行一次。
  我们只需是每个分支执行一次即可
  假设第一个用例在两个判断都为真,第二个用例都为假
  x=4,y=2,z=0;x=1,y=1z=1
3.条件覆盖每个判定的每个条件应取到各种可能的值。
  只需让每个调剂出现一次,条件为y>1,z=0,y=2,x>1
  用例一让所有条件为真x=4,y=2,z=0;用例二是所有条件为假x=1,y=1z=1
4.判定/条件覆盖同时满足判定覆盖条件覆盖。
  x=4,y=2,z=0;x=1,y=1z=1
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
  可能组合为 真真,真假,假真,假假
  用例一x=4,y=2,z=0;用例二x=1,y=2,z=1;三(2,1,0);四(1,1,1)
6.路径覆盖使程序中每一条可能的路径至少执行一次。
  即两个判断组合为真真,真假,假真,假假
  一(4,2,0)二(1,1,0)三(4,2,1)四(1,1,1)
例子是转自https://www.cnblogs.com/shuhaoz/p/4419193.html

猜你喜欢

转载自blog.csdn.net/qq_36404042/article/details/80952455