|
|
|
|
移动端

3.1.2 集合的定义方法

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

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

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

3.1.2 集合的定义方法

定义一个集合的方法有三种:简单地列举出各个元素,或者给出一个判别规则,抑或通过其他集合来构造这个集合。列举元素的方法适用于只有少量元素的集合,或元素符合某种简明形式的集合。前面定义集合M1时采用的就是这种方法。可以定义NextDate程序中可取的年份的集合为:

Y = { 1812,1813,1814,…,2011,2012 }

在列举元素来定义集合的方式中,集合元素之间是没有顺序关系的。其原因在后面讨论集合相等时就会弄明白。采用判别规则的方法要复杂一些,这种复杂性有利也有弊。比如可以把NextDate函数的允许年份集定义为:

Y = { year:1812 ≤ year ≤ 2012 }

读作:Y是年份的集合,要求(可以把冒号读作“要求”)年份值介于1812和2012之间(包含1812和2012)。利用判别规则来定义集合时,规则必须是无歧义的。给定任何一个年份值,就可以判断这个年份是否在集合Y当中。

用判别规则来定义集合的优点在于无歧义,这就要求有清晰的表述。有经验的测试人员都遇到过“无法测试的需求”。究其原因,很多时候都可以归结为在判断规则上出现了歧义。比如,在前面的三角形问题中,假设定义一个集合为:

N = { t:t为近似等边的三角形 }

那可以断定边长为(500,500,501)的三角形是N的元素,但是对边长为(50,50,51)或(5,5,6)的三角形又该如何判断呢?

用判别规则定义集合的第二个优点在于,某些集合的元素可能很难列举出来,而我们需要使用这样的集合。比如,在佣金问题中,我们可能会对这样的集合感兴趣:

S = { sales:对该销售额sales来说,佣金比例应为15% }

想要一一列出这个集合的每个元素不容易实现,但是对于给定的销售额,却可以很容易地使用这个判别规则来处理。

判别规则法的主要缺点是,规则在逻辑上有可能会相当的复杂,特别是需要采用谓词逻辑量词“?”(存在)和“?”(所有)来表述时。如果大家都能理解这种表示方法,那精确性就大有用途了。但这些包含逻辑运算符的规则往往都会把客户给搞糊涂了。判别规则法的第二个问题是自引用问题。自引用问题很有意思,但实际上对测试人员用处并不大。在判别规则指代它自己时就是自引用,就会出现死循环的问题。比如塞维利亚理发师问题(Barber of Seville):塞维利亚的理发师是给所有人理发但不给自己理发的人。


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

51CTO读书频道二维码


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

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

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

读 书 +更多

网络管理员备考训练——计算机与网络基础知识

本书是根据全国计算机技术与软件专业技术资格(水平)考试《网络管理员考试大纲》所要求的考试范围而编写的试题集。全书共分10个单元,同步...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