2011-03-19 110 views
30

我想知道的最佳实践开发Web测试自动化框架硒网络测试自动化框架最佳实践

  1. 我基本上都看过博客的夫妇,终于说服在书中列出的大卫·伯恩斯方法您的意见 - "Selenium 1.0 Testing Tools: Beginner’s Guide" in chapter 7

  2. 保持所有的方法,在一个单独的类文件中的特定页面的验证,使它精致,可维护。

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

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

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

  6. 如果这个问题已经在相关帖子中回答,请张贴链接。在发布这个问题之前,我查了几篇文章。

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

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

  9. 请分享给上述问题的最佳实践/建议。对于所有以上实现的Dataproviders,我们可以在XML中传递数据,以便测试数据管理。

  10. 我们需要考虑什么设计方法来开发基于模型的测试自动化套件。

  11. 有没有人试过使用框架http://www.w3qa.eu/framework.html。任何意见/反馈意见请提供

+0

Selenium文档提供了很好的[总结](http:// seleniumhq。org/docs/06_test_design_considerations.html) – 2011-03-19 10:33:18

回答

37

大卫伯恩斯是一个聪明的人。他的书对于那些想要学习Selenium基础知识并测试自动化的人来说是一个很好的起点。当然,拿他的(和我的,和其他人的)建议,一粒盐。有很多专家和很多反对意见。你必须弄清楚什么最适合你。

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

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

youtube - Simon Stewart Talks about automated test patterns and Selenium

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

youtube TestNG

哦的人...我不能发布两个以上的链路现在...哦...我建议在YouTube上寻找GTAC视频,在viddler saucelabs视频,西蒙·斯图尔特博客,TestNG的文档,网页对象的例子,由Brett Pettichord一纸所谓的七个步骤自动化的成功。

祝你好运!

+0

谢谢萨姆你的回答为我的问题提供了很好的清晰度。此外,请添加您对#7和#8分的评论。 – Siva 2011-03-20 08:25:50

+1

+1向我介绍[页面对象测试设计模式](http://seleniumhq.org/docs/06_test_design_considerations.html#page-object-design-pattern)。 (我在你的文章中添加了一个链接) – k3b 2011-03-20 09:20:43

4

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

+0

是的,这是有道理的。在不同层面进行测试。感谢您分享您的观点。 – Siva 2011-05-17 09:18:46

4

我的朋友们,如果你的是做自动化测试,请确保对以下几件事:

  1. 清楚地写测试用例。
  2. 请确保您有专长的JUnit。
  3. 确保您了解项目和测试环境的业务/功能需求。

感谢。

17

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

  • 使用PageObjects模式
  • 流利与
    • 回本,可变参数,泛型,
    • 重用模型和jodatime
  • 是稳健和便携
    • 首选选择顺序为:ID>名称> CSS>的XPath
    • 避免了Thread.sleep宁愿等待或FluentWait
    • 使用相对URL
    • 不要依赖于特定的驱动程序实现
    • 创建数据集
  • 了解你的新工具
    • 不断更新(版本和使用PATT ERN)
    • 故障排除
      • JRE 1.6
      • IE(变焦,保护模式设置)
      • 的Firefox/Firebug的起始页
    • 如何应对像...文件上传UI组件,日期选择器,ajaxtables,...
    • 检测硒时是不是工作的好工具
    • 不要害怕侵入硒IUM
+0

+1发布这个非常好的博客/参考。作者分解了很多自动化框架的最佳实践。 http://mestachs.wordpress.com/2012/08/13/selenium-best-practices/ – 2014-03-12 04:36:33

+0

为什么我们应该熟悉可变参数和泛型? – testerjoe2 2016-11-05 19:08:59

+0

@ testerjoe2只是为了使它更易于读写。您可能会花80%的时间阅读您的测试代码。 – mestachs 2016-11-07 15:27:39

6

我已经在五个不同的应用程序(WinRunner的中,LoadRunner,QuickTest Professional的,TestComplete,硒的webdriver),我已经找到了一些东西,我已经工作编写的代码测试框架:

  1. 如果一个测试套件的速度和意义是快速的,那么您就不需要框架。我的第一次测试基本上是无框架的。
  2. 当您进入更复杂的应用程序时,对象存储库(用于GUI应用程序)和页面对象(用于Selenium WebDriver)使工作更有效。
  3. 我倾向于花时间在工具上来帮助测试过程并平滑工具的边缘。

我使用TestNG,WebDriver和Spring来构建我现在的测试框架。我把这个框架的一部分放到了自己的一套OSS库中,以便其他人可以重新使用它们。现在,我可以注入自定义元素类型,并添加了一些基本类型来完成表单工作。它非常粗糙,它不是一个独立的框架;你必须将它集成到你自己的框架中,但是我尽量保持依赖关系最小化。