因果图设计法

因果图法是一种利用图解法分析输人的各种组合情况的测试方法,它考虑了输入条件的各种组合及输入条件之间的相互制约关系,并考虑输出情况。例如,某一软件要求输人地址,具体到市区,如“北京→昌平区”“天津→南开区”,其中第2个输人受到第1个输入的约束,输人的地区只能在输人的城市中选择,否则地址就是无效的。像这样多个输人之间有相互制约关系,就无法使用等价类划分法和边界值法设计测试用例。因果图法就是为了解决多个输人之间的作用关系而产生的测试用例设计方法。

下面介绍如何使用因果图展示多个输人和输出之间的关系,并且学习如何通过因果图法设计测试用例。

1. 因果图

因果图需要处理输入之间的作用关系,还要考虑输出情况,因此它包含了复杂的逻辑关系,这些复杂的逻辑关系通堂用图示来展现,这些图示就是因果图。

因果图使用一些简单的逻辑符号和直线将程序的因(输人)与果(输出)连接起来,一般原因用ci表示,结果用ei表示,ci与ei可以取值“0”或“1”,其中“0”表示状态不出现,“1”表示状态出现。

ci与ei,之间有恒等、非(~)、或(V)、与(A)4种关系,如图下图所示。

上图中展示了因果图的4种关系,每种关系的具体含义如下所示。

(1)恒等:在恒等关系中,要求程序有1个输人和1个输出,输出与输入保持一致。若ci为1,则ei也为1;若ci为0,则ei,也为0。

(2)非:非使用符号“~”表示,在这种关系中,要求程序有1个输人和1个输出,输出是输入的取反。若ci为1,则ei为0;若ci为0,则ei为1。

(3)或:或使用符号“∨”表示,或关系可以有任意个输入,只要这些输入中有一个为则输出为1,否则输出为0。

(4)与:与使用符号“∧”表示,与关系也可以有任意个输入,但只有这些输入全部为输出才能为1,否则输出为0。

在软件测试中,如果程序有多个输入,那么除了输入与输出之间的作用关系之外,这些输人之间往往也会存在某些依赖关系,某些输入条件本身不能同时出现,某一种输人可能会影响其他输人。例如,某一软件用于统计体检信息,在输人个人信息时,性别只能输入男或女,这两种输人不能同时存在,而且如果输入性别为女,那么体检项就会受到限制。这些依赖关系在软件测试中称为“约束”,约束的类别可分为4种:E(Exclusive,异)、I(at least one,或)、O(one and only one,唯一)、R(Requires,要求),在因果图中,用特定的符号表明这些约束关系,如图所示。

上图展示了多个输入之间的约束符号,这些约束关系的含义具体如下所示。

(1) E(异):a和b中最多只能有一个为1,即α和b不能同时为1。

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

(3)O(唯一):a和b有且仅有一个为1。

(4) R(要求):a和b必须保持一致,即a为1时,b也必须为1;a为0时,b也必须为0。

上面这4种都是关于输入条件的约束。除了输入条件,输出条件也会相互约束,输出条件的约束只有一种——M(Mask,强制),在因果图中,使用特定的符号表示输出条件之间的强制约束关系,如下图所示。

在输出条件的强制约束关系中,如果a为1,则b强制为0;如果a为0,则b强制为1。

2. 因果图法设计测试用例的步骤

使用因果图法设计测试用例需要经过以下几个步骤。

(1)分析程序规格说明书描述内容,确定程序的输入与输出,即确定“原因”和“结果”。

(2)分析得出输入与输入之间、输入与输出之间的对应关系,将这些输入与输出之间的关系使用因果图表示出来。

(3)由于语法与环境的限制,有些输入与输入之间、输入与输出之间的组合情况是不可能出现的,对于这种情况,使用符号标记它们之间的限制或约束关系。

(4)将因果图转换为决策表。决策表将在下一小节介绍。

(5)根据决策表设计测试用例。

因果图法考虑了输入情况的各种组合以及各种输入情况之间的相互制约关系,可以帮助测试人员按照一定的步骤高效率地开发测试用例。此外,因果图是由自然语言规格说明转化成形式语言规格说明的一种严格方法,它能够发现规格说明书中存在的不完整性和二义性,帮助开发人员完善产品的规格说明。

