【问题标题】:Test Rest Api and verify using db access, pros and cons测试 Rest Api 并使用 db 访问进行验证,优缺点
【发布时间】:2016-05-11 11:52:44
【问题描述】:

我正在端到端测试 REST API,并且当我想检查应用程序的行为时。 一种是尽可能使用现有的 REST API,但在其他情况下,我没有可用的 REST API,因此有两种选择: 为测试目的创建 api 或在数据库中检查数据已按预期更改。

哪个更好,为什么?从您的测试中进行 db 调用有什么害处吗?

【问题讨论】:

  • 上面的问题和你喜欢的不完全一样。我要问的是与 E2E 测试框架有关。 E2E测试框架连接到数据库以检查测试结果是否更好?使用应用程序API甚至在应用程序中创建ad-hoc api用于测试目的更好?
  • 案例 1:如果您想测试具有 crud 操作的 REST API,并且您也想验证数据状态,请选择 testDB(希望使用任何内存数据库)案例 2:检查准确DB 的状态,并且由于您没有 REST API,因此我会获取 db 的转储/快照并将其加载到 docker 中并验证/验证,每当需要使用某些查询对其进行测试时。

标签: database rest automated-tests integration-testing


【解决方案1】:

由于您想测试 API 本身(E2E 测试),我可能会选择创建测试数据库并进行处理的路线。如果您手动执行此操作,您可以在每次测试后轻松(尽管很麻烦)重置数据库。

您也可以(我可能会走这条路)创建一个 Docker 容器,其中包含一个随时可用的数据库,您可以根据需要进行更新,同时开发 API 本身。您可以在每次需要执行测试时生成一个新的容器/数据库,这也将简化 CI/CD 管道中的自动化和集成。

任何这些解决方案都可以让您在真实的数据库中测试真实的 API。提供更准确的测试结果。

希望这会有所帮助! 干杯!

【讨论】:

    【解决方案2】:

    在 e2e 测试或验收测试中,您通常只检查可观察到的行为,因此用户能够看到的行为,在您的情况下是 API 的用户,所以理论上您不需要检查数据库。

    如果你真的想检查数据库中的结果,我会使用像 xmysql https://github.com/o1lab/xmysql 这样的项目来拥有一个可用于检查数据库的 Rest API。原因是:

    1. 您不必维护自己的代码来为生产中不需要的 API 端点提供服务。该代码可能会公开并可能成为安全问题
    2. 你不需要模拟任何数据库或调用,你可以测试你飞什么,飞你测试什么
    3. 如果您运行测试的系统和被测系统是不同的计算机,它很容易测试。您可以远程测试所有内容,而无需为您的数据库打开端口。例如它易于使用 docker 进行设置,运行测试然后部署。部署唯一没有的是 xmysql

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      相关资源
      最近更新 更多