等价类,边界值,判定图实例

案例实战—直角三角形

试用等价类划分、边界值分析和因果图加判定表驱动法为三角形问题中的直角三角形设计测试用例。假定三边边长a、b和c均为1到100之间的正整数,其中整数的要求通过数据类型控制。直角三角形问题满足以下规则:

  • 当三边中任意两边边长之和小于等于第三边,则输出“非三角形“;
  • 当其中两边边长的平方和等于第三边的平方,则输出“直角三角形”;
  • 当任意两边边长的平方和都不等于第三边的平方,则输出“一般三角形”。
  • 当三边中任意一边边长小于1或者大于100,则给出“输入无效”的提示信息。

要求如下:

  • ① 等价类划分法中需分析输入域和输出域得到等价类,并设计覆盖弱健壮等价类的测试用例。
  • ② 边界值分析法在等价类划分的基础上考虑输入域和输出域的边界情况,补充测试用例。
  • ③ 判定表驱动法需分析程序的规格说明,列出原因和结果,画出因果图,并将因果图转换为判定表,设计测试用例。
  • ④ 运行待测程序,将设计的测试用例通过界面实现输入,记录实际输出,并给出测试结果。如果预期输出与实际输出相匹配,则测试结果为Passed,否则,测试结果为Failed。
  • ⑤ 通过应用实例,简单总结归纳等价类划分、边界值分析、判定表驱动等黑盒测试技术在测试用例设计和测试执行方面的优缺点及适用情况。

参考答案:

(1) 等价类划分

分析输入域得到的等价类如表1所示。

表1 直角三角形问题输入域等价类表

null 有效等价类 编号 无效等价类 编号
取值范围 1≤a≤100 1 a<1 11
      a>100 12
  1≤b≤100 2 b<1 13
      b>100 14
  1≤c≤100 3 c<1 15
      c>100 16
构成一般三角形 a+b>c 4 a+b≤c 17
  b+c>a 5 b+c≤a 18
  c+a>b 6 a+c≤b 19
  a2+b2≠c2且b2+c2≠a2且c2+a2≠b2 7    
构成直角三角形 a2+b2=c2 8    
  b2+c2=a2 9    
  c2+a2=b2 10    

直角三角形问题包括四种可能的输出,分别为直角三角形、一般三角形、非三角形和输入无效,其中输入域已覆盖输入无效的情况。分析输出域得到的等价类如表2所示,覆盖弱健壮等价类的测试用例如表3所示。

表2 直角三角形问题等价类表

测试用例编号 a b c 预期输出 实际输出 覆盖等价类 测试结果
T1 40 50 60 一般三角形 一般三角形 1、2、3、4、5、6、7 Passed
T2 30 40 50 直角三角形 一般三角形 1、2、3、4、5、6、8 Failed
T3 50 30 40 直角三角形 一般三角形 1、2、3、4、5、6、9 Failed
T4 40 50 30 直角三角形 一般三角形 1、2、3、4、5、6、10 Failed
T5 0 50 50 输入无效 输入无效 11、2、3 Passed
T6 101 50 50 输入无效 输入无效 12、2、3 Passed
T7 50 0 50 输入无效 输入无效 1、13、3 Passed
T8 50 101 50 输入无效 输入无效 1、14、3 passed
T9 50 50 0 输入无效 输入无效 1、2、15 Passed
T10 50 50 101 输入无效 输入无效 1、2、16 Passed
T11 20 30 60 非三角形 非三角形 1、2、3、17 Passed
T12 60 20 30 非三角形 非三角形 1、2、3、18 Passed
T13 30 60 20 非三角形 非三角形 1、2、3、19 Passed

(2) 边界值分析

按照健壮性边界值分析的取值方法,对每个输入分别取7个值,即为min-、min、min+、nom、max-、max和max+,如表4所示。

表4 直角三角形问题输入域健壮性边界值分析

输入域 等价类 边界值
a 1≤a≤100 01、2、50、99、100、101
b 1≤b≤100 0、1、2、50、99、100、101
c 1≤c≤100 0、1、2、50、900、101

输出域边界值分析如表5所示。

表5 直角三角形问题输出域边界值分析

输出域 等价类 边界值
输入无效 a+b≤c a+b=c-1、a+b=c、a+b=c+1
  b+c≤a b+c=a-1、b+c=a、b+c=a+1
  c+a≤b c+a=b-1、c+a=b、c+a=b+1

综合考虑输入域和输出域的边界值,测试用例设计如表6所示。

