【问题标题】:Integration Testing automation - checking DB values集成测试自动化 - 检查数据库值
【发布时间】:2012-08-13 10:27:31
【问题描述】:

我现在正在处理创建集成测试自动化过程中的一个问题。

我想:

  1. 通过 selenium RC 输入数据
  2. 导入后检查数据库中的值是否正确。

我对这些测试的逻辑有疑问。现在我这样做如下:在一个测试中,我生成随机数据(人的名字、姓氏等)。然后,通过从 DB 中简单选择,我获得唯一的 person_id 键(我假设如果名字和姓氏都是 8 个字符长,随机生成的字符串我可以将它们视为唯一的),然后在下一个查询中使用这个 id。

这个方法正确吗?如果没有,我该如何处理?

【问题讨论】:

    标签: testing selenium integration-testing


    【解决方案1】:

    这个集成测试的目的到底是什么?

    如果您正在测试您的 DB 适配器层,那么是否需要使用 Web UI?您可以直接锻炼适配器。

    如果您正在测试 Web UI,是否需要将数据实际存储在数据库中?您可以使用模拟(或某种其他类型的测试替身)检查值。

    如果您正在进行端到端的脱脂测试,是否有必要检查实际数据值(除了实际交互的成功之外)吗?如果答案是肯定的,也许测试应该是这样的:

    Given I have registered as "Random Person"
    When I retrieve my details
    Then my name is displayed correctly.
    

    【讨论】:

    • 我正在测试的应用程序包含公共可用网站及其自己的数据库,人们在其中输入一些数据。在循环导入任务中,数据被传输到第二个应用程序的内部数据库中。我想在网站上输入一些数据(随机生成),然后检查它们是否正确导入到第二个应用程序中。
    • 在我看来这里有几个组件可以独立测试。您可以对这两个应用程序使用模拟数据库来测试循环导入;您可以使用 UI 和存根的中间层来测试数据输入;您可以自行测试数据库适配器;等等。这里的目的是测试一小部分功能,以便在您进行系统(end-2-end)测试时,您只是检查应用程序是否正确连接。因此,您可能只需要使用 Selenium 创建一个人并(例如)检查第二个数据库中的人数是否增加了 1。
    • 是的,但是如果我想测试整个过程的凝聚力呢?
    • 我并不是说您不会进行端到端系统测试。我是说系统测试的价值在于确保各种组件正确“连接”。使用更精细的单元和集成/组件测试来分别验证业务功能和协作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多