模组和盒子的区别
difference between module and box
我想知道盒子和模块在编程上有什么区别
我被问到这个问题
不知何故我现在很困惑
在网上阅读和记录什么是编程中的框
我在下面找到 link
https://www.nbs-system.com/en/blog/black-box-grey-box-white-box-testing-what-differences/
如果盒子是最上面的link和类似的link那么盒子就是测试的
程序和模块是proram
"box" 只是您从现实世界中知道的对象中的常用词。它类似于将代码组合在一起形成某种软件组件。这是因为它的内部部分在责任和沟通、内部数据使用、总体目标方面彼此如此相关,因此将它们组合在一起是有意义的。我们将其命名为模块,并且多次映射到源文件(但不是必须如此),但相同的分组概念适用于 类、包(通常 modules/classes 组合在一起)、库甚至完整的应用程序或系统。
盒子术语主要指的是盒子内部的内容与从外部(用户或其他系统)与之交互的参与者之间存在边界这一事实。
盒子必须向外部世界提供一个 public 界面,才能变得可用或有用。这必须记录在案,否则你不知道如何使用它。如果您仅根据此信息使用它来实现您的目标,而对内部结构一无所知,我们会说您使用的是 "black box".
这有很多优点,因为它可以使盒子成为一个强大的抽象,使用简单,将可能的复杂实现包装在里面。它封装事物并对用户隐藏它们。
如果你作为外部参与者以某种方式使用盒子,因为你知道里面是如何做的,那么你就违反了这个封装原则。您可能正在进入 "grey box" 使用模式。这很危险,因为如果更改框,您的假设(和代码)可能会失败。
将它用作 "white box" 时,您确实完全了解它的内部构造,因此您可以在代码中做出非常明智的决定,但现在无法真正触及盒子代码。所以有抽象。
编码时,出于抽象、内聚和模块化的原因,您大多希望针对黑盒进行编码,并且还希望构建自己的黑盒。
当需要(希望从一开始)测试您编写的代码时,灰盒和白盒最有意义。在这里您仍然希望将您的系统作为黑盒进行测试,但也希望使用白盒测试,因为您希望可观察到的行为和内部详细行为都是正确的。
灰色测试可能特别适用于当你测试你编写的代码时使用了你没有的其他模块或库,并且通常不想测试(其他人的代码已经测试过),但你仍然有一些对其内部结构的了解,然后您进行额外的测试以涵盖您的代码,探索这些知识。
编辑:
因此,除非他们希望您将模块区分为内部代码,并将框区分为模块的包装 public 接口,否则实际上没有区别。
我想知道盒子和模块在编程上有什么区别 我被问到这个问题 不知何故我现在很困惑
在网上阅读和记录什么是编程中的框
我在下面找到 link
https://www.nbs-system.com/en/blog/black-box-grey-box-white-box-testing-what-differences/
如果盒子是最上面的link和类似的link那么盒子就是测试的 程序和模块是proram
"box" 只是您从现实世界中知道的对象中的常用词。它类似于将代码组合在一起形成某种软件组件。这是因为它的内部部分在责任和沟通、内部数据使用、总体目标方面彼此如此相关,因此将它们组合在一起是有意义的。我们将其命名为模块,并且多次映射到源文件(但不是必须如此),但相同的分组概念适用于 类、包(通常 modules/classes 组合在一起)、库甚至完整的应用程序或系统。
盒子术语主要指的是盒子内部的内容与从外部(用户或其他系统)与之交互的参与者之间存在边界这一事实。
盒子必须向外部世界提供一个 public 界面,才能变得可用或有用。这必须记录在案,否则你不知道如何使用它。如果您仅根据此信息使用它来实现您的目标,而对内部结构一无所知,我们会说您使用的是 "black box".
这有很多优点,因为它可以使盒子成为一个强大的抽象,使用简单,将可能的复杂实现包装在里面。它封装事物并对用户隐藏它们。
如果你作为外部参与者以某种方式使用盒子,因为你知道里面是如何做的,那么你就违反了这个封装原则。您可能正在进入 "grey box" 使用模式。这很危险,因为如果更改框,您的假设(和代码)可能会失败。
将它用作 "white box" 时,您确实完全了解它的内部构造,因此您可以在代码中做出非常明智的决定,但现在无法真正触及盒子代码。所以有抽象。
编码时,出于抽象、内聚和模块化的原因,您大多希望针对黑盒进行编码,并且还希望构建自己的黑盒。
当需要(希望从一开始)测试您编写的代码时,灰盒和白盒最有意义。在这里您仍然希望将您的系统作为黑盒进行测试,但也希望使用白盒测试,因为您希望可观察到的行为和内部详细行为都是正确的。
灰色测试可能特别适用于当你测试你编写的代码时使用了你没有的其他模块或库,并且通常不想测试(其他人的代码已经测试过),但你仍然有一些对其内部结构的了解,然后您进行额外的测试以涵盖您的代码,探索这些知识。
编辑: 因此,除非他们希望您将模块区分为内部代码,并将框区分为模块的包装 public 接口,否则实际上没有区别。