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 测试自动化不会增加任何价值,甚至某些情况下会起反作用。希望上面提到的几点能够帮助到各位。