|
|
|
|
移动端

3.2.2 函数类型

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

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

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

3.2.2 函数类型

函数还可以进一步通过具体映射来加以描述。在下面的定义中,从函数f:A → B出发,定义集合为:

f(A) = { bi ∈ B:对于ai ∈ A,则有bi = f(ai)}

这个集合有时也称为集合A在函数f下的像。

定义

当且仅当f(A) = B,f是A到B上的函数。

当且仅当f(A) ? B(注意:这里是B的真子集),f是A到B中的函数。

当且仅当对于任何ai, aj ∈ A且ai ≠ aj ? f(ai) ≠ f(aj),f是A到B的一对一映射函数。

当且仅当存在ai,aj ∈ A且ai ≠ aj可以使得f(ai) = f(aj),f是A到B的多对一映射函数。

用自然语言来解释上面的定义就是:如果f是A到B上的函数,则可以断定B的每个元素都会与A的某个元素相对应。如果f是A到B中的函数,则B中至少有一个元素不与A的元素对应。一对一映射函数保证了函数对应的唯一性:定义域中的不同元素不能对应于值域中的同一元素。(可以看出,这是前面提及的函数“表现良好”的反情况。)如果函数不是一对一映射的,就是多对一映射的,即多个定义域元素可以映射到相同的值域元素上。从这些定义上看,所谓要求函数“表现良好”就是要防止出现一对多映射的情况。了解关系型数据库的测试人员一定会看出:所有的可能性对关系来说都是适用的(一对一、一对多、多对一和多对多)。

再回头研究这些测试实例,假设取A、B和C为3个NextDate程序的日期集合,有

A = {日期:1812年1月1日≤日期≤2012年12月31日}

B = {日期:1812年1月2日≤日期≤2013年1月1日}

C = A ∪ B

那么,函数NextDate:A → B就是A到B上的一对一映射,而函数NextDate:A → C则是A到C中的一对一映射。

对NextDate函数来说,多对一映射是没有意义的;但对三角形问题来说,很容易发现它是多对一的。如果函数是一对一映射的上函数,比如前面讨论的NextDate:A → B,那么定义域中的每个元素都恰好与值域中的某一个元素相对应;反之,值域中的每个元素也恰好与定义域中的一个元素相对应。在这种情况下,就可以找到函数的逆函数,把值域一对一地映射回定义域(参见第2章习题中的YesterDate函数)。

这些性质对测试来说每个都很重要。中函数与上函数之间的差异,意味着在功能测试中基于定义域的测试和基于值域的测试的不同;对一对一映射函数来说,会需要比多对一映射函数更多的测试工作。


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

51CTO读书频道二维码


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

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

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

读 书 +更多

框架设计(第2版)CLR Via C#

作为深受编程人员爱戴和尊敬的编程专家,微软.NET开发团队的顾问,本书作者Jeffrey Richter针对开发各种应用程序(如Web Form、Windows For...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