Selenium Web测试自动化框架最佳实践[关闭]

问题描述 投票:32回答:5

我想知道您对开发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. 请分享您对上述问题的最佳做法/建议。对于以上所有实现Dataproviders,以XML格式传递数据,我们可以利用测试数据管理。
  10. 我们需要考虑采用何种设计方法来开发基于模型的测试自动化套件。
  11. 有没有人尝试使用框架http://www.w3qa.eu/framework.html。任何评论/反馈请提供
testing selenium testng ui-automation qa
5个回答
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撰写了一篇名为“自动化成功的七个步骤”的论文。

祝好运!


18
投票

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

  • 使用PageObjects模式
  • 能流利 归还这个,varargs,泛型, 重用你的模型和jodatime
  • 坚固耐用,携带方便 首选选择器顺序:id> name> css> xpath 避免Thread.sleep更喜欢Wait或FluentWait 使用相对URL 不要依赖特定的驱动程序实现 创建数据集
  • 了解你的新工具 保持最新(版本和使用模式) 故障排除 jre 1.6 IE(缩放,保护模式设置) Firefox / firebug startpage 如何处理UI组件,如... fileupload,datepicker,ajaxtables,... 检测何时硒不是工作的好工具 不要害怕破坏硒

7
投票

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

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

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


4
投票

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


4
投票

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

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

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.