关于一道题目中因果图的问题
学习黑盒测试的因果图对于如何确定所给条件的原因、中间过程、结果没有一个明确的思路,希望能够给与指导,不胜感谢。题目如下:例如,有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:
若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。”
(1) 分析这一段说明,列出原因和结果
原因:
1. 售货机有零钱找
2. 投入1元硬币
3. 投入5角硬币
4. 押下橙汁按钮
5. 押下啤酒按钮
建立中间结点,表示处理中间状态:
11. 投入1元硬币且押下饮料按钮
12. 押下〖橙汁〗或〖啤酒〗的按钮
13. 应当找5角零钱并且售货机有零钱找
14. 钱已付清
结果:
21. 售货机〖零钱找完〗灯亮
22. 退还1元硬币
23. 退还5角硬币
24. 送出橙汁饮料
25. 送出啤酒饮料
(2) 画出因果图。所有原因结点列在左边,所有结果结点列在右边。
(3) 由于 2 与 3 ,4 与 5 不能同时发生,分别加上约束条件E。
(4) 因果图
为什么没有原因:售货机没有零钱找;结果:售货机零钱找完灯亮这两种情况?
还有就是11-〉13;11-〉22为什么是和不是并的关系?
谢谢!
[ Last edited by nana430 on 2005-3-23 at 14:00 ]
-因果图(cause-effect-diagram)-
我来灌一贴,如下:-因果图(cause-effect-diagram)-
因果图也称鱼刺图。它是利用“头脑风暴法”,集思广益,寻找影响质量、时间、成本等问题的潜在因素,然后用图形的形式来表示的一种用的方法,它能帮助我们集中注意心搜寻产生问题的根源,并为收集数据指出方向。
画因果图的方法如下:我们在一条直线(也称为脊)的右端写上所要分析的问题,在该直线的两旁画上与该直线成60度夹角的直线(称为大枝),在其端点标上造成问题的大因,再在这些直线上画若干条水平线(称为中枝),在线的端点写出中因,还可以对这些中枝上的原因进一步分析,提出小原因,如此便形成了一张因果图。
下面就是一个药品受潮变质的因果图:
http://www.imr.ac.cn/IMRWeb/zhiliangoffice/pic/ygt.gif
因果图有三个显著基本特征:
1.是对所观察的效应或考察的现象有影响的原因的直观表示;
2.这些可能的原因的内在关系被清晰地显示出来;
3.内在关系一般是定性的和假定的。
因此在构造因果图时最重要的考虑是要清晰理解因果关系。同时还要考虑所有可能的原因。一般可以从人、机(设备)、料(原料)、法(方法)、环(环境)及测量等多个方面去寻找。在一个具体的问题中,不一定每一个方面的原因都要具备。
因果图方法与判定表
请注意以下的说明,可能对您理解该因果图有帮助。等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型).
因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.
利用因果图生成测试用例的基本步骤:
(1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符.
(2) 分析软件规格说明描述中的语义.找出原因与结果之间, 原因与原因之间对应的关系. 根据这些关系,画出因果图.
(3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现. 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件.
(4) 把因果图转换为判定表.
(5) 把判定表的每一列拿出来作为依据,设计测试用例.
从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加.
前面因果图方法中已经用到了判定表.判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确.
判定表通常由四个部分组成.
条件桩(Condition Stub):列出了问题得所有条件.通常认为列出得条件的次序无关紧要.
动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束.
条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值.
动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作.
规则:任何一个条件组合的特定取值及其相应要执行的操作.在判定表中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列.
判定表的建立步骤:(根据软件规格说明)
①确定规则的个数.假如有n个条件.每个条件有两个取值(0,1),故有 种规则.
②列出所有的条件桩和动作桩.
③填入条件项.
④填入动作项.等到初始判定表.
⑤简化.合并相似规则(相同动作).
B. Beizer 指出了适合使用判定表设计测试用例的条件:
①规格说明以判定表形式给出,或很容易转换成判定表.
②条件的排列顺序不会也不影响执行哪些操作.
③规则的排列顺序不会也不影响执行哪些操作.
④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则.
⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要. 谢谢斑竹,我想问一下如何对原因和结果以及中间结点进行详细的说明,是否有什么依据?对于因果是否越详细越好呢?还有就是我提出的问题能否指点一下?
原因:售货机没有零钱找; 结果:售货机零钱找完灯亮 这两种情况怎么没有出现在因果关系里面?
还有就是 11-〉13;11-〉22为什么是和不是并的关系?
谢谢! 原因:售货机没有零钱找; 结果:售货机零钱找完灯亮 这两种情况怎么没有出现在因果关系里面?
你的话我不是很理解。大概是这个意思?就是缺少这个“售货机没有零钱找”的原因。我的理解是这样的--
分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符.以上的 “售货机没有零钱找”这个条件实际上就是“售货机有零钱找”的否运算,这是一个基本条件的否定式,所以采用了“售货机有零钱找”的原因,而不单独将“售货机没有零钱找”列出。它具体与因果图的定义没有冲突。您认为如何? 楼主理解错了!
正确的是:11和1与于13;11和1与于22。因果图中没有和、并的说法。
有以下:恒等(—)、非(~)、或(v)、与(^)四个基本符号;
异(E)、或(I)、唯一(0)、要求(R)、强制(M)五个约束符 号;
[ Last edited by baitest on 2005-3-23 at 20:32 ] tobaitest:
后面那个问题我还真是没明白过来,受教了。谢谢~ 雾里看花,似懂非懂 这题目经典,我读的时候也说的这个,我找找答案还再不在 读,读什么呢,能介绍一下吗? 我没有看,但我知道因果法是很有用的,大家可以对照着理论知识把上面的例子做一下。我前几天把因果法和实际的工作结合起来,感觉挺好的。大家最好把理论和实践结合在一起比较的好。
附件中是因果法的理论知识,相信看了后会对大家有所帮助的
因果法的理论知识判定表的理论知识
判定表的理论知识理论与实践结合,相信对大家有很大的帮助 上次讨论了一下,发现这个因果图中的确没有包含对“零钱找完灯亮”。因为红灯亮灭是由事件触发的,例如没有零钱时投入5角硬币,则红灯由灭转亮;如果刚好机器内只剩5角硬币,则投入1元硬币并购买成功后,机器内零钱找完,红灯由亮转灭。
另外,通过因果图和判定表,还发现需求中存在不明确的地方,例如当投入硬币不按钮的时候,该如何处理?如果可以在指定的时间后自动退出,那么是否在没有零钱的情况下投入5角硬币,则红灯灭,之后不按任何按钮,等到时间后硬币被退出,则红灯又重新转亮?
很多地方都提到了使用因果图或者判定表进行需求检查的方法,有兴趣的朋友也可以研究一下。
[ Last edited by jackei on 2005-6-15 at 10:38 ] 看了鱼刺图再看因果图会觉得好很多:) 还是没有看懂,正在努力学习啊!
谢谢了、
thanks you @@楼主附件好像是从一本电子书籍里面截下来的一部分,可否告知这本书叫什么名字吗?
原帖由 zension 于 2005-6-7 12:57 发表因果法的理论知识
如果有电子档共享出来,将十分感谢啊
我是新手,想和大家交个朋友!
希望大家能够交我这个朋友!我的QQ:215143066,MSN:jickllyloveshe@hotmail.com欢迎加入我的群!26526836
谢了,原来我想的东东,全在这里都可以找到