表6 直角三角形问题边界值测试用例

测试用例编号 a b c 预期输出 实际输出 测试结果
T1 0 50 50 输入无效 输入无效 Passed
T2 1 50 50 一般三角形 输入无效 Failed
T3 2 50 50 一般三角形 一般三角形 Passed
T4 99 50 50 一般三角形 一般三角形 Passed
T5 100 50 50 非三角形 输入无效 Failed
T6 101 50 50 输入无效 输入无效 Passed
T7 50 0 50 输入无效 输入无效 Passed
T8 50 1 50 一般三角形 输入无效 Failed
T9 50 2 50 一般三角形 一般三角形 Passed
T10 50 99 50 一般三角形 一般三角形 Passed
T11 50 100 50 非三角形 输入无效 Failed
T12 50 101 50 输入无效 输入无效 Passed
T13 50 50 0 输入无效 输入无效 Passed
T14 50 50 1 一般三角形 输入无效 Failed
T15 50 50 2 一般三角形 一般三角形 Passed
T16 50 50 99 一般三角形 一般三角形 Passed
T17 50 50 100 非三角形 输入无效 Failed
T18 50 50 101 输入无效 输入无效 Passed
T19 30 40 50 直角三角形 一般三角形 Failed

表6 直角三角形问题边界值测试用例

(3) 判定表驱动

①分析程序的规格说明,列出原因和结果。

原因: 
C1—1≤a 
C2—a≤100 
C3—1≤b 
C4—b≤100 
C5—1≤c 
C6—c≤100 
C7—a+b>c 
C8—b+c>a 
C9—c+a>b 
C10—a2+b2=c2 
C11—b2+c2=a2 
C12—c2+a2=b2 
结果: 
E1—输入无效 
E2—非三角形 
E3—一般三角形 
E4—直角三角形 
中间结果: 
11—输入有效 
12—符合三角形一般规则 
13—可以构成三角形 
14—符合直角三角形一般规则

② 找出原因与结果间的因果关系、原因与原因间的约束关系,画出如图1所示的因果图。 
图1 直角三角形问题因果图 
 
③ 将因果图转换成如表7所示的判定表。 
表7 直角三角形问题判定表 

④ 根据判定表,设计如表8所示的测试用例,给出输入数据和预期输出。 
表8直角三角形问题判定表驱动测试用例 

概念:

(1) 等价类划分法

等价类划分就是把所有输入数据划分为若干部分,从每一部分选取少数有代表性的数据作为测试用例,代表性数据等同于该类中的其他值。

通过考虑输入和输出数据可以把等价类划分为有效等价类和无效等价类,所谓的有效等价类就是对于程序规格说明而言,是合理的,有意义的输入数据构成的集合;所谓的无效等价类就是对于程序规格而言,是不合理的,无意义的输入数据构成的集合。

设计测试用例时要同时考虑有效等价类和无效等价类设计,在设计的时候要注意不要产生冗余或者设计不充分。

在根据等价类设计测试用例的时候,针对有效等价类,设计的测试用例应该尽可能多的覆盖有效测试用例;针对无效等价类,设计的每条测试用例只可以覆盖唯一的无效等价类。

(2) 边界值分析法

因为边界往往很容易发生错误,所以边界值分析选择等价类边界设计测试测试用例,是一种补充等价类划分法的测试用例设计方法。

边界值分析法是等价类分析法的补充,所有测试阶段都可以使用。

边界值使用范围广,更复杂,找到的缺陷也更多

等价分类法相比边界值分析法取值比较随意,等价类是在各等价类允许的值域内任意去的,边界值是在等价类边界值附近选取的。

边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

(3) 因果图

边界值分析法和等价类划分法都着重考虑了输入条件但没有考虑输入条件之间的关系,因果图方法是充分考虑了输入情况的各种组合及输入条件之间的相互制约关系的一种方法。

用因果图生成测试用例的基本步骤

(1) 分析软件规格说明,找出哪些是原因,哪些是结果,并给每个原因和结果赋予一个标识符;

(2) 根据软件规格说明,找出原因和原因,原因和结果之间的对应关系,根据这些关系,画出因果图;

(3) 根据环境,在因果图上用一些标识符表明约束和现在条件表明一些特殊情况,如互斥

(4) 把因果图转换成判定表

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

原因和结果之间的关系有,恒等,非,与,或

原因与原因之间的关系有,互斥,包含,唯一,要求,屏蔽

以上三种方法都属于黑盒测试。

