【问题标题】:Automated testing - Best practice - getting test data before test自动化测试 - 最佳实践 - 在测试前获取测试数据
【发布时间】:2018-01-29 10:09:43
【问题描述】:

我有一个关于为自动化测试获取测试数据的问题,这是我的问题: 我需要为服装店准备自动化测试脚本。 我需要知道获取以下场景所需的测试数据的最佳做法是什么:

场景描述:检查用户是否可以正确地将产品添加到购物篮中。

鉴于我在“女装”页面上

当我将“XXX”产品添加到包中时

然后我可以看到购物篮中显示“XXX”产品

我的问题是:如何确保“XXX”产品始终可用,最佳做法是什么? 我是否必须始终连接到 env 数据库并检查“XXX”产品是否可用,如果没有,则将其插入数据库?

或者也许应该修改一点 BDD 场景并在“女装”页面上获取当前可用产品的列表,选择任何产品,将其添加到包中并检查它是否正确添加到购物篮? (但在这种情况下,如果没有可用于测试环境的产品怎么办?)

我想要高效而强大的自动化测试。

【问题讨论】:

    标签: testing automated-tests bdd ui-automation specflow


    【解决方案1】:

    对此有几个选择。我和一些开发人员研究了汽车市场的类似问题。我们实际上发现“肮脏”的方式对我们来说是最好的方式。

    我们只是做了一个 BeforeFeature 数据库查询,并选择了测试环境中可用的所有品牌。我们根据所需的上下文将这些品牌添加到 FeatureContext 和 ScenarioContext。由于功能/场景上下文,您可以在该特定功能/场景的运行期间使用这些值。在“When”步骤中,我们在代码中创建了数据库中所有可用品牌的列表。

    然后,我们通过 specflow 将每个品牌传递给代码,并检查列表中是否包含该品牌。如果列表确实包含该品牌,则必须对该品牌进行点击,如果我们登陆该品牌的页面,我们会在最后一步进行检查。

    你可以对裙子做类似的事情。

    所以我们的规范流看起来有点像:

    Scenario Outline: Check available brands till vehicle detail page
    Given I navigate to Vehichle Search Page
    
    When I search '<Brand>', if available in test environment 
    
    Then I am navigated to the vehicle detail page
    
    Examples:
    |Brand|
    |Audi |
    |BMW  |
    |etc  |
    

    只是一个补充: 这种编写测试的方式使您的测试非常 BDD。企业可以阅读您正在测试的内容。此外,只要数据模型保持原样,您的测试就非常易于维护。您可以在餐桌上添加无限数量的连衣裙,并且只有在品牌可用时才能获得测试结果。因此,如果数据库被刷干净,当然不会执行任何测试,但您不会得到任何误报或不必要的负数。

    此外,如果一开始没有找到品牌,您可以选择将它们添加到数据库中。您可以在“何时”步骤中执行此操作。如果在列表中没有找到这件衣服,您可以在此时在数据库中通过查询添加它。

    【讨论】:

    • 干杯,这有帮助!我要试试你的方法
    • 如果您还有任何问题,请告诉我
    【解决方案2】:

    在您的情况下,您必须再添加一个前提条件:

    GIVEN:XXX 产品可在“女装”页面上找到。

    如果产品不可用 - 这是另一个测试用例)

    在测试前使用最合适的方式创建XXX产品:

    • API 调用
    • 网页界面
    • 数据库更新(不推荐)

    或者只是模拟 XXX 产品的 api 响应

    【讨论】:

    • 谢谢你,每一个答案都很珍贵,你能解释一下为什么不建议更新数据库吗?
    • 因为通常应用程序会进行一些验证然后更新数据库。这个更新也是可以进行复杂查询的。如果您使用直接数据库更新(如应用程序那样),您应该完全确定它是正确的并且是最新的。
    • 这很好。另一种选择是按照@ModX 的建议编写步骤,然后在步骤中检查礼服是否存在,如果不存在,则添加它(您选择的任何方式,ModX 正确勾勒出风险)。如果您每次都重新创建产品,您可能想要添加时间戳或其他一些唯一 ID,然后您可能想要再次清除它。
    猜你喜欢
    • 1970-01-01
    • 2011-06-29
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2011-06-28
    相关资源
    最近更新 更多