【问题标题】:is controller testing functional testing?控制器测试功能测试?
【发布时间】:2019-04-16 20:44:19
【问题描述】:

我对测试的不同方面非常感兴趣。我希望你能真正阅读这篇文章,如果你有这方面的经验,请给我你的想法。让我们分解吧。

事实 1:据说当我们从用户的角度编写测试时(去 uri,并得到结果,如果用户看到正确的结果,那么测试是正确的)。他们说这叫做功能测试。

总结 1:所以当我们为控制器编写测试时,它总是可以正常工作的,因为我们必须向端点发出请求并观察结果。所以为控制器编写测试总是功能测试。 对吗?

================================================ =============================

事实 2:因此,集成测试不是控制器测试。假设我们的应用程序中有一些功能(不是控制器功能)。例如在我们的辅助类或模型中。我们想测试集成测试之类的功能。所以我们不会模拟任何东西,只是测试它。

总结2:所以,集成测试可以在不是控制器函数的函数上进行,写在其他地方(不需要完成请求),它们必须使用外部依赖项。通过外部依赖,可以想到任何东西(例如文件、数据库或其他类本身)。 对吗?

================================================ =============================

总结 3:如果我只有一个 api 而不是返回视图,而是从控制器返回 json 和状态码,该怎么办。如果我为控制器编写测试,它仍然会被称为功能测试。 对吗?

【问题讨论】:

    标签: testing model-view-controller integration-testing functional-testing


    【解决方案1】:

    有趣的问题。我相信这取决于您如何测试控制器。让我们从不同types of testing 的几个定义开始。这些定义大致遵循您的两个事实。

    我们以电子商务平台和结账控制器为例。

    控制器 - 单元测试

    这是我们必须单独考虑控制器的地方。所以我们想模拟来自用户的请求。例如,如果您使用 Spring Framework,则可以使用该库来模拟 http requests

    控制器 - 集成测试

    要成为集成测试,我们需要考虑系统两个部分的交互。在我们的购物篮示例中,我们可以像上面那样模拟 http 请求,但测试购物篮和结帐代码之间的交互。

    控制器 - 功能测试

    对于功能测试,我们需要考虑用户点击UI和使用购物篮的端到端场景。

    总之,如果您使用模拟 HTTP 请求的东西来测试您的控制器,那么它很可能是单元测试或集成测试。如果您正在使用 selenium 或用户单击 UI 测试控制器,那么它很可能是功能测试。

    【讨论】:

      猜你喜欢
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      • 2021-07-21
      • 1970-01-01
      相关资源
      最近更新 更多