彩票走势图

UI测试自动化:轻松摆脱Selenium问题

原创|行业资讯|编辑:郑恭琳|2020-05-27 15:46:38.710|阅读 298 次

概述:很明显,Selenium是使UI测试自动化的组织的最受欢迎的选择,但是团队仍然面临着挑战。了解如何解决这些挑战而不完全放弃该框架。 当我们对UI测试工具进行调查时,很明显Selenium已成为事实上的标准。但是奇怪的是,无论我们问谁,我们总是有同样的警告:“我们爱Selenium,但也有挑战。”

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

很明显,Selenium是使UI测试自动化的组织的最受欢迎的选择,但是团队仍然面临着挑战。了解如何解决这些挑战而不完全放弃该框架。

当我们对UI测试工具进行调查时,很明显Selenium已成为事实上的标准。但是奇怪的是,无论我们问谁,我们总是有同样的警告:“我们爱Selenium,但也有挑战

因此,我们回到了社区,问:“您在UI测试方面面临的主要挑战是什么?”

结果很明显:首要挑战是建立可随时间推移保持的测试。通过进一步的客户采访,我们将主要的Selenium问题归结为以下五个挑战:



  1. 创建可靠的定位器和等待条件
  2. UI更改时维护测试
  3. 调试和诊断自动化故障
  4. 执行整个套件所需的时间
  5. 创建脚本的知识/技能


然后,我们开始研究如何能够在不摆脱Selenium的情况下帮助解决这些问题。事实证明,您可以通过将添加到组合中来解决所有这些挑战,但是有很多相对简单的方法可以解决Selenium的所有挑战,而无需放弃每个人都明确喜欢的平台。


如何用Selenium解决前5大挑战


因此,让我们更深入地研究这些挑战以及如何解决它们。

挑战1:创建可靠的定位器和等待条件

创建可靠的定位器涉及了解如何构建每次都与正确元素交互并且在不同执行之间稳定的标识符。用户发现自己正在浏览Chrome开发人员工具,以找到合适的HTML块,弄清楚它在做什么,然后花时间来构建最智能的定位器。通常最终会发生的情况是,当元素定位器处于当前状态时,会在应用程序中选择它,并且在播放时,东西会有所不同。这真的很令人沮丧。

等待条件在这里也起着巨大的作用。对于现代Web应用程序,在单个页面中动态加载内容意味着即使找到正确的定位器,也必须聪明地建立正确的等待条件以确保元素准备好与之交互。这可能是一个巨大的痛苦。

解决方案:智能定位器

有很多UI测试解决方案都专注于使用术语“智能定位器”解决这一确切的挑战。 最初创建测试脚本时,智能定位器会捕获最智能的定位器,以使其更易于更改。 我最近的帖子指出了用于UI测试的10种出色的新工具,其中包括一些具有记录和回放功能的工具。

此外,还有适用于Chrome的插件,可在脚本创建过程中提供帮助,以从页面外提取最佳元素定位符。我一直在研究其中的几个插件,到目前为止,我见过的最好的插件是TruePath。

挑战2:当UI更改时维护测试。

对于正在进行的敏捷测试活动,这是组织面临的一项艰巨挑战。我们一次又一次地听到这个故事——测试人员花费大量时间来构建他们的Selenium测试(具有良好的定位条件和等待条件),然后应用程序UI更改并且测试中断,通常使夜间构建失败。然后,测试人员必须返回并找出应用程序中发生了什么变化,确定这是真正的缺陷/回归还是测试脚本有问题。然后通过识别和创建新的定位器/等待条件来完成修复或更新测试的过程。这是一个恶性循环。

解决方案:人工智能

人工智能确实可以在这方面为您提供帮助。是的,我知道,这些天AI真是个时髦的词。但是有非常实际的用法。特别是,在Selenium测试执行过程中使用机器学习来解决这一确切的挑战。每次测试运行都会在其历史记录中产生一个唯一的条目,显示DOM的当前状态并指示测试是否成功。

如果测试由于应用程序UI更改而失败,那么会时光倒流,并告诉您如何构建与新版本的应用程序一起使用的新定位器。这真的很强大,因为它意味着您不必离开Selenium即可解决因更改UI带来的维护挑战(该技术的另一个好处是它具有自我修复CI/CD管道的能力,可以在运行时自动将定位器更新为停止不必要的构建)。

