5

问题

在我的工作场所,我们正在尝试为几乎完全由 javascript 驱动的 Intranet 应用程序创建自动化测试的最佳方法。现在我们被困在试图在以下之间找到一个好的权衡:

  • 可重用和可嵌套的 GUI 组件中的应用程序代码。
  • 由测试团队轻松创建的测试
  • 可以记录一次然后自动化的测试
  • 对站点进行小的外观更改后不会中断的测试

从 Selenium-IDE 天真生成的 XPath 表达式(或其他可能的表达式,如 jQuery 选择器)通常是不可重复的并且非常脆弱。相反,让 JS 代码为页面上的每个重要 DOM 元素生成特殊的唯一 ID 值……嗯,这本身就是一件令人头疼的事情,因为可重用的 GUI 组件和 ID 在重新测试时需要保持一致。跑。

其他人在这种事情上取得了哪些成功?如何对丰富的 JS 接口进行自动化应用程序级测试?

限制

  • 我们正在使用 JavascriptMVC 2.0,希望尽快 3.0,以便我们可以升级到 jQuery 1.4.x。
  • 测试人员大多受过使用 Selenium IDE 直接记录事物的培训。
  • 测试负责人更喜欢页面上每个可点击元素上的页面唯一 HTML ID...
  • 培训测试人员编写或更改特殊表达式(例如告诉他们哪些 HTML 类名是重要的分支点)是不行的。
  • 我们尝试制作可重用的 javascript 组件,但这意味着很少有 GUI 组件可以将自己(或它们包含的内容)视为独一无二的。
  • 我们的一些组件已经在其操作中使用了 HTML ID 值。我还是想避免这样做但这会使基于 ID 的测试的想法复杂化。
  • 可以向 Selenium-IDE 安装测试人员使用添加自定义工具(如定位器构建器或新定位器方法)。
  • 从传统浏览器的角度来看,几乎所有发生的事情都发生在单个“页面加载”中,即使项目已保存

目前的想法

我正在考虑一个系统,在该系统中,Selenium-IDE 的自定义定位器构建器(javascript 代码)将在测试仪记录时与我们的应用程序代码进行对话。通过这种方式,我们的应用程序部分负责为任何给定的 DOM 元素生成最灵活的表达式(XPath 或 jQuery)。虽然这可以避免需要对测试人员进行更多培训,但我担心这可能是过度思考的事情。

4

2 回答 2

1

Record and Playback 在大规模测试中不起作用。它可能适用于烟雾测试和小型重复性任务。

与其尝试生成唯一 ID,不如尝试使用基于 CSS 的选择器来解决这个问题。生成唯一 ID 是理想的目标,但我认为这在所有实际情况下都是可能的。

如果您尝试寻找自定义定位器,最好查看 BDD。

于 2011-01-04T05:58:52.237 回答
0

你不能在 Selenium 中使用 css 选择器吗?这似乎比使用 XPath 更简单一些。

http://saucelabs.com/blog/index.php/2010/01/selenium-totw-css-selectors-in-selenium-demystified/

于 2011-01-03T20:52:36.837 回答