1、等价类

案例

登录功能

用户名和密码登录(以在线考试系统为例)

年龄字段输入

2、网站注册页面年龄输入要求:某网站前台用户注册页面,其中有年龄字段的输入,要求输入1-150之间的正整数;

输入条件

有效等价类

取值

编号

无效等价类

取值

编号

[1-150]

[1-150]

100

A01

整数

正整数

>150

200

B01

负整数

(-∞,0)

-9

B02

0

0

0

B03

小数

1.1

B04

字母

大写

A-Z

Z

B05

小写

a-z

r

B06

汉字

简体

B07

繁体

B08

特殊符号

B09

练习题

三角形

 输入三角形三边应为正整数,分别构成非三角形、一般三角形、等腰三角形和等边三角形。

1、需求分析:

  1. 正整数
  2. 两边之和大于第三边
  3. 两边相等
  4. 三边相等

2、等价类设计

条件

有效等价类

编号

无效等价类

编号

正整数

A边正整数

A01

小数

B01

0

B02

B03

字符

B04

B边正整数

A02

小数

B05

0

B06

B07

字符

B08

C边正整数

A03

小数

B09

0

B10

B11

字符

B12

两边之和大于第三边

A+b>c

A04

A+b<c

B13

A+b=c

B14

A+c>b

A05

A+c<b

B15

A+c=b

B16

B+c>a

A06

B+c<a

B17

B+c=a

B18

两边相等

A=b

A07

B=c

A08

A=c

A09

三边相等

A=b=c

A10

3、用例提取:

编号

有效输入

覆盖有效等价类

编号

无效输入

覆盖无效等价类

1

3   4   5

A01、A02、A03

A04、A05、A06

1

.。。

。。。

2

3   3    4

A01、A02、A03

A07

3

4   3    3

A01、A02、A03

A08

4

3   4    3

A01、A02、A03

A09

5

3   3    3

A01、A02、A03

A10

18

。。。

。。。

2、边界值

案例

登录功能

实例同等价类

年龄字段输入

实例同等价类,边界值设计如下

输入条件

有效等价类

取值

编号

无效等价类

取值

编号

[1-150]

[1-150]

内点

100

A1

整数

正整数

>150

151

B01

上点

1

A2

150

A3

负整数

(-∞,0)

-9

B02

0

0

0

B03

小数

1.1

B04

字母

大写

A-Z

A、Z

B05

小写

a-z

a、z

B06

汉字

简体

B07

繁体

B08

特殊符号

