selenium - 寻找开源网络测试自动化框架

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

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

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

框架要求:

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

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

附注 我读过一些关于 Hermes Framework 和 Robot Framework 的内容,但尚未尝试过,欢迎任何帮助。

最佳答案

这个问题好的一面是:有很多灵活的工具和方法,您可以聚集在一起构建灵活、可靠和健壮的测试自动化框架。
困难的部分是:是的,没有“开箱即用”的解决方案,您需要找到并组合大量工具才能解决这个测试自动化难题。
我的建议是:

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

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

  3. 那是一个艰难的时刻。您需要决定:是否要使用 PageObject 方法来构建测试自动化框架,或者您是否要选择更简单的方法,而不大量使用面向对象编程。
    正确设计的页面对象使您的测试自动化代码更易于维护。利用面向对象编程——您可以在代码中施展魔法:少写多做。不过,这种方法需要更多技巧。
    以下是有关此主题的好文章:
    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
    我还有很多话要说。构建测试自动化框架的方法有很多,但目前还没有现成的解决方案。

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

关于selenium - 寻找开源网络测试自动化框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20860148/

相关文章:

selenium - 如何使用 Selenium WebDriver 获取图像 src 名称

java - 无法在 IE 上使用 Java 中的 Selenium WebDriver 获取新窗口句柄

maven - 获取解析器错误 : inconsistent cell count within the table - while running tests in Parallel - Selenium Cucumber Maven framework with Junit

python - 用于大数据转储的 vcrpy

laravel - 测试 Laravel Controller 的 try catch

python - 如何通过 Selenium 和 Python 单击跨度类文本

selenium - 如何链接和扩展多个 docker 容器?

python - 有没有办法解析网站内容的 DOM 树?

selenium - dataProvider 与@Before testng

laravel - Laravel Dusk 测试结果可以记录吗?