3

我的目标是:

  • 我们的客户可以生成新的网络测试。
  • 我们的持续集成服务器进行测试环境部署;它应该针对它执行测试
  • 该测试也可以在其他一些环境中运行。

(最终验收测试应由客户进行,以测试字体等,但这对于我们的测试环境来说是一个很好的验收前检查。客户可以专注于其他事情而不是现在。)

通常某些属性(如文本字段 id)已更改或某些东西,测试将在几周内中断。似乎记录的测试经常中断,因此最好轻松地记录一个新的测试,而不是尝试维护和修改旧的测试。

现在,我找到了一种全新的方法。也许录音不是正确的方法。怎么样,如果我们的客户可以用人类可读的自己的语言制作用例,机器可以理解并编译成网络记录(使用领域特定语言,DSL)。这不是科幻小说,它已经制作完成,请继续阅读。:-)

我曾尝试使用这些自动 Web 测试框架:

  • Visual Studio Web 测试(客户无法执行)
  • Selenium(仅适用于 Firefox,我们的客户有 IE)
  • WatiN(.NET 版本的 Watir,记录器似乎有点 bug)
  • HP Quick Test Pro(不容易进行新测试)

这些都没有提供我真正需要的东西......但 Selenium 是最接近的。

我们的客户说芬兰语,因此在软件项目的开始,在规范阶段,用户编写了一个用例,例如:

  • 艾娃“OmaLomake”
  • Syötä “Tuomas” kohtaan “nimi”
  • 佩娜“苏拉瓦”

翻译:

  • 打开“我的表格”
  • 在“名称”字段中插入“Tuomas”
  • 按“下一步”

现在......这是一个人类可读的用例,但也可以编译为自动网络验收测试。Open、Insert、to field 和 Press 是关键字,其他是值。

什么样的 DSL 工具对此有好处?

微软正在他们的 Oslo 项目中制作一个新的 DSL 制作工具,称为 MGrammar。这意味着您可以制作一种自定义语言,让非技术人员更容易使用机器。(与 Cobol 和 Visual Basic 相同(但失败了)的基本思想。)

我发现有人已经用 MGrammar 制作了这种 DSL,但它是为 Watin 而不是 Selenium: http: //www.codinginstinct.com/2008/11/creating-watin-dsl-using-mgrammar.html

所以持续集成服务器流程将是:

  1. 从源代码管理中获取新版本(像往常一样)。
  2. 构建、运行单元测试并分析代码(像往常一样)。
  3. 在版本控制中制作安装包和标签版本(像往常一样)。
  4. 将用例编译为 Web 测试
  5. 运行网络测试
  6. 接受/拒绝软件:-)

在持续集成服务器中运行 Web 测试通常意味着大量的配置工作。所以,在我尝试这个之前,我很好奇,你怎么看?您是否使用过相同的设置,您的经验是什么?(具体是什么环境?)

DSL 怎么样,它是否有足够的能力用于用例,还是会成为另一个无休止的开发任务?客户会生成测试吗?

4

3 回答 3

1

首先,Selenium 确实适用于 IE 和其他浏览器以及 Firefox;跨浏览器支持是其优势之一。这是支持的浏览器列表

但是,如果您想要使用基于人类语言的 DSL 来编写测试,请查看Cucumber - 语法几乎与您上面的示例完全相同。Cucumber 已经支持芬兰语 - 请参阅此链接中的示例。

于 2010-07-06T15:53:08.937 回答
0

Fitnesse 和 Selenium 集成工具,例如 Selenesse ( http://github.com/marisaseal/selenesse ) 或 Fitnium ( http://www.magneticreason.com/tools/fitnium/fitnium.html ) 也可以满足您的目的。但是,您需要找到谁将元素定位器放入客户编写的测试用例中的答案。如果客户使用记录仪放置定位器,则可能无法维护。如果客户编写步骤并且自动化测试人员/开发人员可以使用正则表达式、自定义位置策略放置这些定位器,那么这种方法可能会奏效。

于 2010-07-09T10:12:43.710 回答
0

TestPlan软件使用专门的语言编写测试。它是高度特定于领域的,并且在 Web 环境中运行良好。它支持 Selenium 后端,因此您可以获得这种兼容性,而且它可以在没有浏览器的情况下运行,从而实现更快的测试。我已经在您正在寻找的设置类型的一些相当大的 Web 项目中使用它。

您的示例脚本可能如下所示:

GotoURL /SomePage
Click MyForm
SubmitForm with
   %Params:name% Tuomos
   %Submit% value:Next
end

而已。它很好地描述了用户想要做什么,并且是一个功能测试。您可以将脚本组合成单元并具有自定义功能。因此,如果您真的想要,可以将 Finish 等效项写入名称。

于 2010-10-21T05:41:19.913 回答