Selenium 自动化应该避免的测试场景
Selenium 是一个非常流行的 Web 自动化测试框架,如今 Selenium 自动化的需求量很大。但是在测试中并不总是建议使用 Selenium 测试所有的测试场景。作为 Web 自动化工具,Selenium 主要旨在测试不同的 Web 应用程序在不同浏览器上执行的正确性,但自动化一切是不合理的。
下面我们了解为什么无法不建议使用 Selenium WebDriver 实现所有自动化,并分析它不独立支持哪些测试场景。
验证码
大多数网站上看到各种清怪的验证码,用来评估用户是机器人还是真人。可以理解,验证码是关于防止自动化的。否则,它将无法执行预期的操作。Selenium 测试自动化不能用于大多数图形验证码。但是遵循下面提到的最佳实践之一可以绕过它。
在遇到验证码时,可以考虑以下自动化测试场景的做法:
应在测试环境中通过在软件中进行简单配置或通过设置 URL 参数来禁用验证码
添加钩子可以让测试绕过验证码
是验证码变成非必选项
视觉测试
视觉自动化测试或屏幕截图测试侧重于检查图形用户界面是否符合最终用户的预期。Selenium 可以捕获整个页面和页面上的 Web 元素的屏幕截图。检查页面在不同设备和屏幕分辨率上的外观很重要。与其投资 WebDriver,不如投资一个可视化测试工具。截屏是一回事,但对图像进行视觉比较是完全不同的过程,Selenium Web Driver 无法处理这类场景。
两因素身份验证
不应该进行 Selenium 自动化的另一种情况是双因素身份验证,其中移动应用程序通过使用身份验证器并电子邮件、手机号等发送消息。尽管可以在 Selenium 中自动化此场景,但将其与 Selenium WebDriver 集成是一项重大挑战。这仅仅是因为它会添加另一层,这是不安全的。可以考虑执行以下操作:
在测试运行时在测试环境中禁用 2FA
为用于运行的特定用户凭据禁用 2FA
从特定 IP 登录时禁用 2FA
使用特定参数绕过 2FA
二维码
这里不建议将 Selenium 用于二维码验证。通过将外部 API 集成到 Selenium WebDriver 测试框架中,可以验证和自动化条形码。手动测试比自动测试更受欢迎,因为它产生更好的准确性。
文件上传和验证
Selenium WebDriver 可用于在 Web 应用程序中执行测试场景。例如 Selenium Webdriver 自动模拟用户点击上传按钮的动作,但它无法验证文件是否已成功上传并显示在屏幕上。像 AutoIT 这样的工具用于 Windows 的文件上传,之后必须使用额外的验证工具来验证上传是否成功。团队只有在迫切需要自动化用户流程的步骤时才会选择这样做。
文件下载和验证
尽管可以使用 Selenium 执行文件下载场景测试,但它无法验证下载中正在进行的内容下载进度。验证的唯一方法是比较下载项目中的文件数量。此外,验证下载的内容是否符合预期需要一些人工干预。
性能测试
性能测试是另一个不应该使用 Selenium WebDriver 自动化的测试场景。Selenium WebDriver 测试受到外部和内部脆弱点的影响,例如浏览器启动速度、HTTP 服务器速度、JavaScript 和 CSS 第三方服务器的响应、WebDriver 实现的检测损失等,不在我们的控制范围内。您可以使用 Google Lighthouse 等前端性能测试工具来执行更快的性能测试,或者使用 JMeter 来执行负载测试。
应用程序爬虫
Web 爬虫可以通过找出哪些链接被破坏来节省时间和成本。Selenium WebDriver 不是推荐的通过链接爬取的工具。因为根据测试的编写方式,爬取需要较长的等待时间。当页面或链接很少时,使用 Selenium WebDriver 查找损坏的链接可能会起作用。因此,链接爬虫工具必须满足性能要求。可以考虑使用比 Selenium 更简单的工具来检查断开的链接。
社交网站和电子邮件
不建议通过 UI 对社交媒体和电子邮件登录执行 Selenium 自动化场景测试,因为集成这些应用程序可能会获取不可靠的测试性能。因此,最好在这种情况下添加对应 API,以加快测试执行速度和提高可靠性。
音频或视频流
如今,大家在某站上在线消费大量视频内容。因此,对视频内容进行自动化测试也变得至关重要。Selenium WebDriver 不适用于此类场景的测试自动化。因为 Selenium 对于在线视频播放器等控件识别并不总能保持稳定可靠。StreamTest 是一款免费工具,可以测量 URL 的执行情况并检查最终用户体验质量,但其输出并非百分百可靠。甚至 JavaScript Executor 和 FlexUISelenium 也无法提供可靠的结果。人工智能可能有助于衡量视频质量。
在线屏幕共享平台
COVID-19 大流行的兴起增加了我们对远程工作的在线视频会议平台的依赖。由于其不断增长的需求,测试和自动化用户测试场景变得至关重要。为此目的使用 Selenium 之类的工具无助于实现预期的测试效率。像这样的应用程序需要比 Selenium 更适合的工具。
安全测试
保护 Web 应用程序和保护其他在线产品免受安全威胁是任何企业的关键需求。网络安全团队使用 JSky、Owasp Zap、Burp 套件等不同工具来实现完整的网络安全,以保护网络应用程序和其他在线服务免受任何可能的安全威胁。Selenium 不具备执行安全测试的能力。
Windows 应用测试
Selenium WebDriver 无法自动化 Windows 应用程序。因此,微软创建 WinAppDriver(Windows 应用程序驱动程序)来支持基于 Windows 的应用程序的类似 Selenium 的 UI 测试自动化。它需要像 Visual Studio 这样的 C#编码环境来执行在 Windows 应用程序上运行的自动化测试场景。甚至 Sikuli 和 AutoIT 也可用于测试 Windows 组件。
Mac 应用测试
出于与 Windows 应用程序相同的原因,Mac 应用程序测试同样不适用于 Selenium WebDriver。对于 Mac 应用程序,Appium 的 Mac 驱动程序与现有的 Selenium 测试框架集成可以执行基本的自动化。
移动应用测试
不建议将 Selenium 用于移动应用程序测试。Appium Mac Driver 是 Espresso、UI Automator 和 XCUITest 框架上的一个集成应用。因此,理想情况下,应该考虑使用这些工具来实现最大效率并涵盖大多数测试场景。
结论
自动化测试旨在节省精力、时间和金钱,而 Selenium 是跨浏览器兼容性测试的理想工具。在一些不合适的场景下,执行 Selenium 测试自动化不会增加任何价值,甚至某些情况下会起反作用。希望上面提到的几点能够帮助到各位。
Have Fun ~ Tester !
版权声明: 本文为 InfoQ 作者【FunTester】的原创文章。
原文链接:【http://xie.infoq.cn/article/5363fbccf9d26484695582691】。文章转载请联系作者。
评论