2.软件测试根据是否实际执行代码可以分为静态测试和动态测试,其中动态测试又包含了白盒测试,黑盒测试和灰盒测试。逻辑覆盖是以程序内部的逻辑结构为基础的测试方法,属于白盒测试,包括语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,路径覆盖,其严谨程度是逐步增强的。

总结:

  如果测试的软件结构较为复杂,系统较为庞大,测试重点在流程而非功能上,因果图和判定表比重较大。如果主要测试对象是一些数据流的输入输出,那边界值的比重较大,个人经验来看,等价类是非常通用的,边界值是对等价类的一个补充。

 
时间: 2024-10-07 08:40:17

等价类,边界值,判定图实例的相关文章

Matlab plotyy画双纵坐标图实例

Matlab plotyy画双纵坐标图实例 x = 0:0.01:20;y1 = 200*exp(-0.05*x).*sin(x);y2 = 0.8*exp(-0.5*x).*sin(10*x);[AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); set(AX(1),'XColor','k','YColor','b');set(AX(2),'XColor','k','YColor','r'); HH1=get(AX(1),'Ylabel');set(HH1,'Strin

UMLl类图实例

下面是类图的实例(好像大话设计中有): UML中类图实例 接口:空心圆+直线(唐老鸭类实现了‘讲人话’):依赖:虚线+箭头(动物和空气的关系):关联:实线+箭头(企鹅需要知道气候才迁移):聚合:空心四边形+实线+箭头(雁群和大雁的关系):合成/组合:实心四边形+实线+箭头(鸟和翅膀的关系):泛化/继承:空心三角形+实线(动物和鸟的继承关系):实现:空心三角形+虚线(实现大雁飞翔的接口): UML类图 解释UML类图: 1.      首先看“动物”矩形框,它代表一个类.该类图分为三层,第一层显示

Extjs 4 生成饼状图实例

前台: //远程读取设备去向图表数据 var Store1 = new Ext.data.Store({ <span style="white-space:pre"> </span>proxy:{ <span style="white-space:pre"> </span>type:'ajax', <span style="white-space:pre"> </span>u

CSS网页切图实例教程下

CSS网页切图实例教程下 7.导航的制作,是一个典型的ULLI列表.我们先写出HTML代码,而在我们导航列表之间有一个竖线隔开. <ul> <li><a href="#">divcss8.com首页</a>|</li> <li><a href="#">关于捷福</a>|</li> <li><a href="#">产品

05- 测试方法之等价类 边界值 错误猜测

黑盒测试特点 实际上测试情况有无穷多个,合法输入,不合法输入,完全测试不可能. 等价类划分法: 1. 2. 3. 等价类表 ---------- 测试用例表 ---------- 根据等价类生成测试用例 根据等价类表,然后从划分出的等价类中按照以下三个原则设计测试用例. 1.为每一个等价类规定一个唯一的标号. 2.设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,知道所有的有效等价类被覆盖为止. 3.设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效的等价类,重复这一

JFreeChart绘制折线图实例

JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库.只要下载JFreeChart的类库,导入项目即可使用.下面是一个绘制折线图的实例.各处注释都已经写的比较清晰了. 1 package com.mvc.controller; 2 3 import java.util.HashMap; 4 import java.util.List; 5 import java.util.Map; 6 import javax.servlet.http.HttpServletRequest; 7

Jquery焦点图实例

对于很多建站的朋友来讲,焦点图并不陌生,一般的企业站,门户站都会用到焦点图.我们平时在写html代码的时候,很多人为了省时省力,对于焦点图都是在网上下载一些人家写好的代码,直接套上去即可,很多时候我自己也是这样来的.因为一个焦点图有html布局,css样式调试和最关键的 javascript语句的编写.这些都是一个很麻烦的过程. 今天我就以实例讲解,手把手教你如何写Jquery焦点图.Jquery是js封装的框架,让js的语法变得简单,很多知名网站都在用这个框架.这里星仔为了语法的简单,让大部分

UML类图实例分析

登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是否正确,如果输入正确则进入主界面(MainForm),否则提示“输入错误”. 根据以上描述绘制初始类图. 考虑到系统扩展性,在本实例中引入了抽象数据访问接口IUserDAO,再将具体数据访问对象注入到业务逻辑对象中,可通过配置文件(如XML文件)等方式来实现,将具体的数据访问类类名存储在配置文件中,

echartsjs 饼图、柱状图、折线图实例

  <!doctype html>   <html lang="en">   <head>   <meta charset="utf-8" />   <title>图表选项卡</title>   <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.