寻找开源Web测试自动化框架

时间:2013-12-31 16:18:15

标签: selenium selenium-webdriver automated-tests functional-testing

伙计们我正在寻找Web测试通用自动化框架,可用于对各种基于Web的应用程序进行自动化测试。查看基于C#的框架,因为这是我更熟悉的语言。但是任何其他语言框架也会这样做,它不应该使用任何专有/许可语言。 框架应该有一些开源和免费的许可证模型。

我在Google和SO上搜索了基于selenium的框架。但是没有任何有源代码的可用。如果框架封装了Selenium WebDriver和/或Selenium RC提供的所有功能,并使功能测试人员能够在人类可读的脚本中创建和维护测试,那将是一件好事。

框架要求:

框架代码应避免对测试步骤进行硬编码。我的想法是在自动化框架代码之外维护测试脚本,以便在需要时可以轻松修改它们。框架应该读取步骤表和数据表并相应地运行测试。

如果现在没有这样的框架,那么我们可以在开源社区模型中共同构建这样的框架。

P.S。 我已经阅读了一些关于Hermes框架和机器人框架的内容,但尚未尝试过它们,欢迎任何帮助。

3 个答案:

答案 0 :(得分:2)

这个问题的好处是:有很多灵活的工具和方法,你可以聚在一起构建一个灵活,可靠和强大的测试自动化框架。
困难的部分是:是的,没有“开箱即用”的解决方案,你需要找到并组装大量工具才能解决这个测试自动化难题。
我会推荐什么:

  1. 首先,您需要选择单元测试测试框架。这是一个有助于在代码中识别单独方法作为测试的工具,因此您可以一起或单独运行它们并获得运行结果,例如通过或失败。
    我个人认为,Visual Studio 2013(以及Express Edition)附带的测试工具 - MS-Test 已经足够了。另一种选择是: NUnit Gallio Icarus

  2. 所有单元测试框架都包含一种在测试中进行断言的机制。断言类的能力取决于给定的单元测试框架。在这里,我想推荐一个流行的图书馆,它对整个单元测试框架非常有用 这是 Fluent Assertions (也可以从NuGet存储库获得)。

  3. 这是一个艰难的时刻。您需要决定:是否要使用PageObject方法来构建测试自动化框架,或者您将选择更简单的方法,而不会大量使用面向对象的编程。
    正确设计的页面对象使您的测试自动化代码更易于维护。利用OOP - 你可以在你的代码中做一些魔术:少花钱做更多。虽然,这种方法需要更多的技巧 以下是关于这个主题的好文章:
    Maintainable Automated UI Tests
    这一个:
    Tips to Avoid Brittle UI Tests

  4. PageObject的替代方法是一种脚本方法。这种方法也很成功,开始时间较短 Coypu 是Selenium Web Driver此类框架的一个很好且可用的示例。

  5. 所有流行的单元测试框架都支持数据驱动的测试。最好的支持在NUnit中 - 您可以运行/重新运行并查看在测试树中为单个数据行生成的测试。 MS-Test支持从不同的数据源读取数据:文本文件,excel,mssql等,但不能重新运行单个数据行的测试。虽然,有一个黑客 - Ms-Test Rows 对于我的数据驱动测试,我使用了一个很棒的库 - Linq to Excel
    我还有很多话要说。构建测试自动化框架的方法有很多 - 而且还没有现成的解决方案。

  6. 我正在尝试根据我的测试方法构建一个 - SWD.Starter。 该项目仍处于早期开发阶段。但是,至少,你可能会找到一些如何构建和组织测试自动化代码的技巧。

答案 1 :(得分:1)

我已根据我之前在大型项目“尝试”实施完整的端到端测试的经验来实施https://github.com/leblancmeneses/RobustHaven.IntegrationTests

我一直在使用它,并且对于一般的selenium,angularjs和kendo ui工作有很多有用的扩展。由于这个框架不突兀,你可以使用这些扩展而不使用任何其他东西。

我在我的最新项目中使用它,每个人都喜欢它。


有很多bdd / spec框架(specflow,mspec,nspec,storyq)可以帮助您将系统的行为连接到测试。

我学到了什么:

  • 让任何.net开发人员/测试人员无法开始编写/运行测试。

    • 大多数都失败了,因为它需要在visual studio中安装额外的插件。
    • 我使用标准的nunit
    • 从逻辑上讲,您会认为某个功能是一个类文件,而方案是[Test]方法 - 为了支持其中一些框架,它们会使每个方案成为一个类文件。
  • 使用原始规范创建测试的存根 - 希望可读代码

    • 我在2010年使用了规范流程 - 所以事情可能已经改变了。我从我的bdd文档生成了测试。一年后,当我去添加更多测试并更新现有测试时,我觉得我浪费了很多时间参加仪式而不是编写我真正想要的代码 - 我停止使用它。
    • 我的方法使用t4生成存根 - 开发人员可以选择从特征文件生成,针对特定场景生成或根本不使用生成的代码。
  • 如何跨步骤/嵌套步骤共享状态

    • 大多数人使用dictionary<string,object>来帮助您将数据与从上下文对象访问的测试中的硬编码分开。
    • mine使用视图模型和指向那些视图模型的指针 - 如果您使用像angularjs这样的东西,您在服务器端显示/编辑器模板和angularjs控制器中使用视图模型,那么为什么不在测试中重复使用它们呢?
  • 尽早启动CI - 让开发变得透明

实施例: 修改意味着业务和开发人员的Gherkin声明不匹配 - 我们需要谈论哪些事情发生了变化?

缺少什么?用于呈现ResultDiff创建的.json文件的仪表板。这是在我的积压..... 通过支持多个环境(代码分支)的集中式仪表板,此仪表板将为所有利益相关者(业务,开发人员)提供正在开发的功能的状态。

答案 2 :(得分:1)

有一个名为“omelet”的框架,它是在java的topng上为selenium构建的, 对于跨浏览器多并行测试,它可以轻松地与您的CI工具混合,并具有一些很酷的报告功能和步骤级报告

在BrowserStack和Grid上运行测试用例绝不像配置更改的omelet那么容易。

如果您想尝试一下,请按照网站上提供的 5分钟教程进行操作,maven central上有可用的原型+还有更多功能

稳定版本是1.0.4,我们目前正在寻找有助于项目的人。

here

上的文档

Github link