怎么画因果图?因果图绘图步骤详解相关推荐

  1. python画漏斗图_python绘制漏斗图步骤详解

    pyecharts中的Funnel函数可以绘制漏斗图,自动根据数据大小生成由大到小自上而下排列的一个漏斗样的图形. 1.导入Funnel模块. from pyecharts import Funnel ...

  2. python画三维平面-Python 绘制酷炫的三维图步骤详解

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  3. python移动平均线绘图_对python pandas 画移动平均线的方法详解

    数据文件 66001_.txt 内容格式: date,jz0,jz1,jz2,jz3,jz4,jz5 2012-12-28,0.9326,0.8835,1.0289,1.0027,1.1067,1.0 ...

  4. python画3d图-Python 绘制酷炫的三维图步骤详解

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

  5. java canvas详解_HTML5的canvas绘图技术详解

    原标题:HTML5的canvas绘图技术详解 本篇教程探讨了HTML5的canvas绘图技术详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < canvas ...

  6. 2013河北省职称计算机应用能力考试操作题答案,2013河北省职称计算机应用能力考试操作题步骤详解(部分).doc...

    2013河北省职称计算机应用能力考试操作题步骤详解(部分) 2013河北省职称计算机应用能力考试操作题步骤详解PAGE PAGE - 11 - 共 NUMPAGES 11页操作题PPT 1-5PPT操 ...

  7. python turtle库setpos_Python内置海龟(turtle)库绘图命令详解(二)

    继续谈利用海龟库(turtle库)做图.在这篇文章(Python内置海龟(turtle)库绘图命令详解(一))中已经介绍了turtle的一些基本画图命令,包括画布的设计.画笔属性与状态的设置以及画笔的 ...

  8. 2013河北省职称计算机应用能力考试操作题答案,(2013河北省职称计算机应用能力考试操作题步骤详解PPT部分.doc...

    (2013河北省职称计算机应用能力考试操作题步骤详解PPT部分 操作题PPT 1-5 PPT操作练习一 打开PPT文件夹下的"PPT_1.PPT"演示文稿文件,然后进行如下操作: ...

  9. 【机器学习】线性回归实战案例一:多元素情况下广告投放效果分析步骤详解

    线性回归实战案例一:多元素情况下广告投放效果分析步骤详解 2 线性回归 2.1 案例一:多元素情况下广告投放效果分析 2.1.1 模块加载与绘图布局样式设置 2.1.2 加载数据和数据筛选 2.1.3 ...

最新文章

  1. 3.2 表达式的类别与类型
  2. 用软件lm_sensors监测Linux系统和CPU温度(转)
  3. '0','\0',NULL,EOF的区别
  4. SAP CRM WebClient UI cross component跳转中有一个硬编码的CROSSNAV
  5. 粒子系统(一):从零开始画一颗树
  6. java applet 换行_Java复习题
  7. Webpack4: Tree-shaking 深度解析
  8. Spring学习笔记专题三
  9. 配置 AEM CQ6 (author + publish + apache dispatcher + ubuntu )
  10. 穿上马甲就没认出polya定理之典型题目手环
  11. 使用yum方式安装mysql5.6
  12. 六石管理学:流程是为工作服务的
  13. 计算机键盘无法识别,电脑插上键盘显示无法识别USB?
  14. [转]线性插值双线性插值三线性插值
  15. 申请一个微信小程序有哪些需要注意的事项
  16. 宝贝不哭,妈妈打它--转贴
  17. C ++ Hello World和可爱的无情彩虹
  18. 京东换新 Logo :脸蛋胖了,脖子粗了
  19. Windows Server 2008之旅??Windows Server Backup功能_闲云野鹤?精神家园_百度空间
  20. 10分钟看完,一文教你Docker 从入门到精通(值得收藏的教程)

热门文章

  1. 可以借助Studio Display 实现旧款Macbook上的“Hey Siri”功能
  2. Ubuntu开发环境_TLP电源管理模块、禁用笔记本触摸板
  3. python编写随机获取ip免费调用有道翻译
  4. 国家开放大学2021春2129药物化学题目
  5. 每天一个---- 吉尔德定律和迈特卡尔定律
  6. quadro 2000专业显卡 win7计算机体验指数5.9,英伟达全新Quadro K2200专业级显卡评测...
  7. python能以文本和二进制方式处理文件_Python文件处理之文件写入方式与写缓存(三)...
  8. 2020赚钱机会总结,拾元富另附10个副业赚钱必备的工具与平台,看看你到底错过了多少钱!
  9. JS去除字符串中间多余空格
  10. C++实现RSA加密解密