伙计们我正在寻找Web测试通用自动化框架,可用于对各种基于Web的应用程序进行自动化测试。查看基于C#的框架,因为这是我更熟悉的语言。但是任何其他语言框架也会这样做,它不应该使用任何专有/许可语言。 框架应该有一些开源和免费的许可证模型。
我在Google和SO上搜索了基于selenium的框架。但是没有任何有源代码的可用。如果框架封装了Selenium WebDriver和/或Selenium RC提供的所有功能,并使功能测试人员能够在人类可读的脚本中创建和维护测试,那将是一件好事。
框架要求:
框架代码应避免对测试步骤进行硬编码。我的想法是在自动化框架代码之外维护测试脚本,以便在需要时可以轻松修改它们。框架应该读取步骤表和数据表并相应地运行测试。
如果现在没有这样的框架,那么我们可以在开源社区模型中共同构建这样的框架。
P.S。 我已经阅读了一些关于Hermes框架和机器人框架的内容,但尚未尝试过它们,欢迎任何帮助。
答案 0 :(得分:2)
这个问题的好处是:有很多灵活的工具和方法,你可以聚在一起构建一个灵活,可靠和强大的测试自动化框架。
困难的部分是:是的,没有“开箱即用”的解决方案,你需要找到并组装大量工具才能解决这个测试自动化难题。
我会推荐什么:
首先,您需要选择单元测试测试框架。这是一个有助于在代码中识别单独方法作为测试的工具,因此您可以一起或单独运行它们并获得运行结果,例如通过或失败。
我个人认为,Visual Studio 2013(以及Express Edition)附带的测试工具 - MS-Test 已经足够了。另一种选择是: NUnit 或 Gallio Icarus
所有单元测试框架都包含一种在测试中进行断言的机制。断言类的能力取决于给定的单元测试框架。在这里,我想推荐一个流行的图书馆,它对整个单元测试框架非常有用 这是 Fluent Assertions (也可以从NuGet存储库获得)。
这是一个艰难的时刻。您需要决定:是否要使用PageObject方法来构建测试自动化框架,或者您将选择更简单的方法,而不会大量使用面向对象的编程。
正确设计的页面对象使您的测试自动化代码更易于维护。利用OOP - 你可以在你的代码中做一些魔术:少花钱做更多。虽然,这种方法需要更多的技巧
以下是关于这个主题的好文章:
Maintainable Automated UI Tests
这一个:
Tips to Avoid Brittle UI Tests
PageObject的替代方法是一种脚本方法。这种方法也很成功,开始时间较短 Coypu 是Selenium Web Driver此类框架的一个很好且可用的示例。
所有流行的单元测试框架都支持数据驱动的测试。最好的支持在NUnit中 - 您可以运行/重新运行并查看在测试树中为单个数据行生成的测试。
MS-Test支持从不同的数据源读取数据:文本文件,excel,mssql等,但不能重新运行单个数据行的测试。虽然,有一个黑客 - Ms-Test Rows
对于我的数据驱动测试,我使用了一个很棒的库 - Linq to Excel
我还有很多话要说。构建测试自动化框架的方法有很多 - 而且还没有现成的解决方案。
我正在尝试根据我的测试方法构建一个 - SWD.Starter。 该项目仍处于早期开发阶段。但是,至少,你可能会找到一些如何构建和组织测试自动化代码的技巧。
答案 1 :(得分:1)
我已根据我之前在大型项目“尝试”实施完整的端到端测试的经验来实施https://github.com/leblancmeneses/RobustHaven.IntegrationTests。
我一直在使用它,并且对于一般的selenium,angularjs和kendo ui工作有很多有用的扩展。由于这个框架不突兀,你可以使用这些扩展而不使用任何其他东西。
我在我的最新项目中使用它,每个人都喜欢它。
有很多bdd / spec框架(specflow,mspec,nspec,storyq)可以帮助您将系统的行为连接到测试。
我学到了什么:
让任何.net开发人员/测试人员无法开始编写/运行测试。
使用原始规范创建测试的存根 - 希望可读代码
如何跨步骤/嵌套步骤共享状态
dictionary<string,object>
来帮助您将数据与从上下文对象访问的测试中的硬编码分开。尽早启动CI - 让开发变得透明
实施例: 修改意味着业务和开发人员的Gherkin声明不匹配 - 我们需要谈论哪些事情发生了变化?
缺少什么?用于呈现ResultDiff创建的.json文件的仪表板。这是在我的积压..... 通过支持多个环境(代码分支)的集中式仪表板,此仪表板将为所有利益相关者(业务,开发人员)提供正在开发的功能的状态。
答案 2 :(得分:1)