关于07年软件评测师下午第一题控制流图的画法求证,答案是错的吗
本帖最后由 agrapea 于 2011-8-12 10:35 编辑这是题目
这是下载的答案
我的疑问是答案中画的控制流图是判定条件当成是一个单一条件来画的,但是判定条件中明明是包含了复合条件。
所以我认为圈复杂度应该是V(G)=11
这是我画的控制流图,请高手指点下,到底是答案正确还是按我的做法? 用例板块人气不高啊,盼。。 怎么没人应呢 这题我也在复习,答案是没有错的。楼上也是考试的吧? 回复 1# agrapea
很欣赏LZ的学习方式,怀疑任何事物,并思考其原因,才能得到真正意义的提高。
————————————————
这题的答案没有问题。在流程图中,对多个判断逻辑,若它们的成功和失败判断逻辑的输出一致的话,是可以被化简的。
即
if ( month ==4 || month ==6 || month ==9 || month ==11 )
这个逻辑判断中,虽然包括了4个不同的判断逻辑,但是由于它们的成功或失败的结果一致,故它们被看做是单个判断逻辑,只不过这个判断逻辑可以进行最高4次判断而已 。
可以参考if ( month >= 1 && month <=12 )这种类似符合条件的判断逻辑帮助理解。它同样也是进行了2次判断。
PS:单纯的判断的次数与流程图的复杂度没有必然的联系。 回复 5# Jackc
但是如果把if ( month ==4 || month ==6 || month ==9 || month ==11 )看成是单个逻辑判断,取真取假各一次,取真时只需要满足以上任一条件即可,所以写测试用例时只要取m=4,6,9,11中任一一个数,这样基本路径虽然满足了语句覆盖和判定覆盖,但是没有满足条件覆盖,假如取m=4,那么当m=6,9,11时没有测试到,无法确保正确。 回复 4# 楠族开心果
是啊,准备今年考。本来我自己写的答案也是和标准答案一样的,根本就没有想过复合条件,最近看教材的时候上面的例子提到了复合条件的拆分,重新看了下这个问题。 教材上是这么写的
回复 6# agrapea
其实路径合并的原理上和黑盒的等价法类似
比较if ( month ==4 || month ==6 || month ==9 || month ==11 )
和
if ( month >= 1 && month <=12 )
可以思考一下,为什么会觉得第1个判断需要测试4次?而第2个判断只测试1次呢?
PS:节点合并,除了与输入判断条件有关外,也与判断输出结果有关。 明白了,相当于如果复合条件取真、取假的结果是一致时,可以将复合条件看成是一个等价类,等价类中任一一个数能代表这个等价类的其他值。 正在复习相关知识,多谢 谢谢两位的讨论,我也明白了一些。我原本也是觉得这题目答案有误的。课本上没有介绍这条简化规则。 回复 10# agrapea
留个电子信箱,方便讨论。 回复 9# Jackc
谢谢您的指点!
留个电子信箱,方便讨论。 :victory: 回复 10# agrapea
不是很明白什么意思,我正在复习,今年考试,求赐教 请教楼主一个问题:1 答案里面第一列怎么有6条语句,我怎么觉着是5条呢
2图中1.2.3.4 各对应哪个语句
真心请教!
页:
[1]