|
|
|
|
移动端

3.1.7 集合划分

《软件测试:一个软件工艺师的方法(原书第4版)》第3章面向测试人员的离散数学,本章和下一章将给出测试人员所需的数学知识。还是把测试人员类比成技艺师,此处介绍的各种数学方法就是工具,测试技师应该是知道如何用好这些工具的。本节为大家介绍集合划分。

作者:马琳/李海峰 译来源:机械工业出版社|2017-11-15 17:39

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


3.1.7 集合划分

集合的划分是一种非常特殊的情况,对软件测试人员来说至关重要。日常生活中有很多类似集合划分的情况。比如,把一个办公区域分割成多个独立办公室,这是空间上的划分;把一个州分成若干个行政区,这是行政区域的划分等。从这两个例子中可以看出,“划分”的含义是把一个整体分割成若干小的部分,并保证所有的事物都会出现在某个部分中,没有遗漏。集合划分的正式定义如下。

定义

给定集合A和一组A的子集A1,A2,…,An,当且仅当A1 ∪ A2 ∪ … ∪ An = A,且

i ≠ j ? Ai ∩ Aj = ?时,称这些子集是A的一个划分。

由于划分实际上是一组子集的集合,因此也经常把单个子集称为划分的元素。

对于测试人员来说,集合划分定义中的两部分内容都十分重要:第一部分保证了集合A的每个元素都会出现在某个子集中,第二部分保证了A中没有任何元素会同时出现在两个子集中。

这一点在行政分区的例子中表现得非常好:每个行政区都设有立法委员,不存在设两个立法委员的区。拼图游戏是另一个很好的划分实例。实际上,集合划分的维恩图就常常画成类似拼图的样子,如图3-3所示。

集合划分的概念对测试人员非常有用,因为划分定义的这两个性质保证了对测试的两个重要要求:完备性(每个事物都在某个确定地方)和无冗余性。对功能测试来说,其固有的缺点就是缺漏和冗余这两个问题:有些东西始终测试不到,而有些又被反复地测试。如何找到恰当的划分是功能测试的一大难点。比如,在三角形问题中,论域是所有正整数三元组的集合。(这实际上是正整数集与其自身的三次笛卡儿积。)对此论域可以有3种划分方法:

(1)划分成:三角形和非三角形;

(2)划分成:等边三角形、等腰三角形、一般三角形和非三角形;

(3)划分成:等边三角形、等腰三角形、一般三角形、直角三角形和非三角形。

乍看起来这三种划分方法好像都是可行的,但是仔细一研究就会发现最后一种划分形式有一个问题。一般三角形和直角三角形这两类并不是不相交的(比如,边长为3、4、5的三角形既是一般三角形也是直角三角形)。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Head First 设计模式(中文版)

本书共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第11章陆续介绍的设...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