自动化测试 - 最佳实践 - 在测试前获取测试数据

时间:2018-01-29 10:09:43

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

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

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

鉴于我在“女士服装”页面上

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

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

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

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

我希望进行高效且强大的自动化测试。

2 个答案:

答案 0 :(得分:1)

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

我们只是进行了一次BeforeFeature数据库查询,并获取了测试环境中可用的所有品牌。我们将这些品牌添加到FeatureContext和ScenarioContext,具体取决于所需的上下文。由于Feature / Scenario上下文,您可以在该特定功能/方案的运行期间使用这些值。在“何时”步骤中,在代码中,我们创建了数据库中所有可用品牌的列表。

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

你可以做一些类似连衣裙的事情。

所以我们的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。企业可以阅读您正在测试的内容。此外,只要数据模型保持原样,您的测试就非常易于维护。您可以在桌面上添加无限量的连衣裙,只有品牌可用时才能获得测试结果。因此,如果数据库被刷干净,当然,不会执行单个测试,但您不会得到任何误报或不必要的否定。

此外,如果首先找不到品牌,您可以选择将品牌添加到数据库中。您可以在“When”步骤中执行此操作。如果在列表中找不到连衣裙,则可以在此时在数据库中添加查询。

答案 1 :(得分:1)

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

GIVEN:XXX产品可在&#34; WOMEN&#39; S DRESSES&#34;页。

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

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

  • api call
  • 网络用户界面
  • 数据库更新(不推荐)

或只是模拟对XXX产品的API响应