挑战3:调试和诊断自动化故障

调试和诊断Selenium测试非常困难,并且可能会浪费大量的时间(尤其是在与不断变化的UI结合使用时)。我们发现,各种解决方案都试图通过为自己的框架提供高级报告功能来解决这一难题,但是随后,测试人员最终被锁定在专有平台或IDE中。如果您打算在整个余生中继续使用该供应商或工具,那么这是“好的”,但是想要保留开源所提供的原始自由的Selenium用户又如何呢?

解决方案:智能自动化和报告

为了解决这一挑战,您可以结合使用报告和测试执行分析,以及IDE工具。

通过将报告工具(如)插入现有的CI / CD管道中,您可以更轻松地了解哪些测试失败以及原因。通过运行时自我修复,Parasoft Selenic可以防止由于不稳定的测试而导致构建不必要地失败。测试完成后,将提供修复那些损坏的测试的建议,这些建议可以直接导入IDE以进行自动修复。

IDE本身(例如Eclipse和IntelliJ)具有调试功能,可让您在Selenium测试中设置断点并在特定点暂停应用程序,因此您可以提取有关UI状态以及可能发生的情况的信息,因为应用程序失败。

挑战4:执行整个脚本所花费的时间

与在应用程序的API/服务层上运行的测试相比,自动UI测试的运行时间更长(并且比隔离的单元测试要更长),并且创建的UI测试越多,执行这些测试所花费的时间就越多,并且您需要等待CI/CD管道反馈的时间更长。问题在于,由于频繁的代码更改,管道每天要触发多次,因此您不能等到第二天(有时是在周末)才能获得有用的反馈。需要一种优化测试套件执行的方法,以在快速反馈与全面覆盖之间取得平衡。

解决方案:测试影响分析

您可以在这里利用诸如测试影响分析之类的技术。通过跟踪每个Selenium测试涵盖的代码,并将其与代码库中的更改相关联,您可以确定需要执行以验证代码更改的测试子集的优先级。使用,您无需访问基础代码,因为它只需扫描二进制文件(例如.war或文件),识别在构建之间已更改了哪些类,然后将其映射到受影响的测试用例即可启用。您可以将一部分Selenium测试作为CI/CD管道的一部分运行。(查看Parasoft Selenic:如何在CI/CD管道中修复Selenium

挑战5:创建脚本所需的知识和技能

最后,首先创建Selenium测试所需的知识和技能会使Selenium的使用令人望而却步。根据我们与谁交谈,这是人们所面临挑战中的第一个或最后一个。我们通常会看到,当用户刚开始使用Selenium时,他们面临的第一大挑战是测试创建-但是一旦他们开始并建立成熟的测试实践,它就不再是第一挑战,而实际上是另一个挑战问题变得更加重要。因此,从我的角度来看,克服最初的障碍是真正的挑战。

解决方案:代码助手

诸如无代码的Selenium和NLP驱动的Selenium创建之类的事情,但是我还没有特别看到一种能像我们所有人希望的那样运作的东西。Selenium的主要现实之一是它的代码。这是好是坏?很好,因为如果您需要做的事情超出了“常规做法”范围,可以通过快速Google搜索找到一些好的代码示例。这很糟糕,因为它是代码,这对某些测试人员来说是一个障碍。

因此,您需要成为一名开发人员来构建Selenium脚本吗?答案是否定的,但是某些开发技能确实可以提供帮助。正如我之前提到的,许多出色的新UI测试工具都具有可以构建Selenium脚本的记录器,例如,SeleniumIDE和Katalon。这些帮助器工具将为刚接触Selenium的用户提供快速入门,并在无代码和已编码之间提供中间立场。当然,您必须意识到没有一个UI记录和回放工具是完美的(当然,也有解决这些挑战的方法)。


结论


Selenium是UI自动化的第一选择,技术每天都在进步,围绕支持Selenium并帮助解决其一些基本挑战的技术很多。UI测试对于验证客户体验至关重要,并且能够构建可长期维护的丰富且有意义的Selenium测试,将有助于增加我们行业的整体测试覆盖率,从而在将来构建更好、更有意义的体验。



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP