Selenium Web测试自动化框架最佳实践

时间:2011-03-19 00:30:11

标签: testing selenium testng ui-automation qa

我想知道您对开发Web测试自动化框架的最佳实践的评论

  1. 我基本上阅读了几个博客,并最终确信书中列出的大卫伯恩斯方法 - "Selenium 1.0 Testing Tools: Beginner’s Guide"中的chapter 7

  2. 将特定页面的所有方法,验证程序保存在单独的类文件中,使其更加精细,可维护。

  3. 我想知道使用设计模式设计自动化框架的优势。我不完全相信哪种方法最好。请添加您的建议。我们可以列出每个方法的优点 -

  4. 如果我们将所有步骤存储在数据库表中,获取并执行这些步骤会不会很好?在这种情况下,如果任何测试失败,这将在表中更新,我们可以选择性地仅运行失败的测试。

  5. 此外,可以通过有选择地查询表来完成报告,并且可以通过作业从这些表中清除数据。保持测试输出文件的结果/解析结果也没问题。

  6. 如果此问题已在相关帖子中得到解答,请发布链接。在发布此问题之前,我查了几篇帖子。

  7. 在网站中,与网站的用户交互是事件驱动的,用户可以与网站交互的方式可以是多种组合A-> B-> C或A-> C-> B 。进行所有可能的组合可提供最大范基于模型的测试自动化涵盖所有可能的状态

  8. 模拟所有可能状态的功能回归的自动化套件将模拟所有用户场景

  9. 请分享您对上述问题的最佳做法/建议。对于以上所有实现数据提供者,以XML格式传递数据,我们可以利用测试数据管理。

  10. 开发基于模型的测试自动化套件需要考虑哪种设计方法。

  11. 是否有人尝试使用框架http://www.w3qa.eu/framework.html。如有任何意见/反馈,请提供

5 个答案:

答案 0 :(得分:38)

大卫伯恩斯是个聪明人。对于想要学习Selenium基础知识和测试自动化的人来说,他的书是一个很好的起点。当然,带上他的(和我的,以及其他所有人的)建议。有很多专家和许多反对意见。你必须找出最适合你的方法。

是。将所有方法,特定页面的验证器保存在一个单独的类中绝对是一个好主意。你可以将其改为“分离动作和意图”或“用域语言编程”。无论哪种方式,您都希望避免在低级Selenese中编写测试。一种方法是使用 Page Object test design pattern 。 Selenium和其他selenium专家的许多贡献者都主张使用页面对象。这是使测试代码更健壮,可读和可重用的好方法。

了解其他设计模式也很有用,在测试框架中使用它们可能是一个好主意。不幸的是,没有单一的“最佳”方法。您可能必须使用多种模式和多种方法来实现良好的测试代码。我建议从小开始,写一些测试,注意代码气味和重新分解。您的测试框架将会增长。您不必预先设计它。敏捷。使用迭代的增量方法。 (不要使用Selenium IDE)

youtube - Simon Stewart Talks about automated test patterns and Selenium

不是将测试步骤放在数据库表中,而是使用Junit或TestNG等测试工具组织测试可能更好。 TestNG具有内置功能,可以选择性地重新运行失败的测试。它还具有非常好的报告功能。不要在这里重新发明轮子。学习像TestNG或Junit这样的测试框架。

youtube TestNG

哦,伙计......我现在不能发布两个以上的链接......哦......我建议在youtube上查找GTAC视频,在viddler上查找saucelabs视频,Simon Stewarts博客,TestNG文档,示例页面对象和Brett Pettichord的论文称为自动化成功的七个步骤。

祝你好运!

答案 1 :(得分:18)

http://mestachs.wordpress.com/2012/08/13/selenium-best-practices/

  • 使用PageObjects模式
  • 精通
    • 返回此,varargs,generics,
    • 重用您的模型和jodatime
  • 坚固耐用,携带方便
    • 首选选择器顺序:id>名称> css> xpath
    • 避免Thread.sleep更喜欢Wait或FluentWait
    • 使用相对网址
    • 不依赖于特定的驱动程序实现
    • 创建数据集
  • 了解您的新工具
    • 保持最新(版本和使用模式)
    • 故障排除
      • jre 1.6
      • IE(缩放,保护模式设置)
      • Firefox / firebug startpage
    • 如何处理UI组件,如... fileupload,datepicker,ajaxtables,...
    • 检测何时硒不是工作的好工具
    • 不要害怕乱砍硒

答案 2 :(得分:7)

我在五个不同的应用程序(WinRunner,LoadRunner,QuickTest Professional,TestComplete,Selenium WebDriver)下编写了代码测试框架,我发现有很多东西对我有用:

  1. 如果测试套件意味着快速而有意义,那么您不需要框架。我的第一次测试主要是基于框架的。
  2. 当你进入一个更复杂的应用程序时,对象存储库(用于GUI应用程序)和页面对象(用于Selenium WebDriver)使工作更有效。
  3. 我倾向于花时间研究工具来帮助测试过程并平滑工具的边缘。
  4. 我使用TestNG,WebDriver和Spring来构建我现在的测试框架。我将这个框架的一部分拉到自己的OSS库中,以便其他人可以重用它们。现在我可以注入自定义元素类型,并且我添加了一些基本类型来进行表单工作。它真的很粗糙,它不是一个独立的框架;你必须将它集成到你自己的框架中,但我尝试将依赖关系保持在最低限度。

答案 3 :(得分:4)

嘿。
如果你真的想要分离逻辑,最后你想为你的应用程序构建测试自动化框架,然后编写将使用这个新api的单元测试,而不是仅仅编写单元测试。大多数程序员可能会说不再是单元测试......也许他们不会。但这并不重要。你仍然可以做得很好。以下是链接,应该让你去。虽然他们谈到创建在整个应用程序(gui级别)上运行的功能测试,但我认为您可以应用相同的方法来实现您的目标。我简短介绍了如何编写3层测试,因此您将逻辑与实现分离。

答案 4 :(得分:4)

我的朋友们,如果您正在进行自动化测试,请确保以下事项:

  1. 清楚地写下测试用例。
  2. 确保您拥有JUnit的专业知识。
  3. 确保您了解项目和测试环境的业务/功能要求。
  4. 感谢。