51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3188|回复: 0
打印 上一主题 下一主题

[讨论] 因果图基础--与或非

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-5-7 09:49:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
参加晓梅老师的海盗派的学习Meetup,介绍因果图,想到一个问题,“与或非”可以完全表达两个元素的逻辑结果吗?)

这样描述,有两个命题 PA, PB, 每个值都是真或假两种情况,共有有四种组合:

(PA  PB)  ---> ( 0 0) /( 0 1) /( 1 0)/ ( 1 1)
那么对于其结果C , 有16 (2^4) 种结果, 与或非可以完全表达这16 种关系吗?

下图表格画出16种结果,其中可以 按照C包含1的个数可以分为C0 ,C1, C2, C3, C4。以及用与或非对应的关系图。

命题结果与集合关系一一映射
还发现一个挺有意思的结果,集合A和集合B将 区域划分为四部分, 其中每一个部分对应一个1。 四个部分, 其
分别表示 1( A - B) ,2( B-A),3 (A n B), 4( A U B)。 比如 对于C0, 就是一个都不选; C4,代表全选。
  C1 代表选一个区域,C2, 代表选两个区域, C3 代表选三个区域。

结论就很简单,与或非完全可以表达两个命题逻辑结果。

下面看几个应用。

1. 如何避免组合爆炸

对软件中随着变量的增加,代码错误概率也增加,同时测试的组合是呈现爆炸式的增长。

比如说2个逻辑变量A和B,计算其  A and B 。

每一个逻辑变量其值为真或假, 有四种组合。 如果对于代码会发生各种错误,比如漏掉,写反( 大于号写成
小于号),导致有9 种结果(每一个变量有三种情况,正常,恒一,恒零, 两个变量3x3)。 只有一种是正确
的,也就是8个错误结果。 代码写正确不容易啊

需要验证代码正确性,如果每一种组合都测一次,那么4种组合4个test case。 如果变量增加6个变量,那么组
合测试就是64.   怎么才能减少测试用例? 下图例子中,只需要3个测试用例就可以覆盖验证所有的测试用例。
而且随着变量n的增加,其测试用例只需要n+1.


晓梅老师板书

那么选取测试用例?  对于每一个测试用例,其发现的bug数量是不一样的。 编号为4的测试用例,可以发现5
种错误,而编号为1的测试用例只能发现2种错误

上图的左下方给出,对于and  、or,异或,和其取反,只需要从三个区域选取3个点即可;

那么对于 三个组合复杂命题( A ^ ( B v C)), 如何选择测试用例?这个留个大家作为练习

2.  回归测试的重要性

回归测试很重要,因为代码修改或许在你不知道的地方会出现问题。

对于下图逻辑变量 A和B,代码都写错了.一个是恒真一个是恒假, 那么测试发现问题。 开发发现原来是A错了,
修改,测试用例4跑也通过了。 但是,但是,但是,bug 转移。如果回归测试2,那么测试用例2就发现问题。
所以说回归测试很重要。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-25 03:34 , Processed in 0.063861 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表