@、[、’、{

B09

练习题

保险费率计算

某保险网站的前台计算保费页面,其中有年龄字段的输入,不同的年龄段会使用不同的费率计算标准。

其中:

   01-15岁,费率为:10%

   16-20岁,费率为:15%

   21-50岁,费率为:20%

   51-70岁,费率为:25%

输入条件

有效等价类

取值

编号

无效等价类

取值

编号

[1-70]

[1-15]

内点

10

A1

整数

正整数

>70

71

B01

上点

1

A2

15

A3

[16-20]

内点

19

A4

负整数

(-∞,0)

-1

B02

上点

16

A5

20

A6

[21-50]

内点

30

A7

0

0

0

B03

上点

21

A8

50

A9

[51-70]

内点

60

A10

小数

1.1

B04

上点

51

A11

70

A12

字母

大写

A-Z

A

B05

Z

B06

小写

a-z

a

B07

z

B08

汉字

简体

B09

繁体

B10

特殊符号

@

B11

[

B12

B13

{

B14

等价类与边界值综合练习题

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

输入条件:

  1、变量名称是由字母开头                        6、变量名称不能重复

  2、字母或者数字的组合                          7、字母大小写敏感

  3、有效字符数为8个                            8、不能使用关键字

  4、变量名称必须先声明

  5、声明语句中变量名称至少必须有一个

用例设计方法

输入条件

有效等价类

取值

编号

无效等价类

取值

编号

1、变量名称是由字母开头

字母开头

大写开头

A-Z

A

A01

非字母开头

数字开头

0-9

0

B01

Z

A02

9

B02

H

A03

小写开头

a-z

a

A04

其他字符开头

@

B03

[

B04

z

A05

{

B05

`

B06

y

A06

2、字母或者数字的组合

字母

大写

A-Z

A

A07

其他符号

@

B07

Z

A08

{

B08

H

A09

[

B09

小写

a-z

a

A10

z

A11

B10

y

A12

数字

0-9

0

A14

9

A15

7

A16

3、有效字符数为8个

[1-8]

[1-8]

1

A17

0

0

B11

8

A18

>8

9

B12

6

A19

4、变量名称必须先声明

先声明

A20

不声明使用

B13

先使用后声明

B14

5、声明变量至少为一个

声明变量为一个

A21

无变量声明

B15

声明变量为多个

A22

6、变量名称不能重复

变量名称不重复

A23

变量名称重复

B16

7、字母大小写敏感

字母大小写敏感

AbD

A24

8、不能使用关键字

不使用关键字

abc

A25

使用关键字

int

B17

2、126邮箱注册

 

输入条件

有效等价类

编号

无效等价类

编号

字符长度

[6-18]

1

0

9

1<len<6

10

>18

11

空格

12

字符组成

字母

2

数字

13

特殊符号

14

汉字

15

字母、数字结合

3

字母、数字、下划线结合

4

下划线

16

数字下划线结合

17

字母、下划线结合

5

以数字开头

18

字符格式

字母开头

6

以下划线开头

19

字母结尾

7

以下划线结尾

20

数字结尾

8

3、判定表

案例

读书选择

1、如果觉得疲倦并且对书的内容感兴趣,同时书中的内容让你糊涂的话,回到本章重读

2、如果觉得疲倦并且对书的内容感兴趣,同时书中的内容不让你糊涂,继续读下去

3、不觉得疲倦并且对书的内容感兴趣,但是书中的内容让你糊涂的话,回到本章重读

4、如果觉得疲倦并且对书中的内容不感兴趣,同时书中的内容不让你糊涂,停止阅读,请休息

5、如果觉得疲倦并且对书的内容不感兴趣,并且书中的内容让你糊涂,请停止阅读,休息

6、不疲倦,对书的内容感兴趣,书中的内容不糊涂,继续读下去

7、不疲倦,不感兴趣,书中内容糊涂,跳到下一章去读

8、不疲倦,不感兴趣,书中内容不糊涂,跳到下一章去读

1、需求分析

    条件:是否疲倦、是否感兴趣、是否糊涂

    结果:本章重读、继续读、停止阅读、跳到下一章

  1. 绘制判定表(条件的组合 23=8个)

1

2

3

4

5

6

7

8

条件

是否疲倦

0

0

0

0

1

1

1

1

是否感兴趣

0

0

1

1

0

0

1

1

是否糊涂

0

1

0

1

0

1

0

1

结果

本章重读

X

X

继续读

X

X

停止阅读

X

X

跳到下一章

X

X

优点:组合充分,没有遗漏

缺点:用例数量随条件的递增而过多(2n  n:条件的个数)

      条件的类型:布尔

3、合并判定表

1

2

3

4

1、2

3、7

4、5

6、8

条件

是否疲倦

0

1

是否感兴趣

0

1

1

是否糊涂

0

1

1

结果

本章重读

X

继续读

X

停止阅读

X

跳到下一章

X

   原则:结果相同

         条件有一个不同

   风险:产生分支或者路径的遗漏

练习题

密码修改

若需修改密码,系统验证旧密码正确,两个新密码相同,则更新密码,旧密码即失效,其他修改项也生效,并提示“用户信息修改成功”; 若旧密码不正确,则提示“用户密码错”,系统将不修改个人信息;若两个新密码不同,则提示“新密码与验证新密码不同”,系统将不修改个人信息。

若只修改密码外其他信息,则不需输入两个新密码,系统只验证旧密码正确,就成功更改个人信息,并提示“用户信息修改成功”;如果系统验证旧密码输入不正确,则提示“用户密码错”。

  1. 需求分析:

   条件:旧密码是否正确、新密码是否为空、新密码是否相同、是否修改其他信息

   结果:信息修改成功、用户密码错、密码不同

2、界面原型:

 

  1. 实现的功能:
  1. 只修改密码
  2. 同时修改密码和其他信息
  3. 只修改其他信息(如果考虑密码为空的情况,改功能无法实现)

――解决办法:密码不允许为空,如果密码输入为空,代表不修改密码

3、绘制判定表

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

条件

旧密码是否正确

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

新密码是否为空

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

新密码是否相同

0

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

是否修改其他信息

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

结果

信息修改成功

用户密码错

密码不同

4、因果图

案例

自动售货机

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

  1. 需求分析

条件:有零钱、选橙汁、选啤酒、投5角、投1元

结果:红灯亮、出橙汁、出啤酒、找5角、退1元

2、因果图

 

练习题

字母判定

第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下(只有这个时候才)进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。

  1. 需求分析:

条件:第一列是A、第一列是B、第二列是数字

结果:修改文件、提示L、提示M

2、绘制判定表

1

2

3

4

5

6

7

8

条件

第一列是A

0

0

0

0

1

1

1

1

第一列是B

0

0

1

1

0

0

1

1

第二列是数字

0

1

0

1

0

1

0

1

结果

修改文件

提示L

提示M

无效

无效

3、绘制判定表

  4、去除无效列

5、状态迁移

案例

飞机售票系统

1、客户向航空公司打电话预定机票—>此时机票信息处于“完成”状态

2、顾客支付了机票费用后—>机票信息就变为“已支付”状态

3、旅行当天到达机场后,拿到机票后—>机票信息就变为“已出票”状态

4、登机检票后—>机票信息就变为“已使用”状态

5、在登上飞机之前任何时间可以取消自己的订票信息,如果已经支付了机票的费用,则还可以得到退款,取消后—>订票信息处于“已被取消”状态

1、绘制“状态迁移图”

 2、绘制“状态迁移树”

 

2.生成测试用例

每个树枝形成一个测试用例(4个)

练习题

QC中缺陷跟踪流程

以缺陷管理跟踪流程为例,使用状态迁移方法设计测试用例。

 1、状态迁移图

  1. 状态迁移树

 

4、用例(6个)

6、正交试验

案例

环境搭建

假设一个WEB站点,该站点有大量的服务器和操作系统,并且有许多具有各种插件的浏览器浏览:

Web浏览器

Netscape

IE

Firefox

插件

RealPlayer

Flash

PDF Reader

服务器

IIS

Tomcat

Weblogic

操作系统

WinXP

Win2000

Win2003

L4-2-3:

   4-实验次数(用例的个数)

   2-水平(每个条件取值的个数)

   3-因素(条件的个数)

L9-3-4:

所在列

1

2

3

4

因素

Web浏览器

插件

服务器

操作系统

实验结果

实验1

Netscape

RealPlayer

IIS

WinXP

实验2

Netscape

Flash

Tomcat

Win2000

实验3

Netscape

PDF Reader

Weblogic

Win2003

实验4

IE

RealPlayer

Tomcat

Win2003

实验5

IE

Flash

Weblogic

WinXP

实验6

IE

PDF Reader

IIS

Win2000

实验7

Firefox

RealPlayer

Weblogic

Win2000

实验8

Firefox

Flash

IIS

Win2003

实验9

Firefox

PDF Reader

Tomcat

WinXP

特点:

1、任何一列:每个值出现次数相同

  1. 任何两列:每组值对出现次数相同
  2. 每个条件的每个值都和其他条件的所有值成对组合过(两两组合 - 充分+平均)

练习题

赶集网组合查询

 

方法2:

Web浏览器

Netscape

IE

Firefox

插件

RealPlayer

Flash

PDF Reader

BaiDu

服务器

IIS

Tomcat

Weblogic

操作系统

WinXP

Win2003

case

WEB浏览器

插件

服务器

操作系统

1

IE6.5

Adobe PDF

IIS

Windows2000

2

Firefox3.0

Falsh

Apche

Windows2000

3

IE6.5

Adobe PDF

Apche

Windows 2003

4

Firefox3.0

Falsh

IIS

Windows 2003

5

Firefox3.0

Adobe PDF

Tomcat

Linux

6

IE6.5

Falsh

Tomcat

Linux

7

IE6.5

RealPlayer

IIS

Windows XP

8

Firefox3.0

Baidu

Apche

Windows XP

9

Firefox3.0

RealPlayer

Apche

Windows 98

10

IE6.5

Baidu

IIS

Windows 98

11

IE6.5

RealPlayer

Tomcat

Windows2000

12

Firefox3.0

Baidu

Tomcat

Windows 2003

13

Firefox3.0

RealPlayer

IIS

Linux

14

IE6.5

Baidu

Apche

Linux

15

Firefox3.0

Adobe PDF

Tomcat

Windows XP

16

IE6.5

Falsh

Tomcat

Windows 98

17

Firefox3.0

Baidu

IIS

Windows2000

18

IE6.5

RealPlayer

Apche

Windows 2003

19

IE6.5

Falsh

IIS

Windows XP

20

Firefox3.0

Adobe PDF

IIS

Windows 98

7、流程分析

案例

嵌入式发送子流程

在某嵌入式系统中,将待发送的数据打包成符合CAN协议的帧格式后,便可写入发送缓站区,并自动发送。该发送子程序的流程为:

  1、首先进入发送子程序

  2、系统判断是否有空闲发送缓冲区,如果没有则返回,启动发送失败消息。

  3、如果有空闲缓冲区,将数据包写入空闲发送缓冲区

  4、系统判断是否写入成功,如果不成功则返回,启动发送失败消息

  5、如果写入成功,则启动发送命令

  6、返回启动发送成功消息

1、绘制活动图(流程图):

 

2、生成测试用例(借鉴单元测试-分支覆盖、路径覆盖)

分支覆盖(100%):A-C-E-F  (基本流)

                  A-B       (备选流)

                  A-C-D    (备选流)

路径覆盖(100%):A-C-E-F

                  A-B

                  A-C-D

练习题

字母判定

第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下(只有这个时候才)进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。

用例1: 第一列是AorB - 第二列是数字 - 修改文件

         第一列是A - 第二列是数字 - 修改文件            1   -  5

         第一列是B - 第二列是数字 - 修改文件            2   -  3

用例2: 第一列不是AorB  - 提示L                         3   -  1

用例3: 第一列是AorB - 第二轮不是数字 - 提示M

         第一列是A - 第二轮不是数字 - 提示M            4   - 4

         第一列是B - 第二轮不是数字 - 提示M            5   - 2

1

2

3

4

5

6

7

8

条件

第一列是A

0

0

0

0

1

1

1

1

第一列是B

0

0

1

1

0

0

1

1

第二列是数字

0

1

0

1

0

1

0

1

结果

修改文件

X

X

提示L

X

X

提示M

X

X

无效

无效

1

2

3

4

5

1、2

3

4

5

6

条件

第一列是A

0

0

0

1

1

第一列是B

0

1

1

0

0

第二列是数字

0

1

0

1

结果

修改文件

X

X

提示L

X

提示M

X

X

8、错误推测

单引号用例

Sql语句

<%option explicit%>

<!--#include file="inc/conn.asp"-->

<!--#include file="inc/function.asp"-->

<%

dim strAdminName,strAdminPwd,strErr

strErr = ""

strAdminName = Trim(request.form("adminname"))

strAdminPwd = Trim(request.form("adminpwd"))

if G_CONN.execute("select count(*) as reccount from admin where adminname='" & strAdminName & "' and adminpwd='" & strAdminPwd & "'")("reccount") = 0 then

strErr = "<li>用户名或密码错误!</li>"

showErrMsg(strErr)

else

response.cookies("aoyi")("adminname") = strAdminName

end if

call closeConn()

if strErr = "" then

response.redirect "admin_index.asp"

end if

%>

9、异常分析法

Qq登录时网络断开后是否能够自动重连

10、输入域覆盖

输入超过字段存储类型的值,如short的int型,输入数值32768

11、输出域覆盖

金额计算时,商品单价*总数的金额值超过总金额所定义的数据范围。

如总金额定义为short int型,商品单价为327.68,可购买最大数为100,则327.68*100=32768,该值超过short int所能存储的范围。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