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

Posted

技术标签:

【中文标题】Selenium Web 测试自动化框架最佳实践 [关闭]【英文标题】:Selenium Web Test Automation Framework Best Practices [closed] 【发布时间】:2011-07-18 13:34:33 【问题描述】:

我想了解您的 cmets 开发 Web 测试自动化框架的最佳实践

    我基本上阅读了几篇博客,最后对书中列出的 David Burns 方法深信不疑 - "Selenium 1.0 Testing Tools: Beginner’s Guide" in chapter 7。

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

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

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

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

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

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

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

    请分享您对上述问题的最佳做法/建议。对于上述所有实现 Dataproviders,我们可以利用 XML 中的数据进行测试数据管理。

    在开发基于模型的测试自动化套件时,我们需要考虑哪些设计方法。

    有没有人尝试过使用框架http://www.w3qa.eu/framework.html。任何相关的 cmets/反馈请提供

【问题讨论】:

Selenium 文档提供了不错的 wrap-up 【参考方案1】:

大卫伯恩斯是个聪明人。对于想要学习 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 的一篇名为“自动化成功的七个步骤”的论文。

祝你好运!

【讨论】:

感谢山姆,您的回答为我的问题提供了清晰的答案。另外,请将您的 cmets 添加到 #7 和 #8 分。 +1 将我介绍给Page Object test design pattern。 (我在您的文章中添加了指向它的链接) 更新了 Selenium 中页面对象设计模式的链接,因为现有链接指向主页。新链接是seleniumhq.org/docs/… 在此期间,即使是那个也已经过时了。现在是:selenium.dev/documentation/en/guidelines_and_recommendations/…【参考方案2】:

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

使用 PageObjects 模式 流利使用 返回 this,可变参数,泛型, 重复使用您的模型和 jodatime 坚固便携 首选选择器顺序:id > name > css > xpath 避免 Thread.sleep 优先使用 Wait 或 FluentWait 使用相对 URL 不要依赖特定的驱动程序实现 创建您的数据集 了解您的新工具 保持最新(版本和使用模式) 疑难解答 jre 1.6 IE(缩放,保护模式设置) Firefox/firebug 起始页 如何处理 UI 组件,例如...fileupload、datepicker、ajaxtables... 检测硒何时不是工作的好工具 不要害怕破解 selenium

【讨论】:

+1 用于发布这个非常好的博客/参考。作者分解了许多自动化框架的最佳实践。 mestachs.wordpress.com/2012/08/13/selenium-best-practices 我们为什么要特别熟悉可变参数和泛型? @testerjoe2 只是为了使它更易于阅读和编写。您可能会花费 80% 的生命来阅读您的测试代码。【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

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

Quick overview Bigger explanation Inspiration for all above and few pdf describing it

【讨论】:

是的,这是有道理的。在不同的层进行测试。感谢您分享您的观点。【参考方案5】:

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

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

谢谢。

【讨论】:

以上是关于Selenium Web 测试自动化框架最佳实践 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

第 8 章 Page Object - Selenium3 自动化测试

2019最佳自动化测试工具(十大评论)

[Selenium自动化测试实战] 不打开浏览器如何进行WEB自动化测试

#yyds干货盘点# Selenium Web端自动化从入门到实践

selenium自动化测试框架都有哪些

基于Selenium+Python的web自动化测试框架