问题
在我的工作场所,我们正在尝试为几乎完全由 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)。虽然这可以避免需要对测试人员进行更多培训,但我担心这可能是过度思考的事情。