常见用例设计方法整理(等价类、边界值)

 

等价类

定义:1、等价:如果多个输入在程序中处理方式(路径)相同,则认为这些输入是等价的,测试一个即可。(前提:测试不能穷举)

         2、输入:分为两类,有效输入(可以保存)、无效输入(不可保存)

         3、结合:有效等价类、无效等价类

满足规则:只需寻找一个全部满足规则的(有效等价类)

不满足规则:需分开,每条不满足条件的举出一个,方便定位错误(无效等价类)

规则的几种情况:

1 若规则是布尔式的

有效、无效分别取一个 一个真,一个假

2. 若规则是区

有效的取一个 无效的,在小于区间的取一个,大于区间的取一个,空或零取一个

3. 规则是集合:

有效取一个 无效的在集合外取一个

4. 规则是必须满足的一个条件:

对无效,要细分无效(先试试其他有效等价类,再试试全部等价类全都不满足)

例:邮箱注册,注册名只能以小写字母开头,设计无效等价类时,先试试其他有效等价类,如大写字母、数字等,再试试其他有效全部都不满足的情况

有效等价类:程序规格说明有意义,合理的输入数据

无效等价类:程序规格说明无意义,不合理的输入数据

ASCII

   7位   表示27=128个字符   每个字符存储占用1个字节

   分类:不可见字符

             控制字符:LF(换行)、CR(回车)

             通信字符

             NULL(空)

         可见字符

             空格

             数字

             字母(大写、小写)

             符号

练习

1.1年龄注册

   注册页面要求输入年龄,限制:1150期间的正整数

   1、需求分析—找出全部的输入条件

      1)、正整数

      2)、[1,150]

       注意:分解的过程中,条件之间不用组合(完全独立),在设计有效用例输入的时候再考虑组合(一对多)

  2、绘制等价类表格

条件

有效等价类

有效编号

无效等价类

无效编号

正整数

>1

A01

数字

小数

B01

负数

B02

0

B03

非数字

