黄瓜+硒:功能测试&测试内容

时间:2016-06-21 20:28:03

标签: selenium architecture cucumber functional-testing

我是前端开发人员,目前我正在一家公司工作,我们正在自动化多语言网站。我们已经实现了句子来模拟使用平台的服务,代表用户行为的句子,以及根据行为检查内容的其他句子。

我会问这些最后提到的句子。我们的架构团队决定使用以下句子来执行功能: '在页面中,必须显示文字" acme city sample"'

如果你看,句子不会谈论页面的任何元素。如果此文本存在于页面的任何位置,则测试将为真。建筑师不喜欢使用任何类型的css选择器来定位元素,因为他们说这是一个功能测试,我们只测试我们能够在浏览器的输出中看到。因此,禁止选择器的所有类型的引用。我们只使用xpath查找包含所需文本的元素,然后检查是否显示了这些元素。捍卫这一观点的另一个原因是,通过这种方式,您可以减少网站项目和自动化项目之间的耦合。

然而,这个决定似乎对我来说太严格了。例如,很难检查按某些标准排序的内容。

但我想知道您对此有何看法,如果您有其他经历,他们是如何使用它来测试网站内容的?但是,如果您认为这是一个很好的决定,我有兴趣阅读一些参考或文章来理解,因为这是测试内容的最佳方式。

1 个答案:

答案 0 :(得分:0)

所以这里有一些问题需要解决。

实施语言

  

在页面中,必须显示de text" acme city sample"

我认为这意味着你的黄瓜脚本看起来像这样:

Then In the page it must displayed de text "acme city sample" 

(如果情况不是这样,请告诉我,我会更正 这不是为BDD编写语句的正确方法。在BDD中,您希望将一般行为映射为与特定的"实现语言"相对立。写这个的更好方法是:

Then I should receive information relevant to "acme city sample"

通过这种方式,您可以将预期输出与任何实现分离。通过这种方式,如果预期输出从文本更改为,例如,图像。您最终用户的整体行为不会发生变化,而只是他们消费信息的方式。所以我建议先删除所有实现语言。

实施语言的例子有:

  • 点击
  • 类型
  • 选择
  • 移动

在某些情况下,您仍然需要使用这些,但通常会避免使用它们。

避免使用优先于xpath的所有选择器

我看到很多人出于某种原因这样做,我真的不明白为什么。首先使用CSS选择器,您可以像xpath一样做更高效。如果可能的话,我会考虑这样做。

  

我们只测试我们能够在浏览器的输出中看到。

-

  

捍卫这种观点的另一个原因是你这样   减少网站项目和自动化之间的耦合   项目

这不是不使用选择器的原因。 xpath仍然是一个选择器。我假设你这样做是为了快速找到页面上的文字。假设你100%知道你永远不会得到假阳性,那么我就能理解为什么你这样做但是要明白这绝不会减少耦合。如果您的验收标准从文本变为图像会发生什么?您的测试将始终与项目相关联,没有办法解决这个问题。您需要问自己的是,使用xpath只会给我一个我很想知道的结果,并且可以根据需要轻松实现或更改。它是否涵盖了我们之前写的验收标准?