35

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

  1. 我基本上阅读了几个博客,最后对第 7 章中的“Selenium 1.0 测试工具:初学者指南”一书中列出的 David Burns 方法深信不疑。

  2. 将特定页面的所有方法和验证器保存在单独的类文件中,使其精炼、可维护。

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

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

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

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

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

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

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

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

  11. 有没有人尝试使用框架http://www.w3qa.eu/framework.html。任何关于相同的评论/反馈,请提供

4

5 回答 5

40

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

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

了解其他设计模式也很有用,在您的测试框架中使用它们可能是一个好主意。不幸的是,没有单一的“最佳”方法。您可能必须使用多种模式和多种方法来获得良好的测试代码。我建议从小处着手,编写一些测试,注意代码异味并进行重构。您的测试框架将会增长。您不必预先设计所有内容。敏捷。使用迭代的增量方法。(不要使用 Selenium IDE)

youtube - Simon Stewart 谈论自动化测试模式和 Selenium

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

youtube TestNG

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

祝你好运!

于 2011-03-20T03:09:37.423 回答
18

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

  • 使用 PageObjects 模式
  • 流利地使用
    • 返回这个,可变参数,泛型,
    • 重用你的模型和jodatime
  • 坚固且便携
    • 首选选择器顺序:id > name > css > xpath
    • 避免 Thread.sleep 更喜欢 Wait 或 FluentWait
    • 使用相对 URL
    • 不要依赖特定的 Driver 实现
    • 创建数据集
  • 了解您的新工具
    • 保持最新(版本和使用模式)
    • 故障排除
      • 杰瑞 1.6
      • IE(缩放,保护模式设置)
      • Firefox/firebug 起始页
    • 如何处理 UI 组件,如... fileupload、datepicker、ajaxtables、...
    • 检测硒何时不是工作的好工具
    • 不要害怕破解 selenium
于 2012-08-22T19:43:45.247 回答
7

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

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

我使用 TestNG、WebDriver 和 Spring 来构建我目前的测试框架。我将这个框架的一部分提取到它自己的一套 OSS 库中,以便其他人可以重用它们。现在我可以注入自定义元素类型,并且添加了一些基本类型来完成表单工作。它真的很粗糙,而且它不是一个独立的框架;您必须将其集成到您自己的框架中,但我尝试将依赖关系降至最低。

于 2012-12-13T17:26:30.413 回答
4

朋友们,如果你在做自动化测试,请确保以下几点:

  1. 把测试用例写清楚。
  2. 确保您具备 JUnit 方面的专业知识。
  3. 确保您了解项目和测试环境的业务/功能要求。

谢谢。

于 2012-03-13T11:27:44.437 回答
3

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

于 2011-05-16T09:33:34.373 回答