【问题标题】:cucumber + selenium: functional tests & testing contentcucumber + selenium:功能测试和测试内容
【发布时间】:2016-06-23 02:56:08
【问题描述】:

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

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

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

但是,这个决定对我来说似乎限制太多。例如,很难检查按某些标准排序的内容。

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

【问题讨论】:

  • 如果您必须在结果集中测试排序,您必须能够用英语验证这一点。在这种情况下,您应该能够使用具有可排序枚举类型字段(如状态字段)的替代术语的替代语言进行验证。

标签: selenium architecture cucumber functional-testing


【解决方案1】:

所以这里有几个问题需要解决。

实现语言

在页面中必须显示文本“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 是否只会给我一个我信任的结果,并且是否易于实现或根据需要进行更改。它是否涵盖了我们之前编写的验收标准?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 2010-12-27
    • 2010-12-05
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    相关资源
    最近更新 更多