空(NULL

B04

空格

B05

字母

B06

符号

B07

[1,150]

[1,150]

A02

<1

B08

>150

B09

3、设计测试用例输入

原则:有效输入—尽可能多去覆盖有效等价类  (一对多)

      无效输入---只能覆盖一个无效等价类    (一对一)

                目的:A、出现问题可以更好的去定位

                      B、有可能第一个无效处理后,后续无效值被漏测

输入序号

有效输入值

覆盖有效等价类

输入序号

无效输入值

覆盖无效等价类

1

100

A01A02

2

1.8

B01

3

-9

B02

4

0

B03B08

5

空(NULL

B04

6

空格

B05

7

W

B06

8

@

B07

9

200

B09

1.2.年龄注册

   某保险公司注册页面要求输入年龄,限制:1150期间的正整数,其中:

[1,10]   适用的费率  10%

[11,50]  适用的费率  30%

[51,150] 适用的费率  80%

条件

有效等价类

有效编号

无效等价类

无效编号

正整数

>1

A01

数字

小数

B01

负数

B02

0

B03

非数字

空(NULL

B04

空格

B05

字母

B06

符号

B07

[1,150]

[1,10]

A02

<1

B08

[11,50]

A03

>150

[51,150]

A04

输入序号

有效输入值

覆盖有效等价类

输入序号

无效输入值

覆盖无效等价类

1

5

A01A02

4

1.8

B01

2

30

A01A03

5

-9

B02

3

100

A01A04

6

0

B03B08

7

空(NULL

B04

8

空格

B05

9

W

B06

10

@

B07

11

200

B09

1.3.扩充

考虑全角和半角问题(GB231

    其中,半角占1个字节

          全角占2个字节

字符集

    1ASCII

2GB2312 -> GB18030   一个汉字占2个字节

   BIG5(繁体)

3ISO Unicode (UTF-16)  -> UTF-8(变长存储)  一个汉字可能占3个字节

条件

有效等价类

有效编号

无效等价类

无效编号

正整数

>1(半角)

A01

0

B03

>1(全角)

A02

半角字符

空(NULL

B04

空格

B05

字母

B06

符号

B07

全角字符

空格

B08

字母

B09

符号

B10

汉字

(字符集)

GB-2312

B11

BIG-5

B12

[1,150]

[1,150]

A03

<1

B13

>150

B14

分解粒度:根据功能的重要性决定(用例图----执行者角色,考虑用户的关注功能)

          根据成本、时间决定

取消负数、小数的原因:

     1、前提:在编辑框内输入年龄,程序在接收编辑框的内容时,一般以字符(或字符串)的形式接收,再根据需要进行类型转换,如年龄,需要转换为整型

     2、小数中的“小数点”和负数中的“负号”都认为是符号,不允许保存

边界值

取值(5个):上点、内点、离点

1、上点、内点取值与区间的开闭无关

2、离点和上点互为有效

   作用:(有序、有范围)等价类的补充

   补充:考虑数据类型的边界

          int 类型  4个字节    32bit   取值范围[-231,  231-1]

上点:边界上的点

内点:区间内的点

离点:离边界值最近且与上点不属于同一等价类的点(对于小数,没有离点,不用取)

规则的几种情况:

1. 规则是区间:

按上点、内点、离点取

2. 规则是取值的个数:

取最小、最大、中间个数

3.规则是a~z序列:

az

4.规则是集合:

取一个集合内的,取一个集合外的

(0,20)上点是0,20 离点是1,19    [0,20]上点是0,20 离点是-1,21

若规则是下拉菜单:建议每个下拉值都选择一个

2.1.年龄

条件

有效等价类

有效边界值

有效编号

无效等价类

无效边界值

无效编号

正整数

>=1

上点:1

A01

数字

小数

B01

内点:100

A02

负数

B02

离点:0

0

B03

非数字

空(NULL

B04

空格

B05

大写字母

上点:A

B06

上点:Z

内点:M

符号

离点:@

B07

离点:[

[1,150]

[1,150]

上点:1

A03

离点:

0

B08

上点:150

A04

离点:

151

B09

内点:100

A05

有效用例输入:1 100150

2.2.用户名注册

1、测试需求分析

1、内容:字母、数字、

2、长度:[6,18]

3、约束:字母开头

          字母或数字结尾

          不允许重名

          不允许使用保留字

              自动去除首尾空格

2、等价类划分

条件

有效等价类

有效编号

无效等价类

无效编号

内容

字母

大写字母

A01

符号(除下划线)

B01

小写字母

A02

NULL()

B02

数字

[0,9]

A03

空格

B03

下划线

下划线

A04

GB2312

B04

BIG5

B05

长度

[6,18]

[6,18]

A05

<6

B06

>18

B07

约束

字母开头

大写字母开头

A06

数字开头

B08

小写字母开头

A07

下划线开头

B09

符号(非下划线)开头

B10

汉字开头

B11

字母或数字结尾

大写字母结尾

A08

下划线结尾

B12

小写字母结尾

A09

符号(非下划线)结尾

B13

数字结尾

A10

汉字结尾

B13

不允许重名

不重名

A11

重名

B15

去除首尾空格

A12

不允许使用保留字

不使用

A13

使用保留字

B16

3、用例设计

序号

有效输入

有效边界值

序号

无效输入

无效边界值

1

(当前系统无AAb_4)

AAbb_4

A01A02A04A03

A05A06A10

A11A13

5

abc@a

B01

2

(当前系统无AAb_4)

aAbcvb_A

A01A02A04A03

A05A07A08

A11A13

………..

3

(当前系统无AAb_4)

aA555b_b

A01A02A04A03

A05A07A09

A11A13

(当前系统存在aaf5bc)

(空格)aaf5bc(空格)

B15

4

(当前系统无aaf5bc)

(空格)aaf5bc(空格)

A12

Administrator

B16

2.3.变量命名

在某一版的编程语言中对变量名称规格作如下规定:变量名称是由字母开头的,后跟字母或者数字的任意组合构成,并且区分字母大小写。编译器能够区分的有效字符数为8个,并且变量名称必须先声明,后使用,在同一声明语句中,变量名称至少必须有一个。

1、测试需求分析

   内容:字母、数字

   长度:[1,8]

   约束:字母开头

         大小写敏感

         先声明后使用

         变量的个数[1,?]  (需要和需求人员沟通)

         在同一作用域中不允许重名

         不能使用关键字

2、等价类划分

3、确定边界值

4、设计用例输入

2.4.进销存价格

代码实现:

if (isNumberString(document.form2.tichen.value,"1234567890.")!=1)

{

alert("价格只能为数字!");

return false;

}

根据代码的实现,价格编辑框只接受键盘的“数字键”和“小数点”共11个字符

等价类

条件

有效等价类

无效等价类

内容

数字

字母

字母、符号处理方式(路径)相同,认为都是等价的

小数点

约束

小数点最多有1

>1个小数点

2.5.Windows文件命名

目录         目录长度   文件最大长度     目录+文件最大长度

C:             3         255个           = 258

C:ABCD        7         251个           =258

C:ABCDAAAA   12        246个           =258

根目录:   255

非根目录: 254    (文件夹最小长度为1

1、测试需求分析

内容:非“/:*?"<>|”的字符

长度: 根目录:   255

非根目录: 254    (文件夹最小长度为1

约束:同目录下不能重名(去除首尾空格)

      不同扩展名使用不同的图标

      不能为空

总结

   1、适用范围:针对程序的输入

   2、使用步骤

        1)、测试需求分析,找出全部条件(显示、隐士)(条件之间不能交叉或者组合,到设计用例的时候再考虑多条件的组合)

        2)、划分等价类

            划分依据:相同的处理方式(路径)

            分类:有效等价类、无效等价类

        3)、使用边界值补充(有序、有范围的)等价类

            内容:上点、离点、内点

            要求:上点、内点与区间开闭无关,离点和上点互为有效

            分类:将边界值分为有效边界和无效边界,填入等价类表格

        4)、对每个等价类进行唯一的编号

        5)、设计用例的输入

            原则:有效等价类,一对多

                  无效等价类,一对一

   3、优点:对输入的考虑充分

   4、缺点:如果不清楚系统的实现方式,造成大量的冗余用例(黑盒方法共有)

            对于多输入的组合不太适宜

规则的几种情况:

1 .若规则是布尔式的

有效、无效分别取一个 一个真,一个假

2. 若规则是区间

有效的取一个 无效的,在小于区间的取一个,大于区间的取一个,空或零取一个

3. 规则是集合:

有效取一个 无效的在集合外取一个

4. 规则是必须满足的一个条件:

对无效,要细分无效(先试试其他有效等价类,再试试全部等价类全都不满足)

例:邮箱注册,注册名只能以小写字母开头,设计无效等价类时,先试试其他有效等价类,如大写字母、数字等,再试试其他有效全部都不满足的情况

有效等价类:程序规格说明有意义,合理的输入数据

无效等价类:程序规格说明无意义,不合理的输入数据

边界值

上点:边界上的点

内点:区间内的点

离点:离边界值最近且与上点不属于同一等价类的点(对于小数,没有离点,不用取)

规则的几种情况:

1. 规则是区间:

按上点、内点、离点取

2. 规则是取值的个数:

取最小、最大、中间个数

3.规则是a~z序列:

az

4.规则是集合:

取一个集合内的,取一个集合外的

(0,20)上点是0,20 离点是1,19    [0,20]上点是0,20 离点是-1,21

若规则是下拉菜单:建议每个下拉值都选择一个

原文地址:https://www.cnblogs.com/bifeng/p/10874956.html