漫谈前端自动化测试演进之路及测试工具分析

科技资讯 投稿 6500 0 评论

漫谈前端自动化测试演进之路及测试工具分析

作者:京东零售 杜兴文

Web 前端 UI 自动化测试发展史可以追溯到 2000 年,当时最早的 Web 应用程序越来越复杂,开发人员开始使用自动化测试工具来确保应用程序的正确性和可靠性。

随着 Web 应用程序变得越来越复杂,自动化测试的需求也越来越高。2005 年,Selenium 开始流行,它是一种基于 Java 的自动化测试框架,可以用于模拟用户操作并进行 Web 应用程序的自动化测试。

下面是前端自动化测试经历的阶段:

    手动测试:早期的前端开发过程中,开发人员需要手动测试代码的正确性,这需要大量的时间和精力。

2.单元测试:随着前端技术的不断发展,单元测试开始出现。单元测试是一种自动化测试方法,它测试代码中的最小可测试单元,例如函数或模块。单元测试可以帮助开发人员更快地发现和修复代码中的错误。

  1. 端到端测试:端到端测试是一种自动化测试方法,它测试从输入到输出整个端到端应用程序的过程。这种方法可以帮助开发人员更快地发现和修复应用程序中的整个端到端错误。

  2. 自动化测试框架和库:随着前端自动化测试的不断发展,出现了许多自动化测试框架和库。这些框架和库可以帮助开发人员更快速地编写和运行测试用例,提高测试效率和质量。

总之,前端自动化测试是一个不断发展的领域,随着前端技术的不断发展和应用程序的日益复杂,测试人员需要不断地学习新技术和方法来跟上变化。

同时呢,我们在做前端自动化的时候又会伴随着一些挑战

下面列举一些挑战事项:

    重知识。编写脚本的人必须具有该方面的技术知识和经验。
  • 耗时。由于流程的原因,一项测试可能需要 5 – 10 多分钟才能运行。加载浏览器 > 执行任务 > 设置和解析测试 > 数据加载等等。
  • 维护。现代应用程序具有动态前端 UI。当同一页面重新加载时,其中的元素定位器和链接可能会在后台更改它们的定义方式。等待条件可能会破坏测试。如果页面加载时间更长,则会返回一个损坏的测试。
  • 处理多个错误。复杂的场景意味着巨大的数据量。筛选这个可能很麻烦。
  • 故障排除。根据问题的频率和修复它所花费的时间,找出是什么破坏了测试可能很困难。
  • 动态应用。由于敏捷开发,Web 应用程序以及应用程序本身一直在发生变化。测试必须从维护角度和结果角度来考虑。

前端自动化测试最佳实践又是什么呢,下面列举一些:

1. 遵循一致的命名约定。

3. 创建质量测试数据。

5. 不要只依赖一种类型的测试。

7. 并非所有测试都必须在所有目标浏览器中使用。

9. 考虑使用BDD 框架。

11. 简单化测试。

13. 使用正确的自动化测试工具。

正如任何一个UI测试人员可能会争论的那样,UI 测试相对简单,只要您的 GUI 中没有任何变化,但问题是……界面一直在变化。根据您为 UI 测试选择的解决方案,不断变化的条件可能是具有自我修复和 AI 定位器的革命性体验,也可能是复杂的手动工作流程的严重失败。

1. Parasoft Selenic

3. Selenium IDE

5. TestIM

7. Perfecto

9. Squish

1. Parasoft Selenic

优点:

    智能记录器可以轻松创建使用页面对象模型的 Selenium 测试
  • 可以对现有的 Selenium 测试执行故障恢复,并在现有的 Selenium 测试中推荐智能定位器
  • 通过利用您现有的 Selenium 脚本或创建新的 Selenium 脚本,直接集成到您的 CI/CD 管道中
  • 提供测试影响分析技术,自动识别需要在 CI/CD 管道中执行哪些 Selenium 测试以验证新的代码更改
  • 提供各个级别的客户支持(不仅仅是企业)
  • 支持 BDD。专注于底层Java(JUnit和TestNG)Selenium测试代码的维护

缺点:

    此商业产品没有免费许可证,但可以免费试用。
  • 这个产品还是比较新的。当前版本支持 Java、JUnit 4 & 5、TestNG、Cucumber、Eclipse 和 IntelliJ。未来版本将考虑其他支持。

2. Katalon

他们都可以进行网页自动化测试。katalon的recorder 对标于selenium IDE,都可以进行网页的自动化脚本录制

katalon 的recorder 与seleniumIDE的功能有很多相同。

Katalon的优点:

    推荐智能定位器
  • 使用页面对象模型(但仅用于在 IDE 中生成和管理的测试)
  • 具有故障恢复功能(通过付费插件)
  • 能够导出到多种不同类型的测试脚本
  • 支持 BDD。功能文件执行 Katalon 测试代码

缺点:

    虽然您可以将测试导出为 Selenium 和其他测试脚本,但是一旦导出,将失去 Katalon 的所有可用性,并且导出不包括页面对象模型,这意味着测试变得难以重用和维护
  • 他们的客户支持仅在企业级别可用,而且非常昂贵
  • 不直接集成到您现有的执行框架中(使用专有框架,CI 集成可用作插件)

3. Selenium IDE

它提供了一个GUI(图形用户界面,用于在Firefox浏览器中记录必要的操作。选择在Firefox浏览器当前显示的页面上显示的UI元素时,Selenium IDE运行时的右键单击将根据所选UI元素的上下文显示具有预定义参数的Selenium命令列表。这使脚本变得更加容易!

优点:

    很容易安装和使用。
  • 不需要编程经验。
  • 具有内置的帮助功能,并显示所选或输入的命令的文档
  • 通过显示信息和错误消息帮助调试。
  • 它允许在必要时设置断点,插入命令和注释。
  • 为扩展提供良好的支持,有助于导出可在Selenium RC和WebDriver中执行的测试。

缺点:

    作为Firefox插件,它不支持Mozilla Firefox以外的任何浏览器。
  • 它没有明确提供帮助来支持警报,弹出窗口和导航。
  • 它不支持监听器。
  • 不支持错误处理和数据库测试。
  • 它不能用于测试iPhone和Android应用程序。
  • 不支持从外部文件读取和上传文件。
  • 不支持迭代和条件操作。

关键要点:Selenium IDE 使用简单,让用户能够快速创建针对其 Web UI 的测试。它对 Selenium 非常友好,对于习惯了该框架的人来说会感觉很便利。

4. mabl

    推荐智能定位器(但对用户来说有点模糊)
  • 故障恢复功能运作良好
  • SaaS解决方案;易于访问和入门
  • 可扩展的定价模型

缺点:

    记录流程时不使用页面对象模型
  • 使用自己的框架,没有测试脚本的导入导出
  • 虽然存在 CI 集成,但您无法将解决方案直接集成到现有框架中
  • 如果某些事情没有按您预期的方式工作,则很难访问“代码”以进行配置或操作
  • 对“流程”的关注使得创建“功能验证”(即带有断言的测试)感到尴尬
  • 仅 SaaS 解决方案;没有内部部署,也无法访问公共互联网中不可用的应用程序
  • 没有对 BDD 的内置支持

5.TestIM

    测试非常容易创建,具有直观的用户界面
  • 推荐智能定位器,以及维护它们的绝佳策略
  • 多种测试模式:TestIM 提供了多种测试模式,包括单元测试、集成测试、端到端测试等,可以满足不同场景和需求的测试需求。
  • 自动化测试:TestIM 支持自动化测试,可以使用 Python、Java 等编程语言编写测试脚本,提高测试效率和准确性。
  • 测试报告:TestIM 提供了可视化的测试报告,可以实时展示测试结果和缺陷数量,帮助开发人员快速了解测试进展情况。
  • 团队协作:TestIM 支持团队协作和任务分配,可以方便地管理和协调测试任务,提高测试效率和质量。
  • 云环境支持:TestIM 支持云环境部署和运行,可以方便地在不同设备和环境中进行测试和部署。

缺点:

    在他们的测试中不使用页面对象模型
  • 缺乏导入和导出测试脚本的能力
  • 用户无法访问代码或从 TestIM 中进行测试
  • 供应商锁定框架——脚本在 TestIM 框架中
  • 对 BDD 的支持不明确

6. Functionize

    出色的测试流程可视化显示
  • 为元素推荐多个定位器
  • 简单易用:Functionize 的文档和 API 非常清晰易懂,使得初学者可以快速上手。
  • 功能强大:Functionize 支持多种 Web 应用程序自动化功能,如请求拦截器、响应拦截器、请求工厂、数据可视化等。
  • 可扩展性:Functionize 支持自定义插件和扩展,使得开发人员可以轻松地添加和自定义功能。
  • 跨平台支持:Functionize 可以在 Windows、macOS 和 Linux 等多个操作系统上运行,使得开发人员可以在不同的环境下进行开发。

缺点:

    不能使用页面对象模型
  • 供应商锁定框架
  • 没有导入和导出测试脚本
  • 学习曲线较陡峭:Functionize 的文档和 API 较为复杂,需要开发人员有一定的 Python 编程基础才能理解和运用。
  • 需要大量的配置:Functionize 的功能非常丰富,但这也需要大量的配置和设置,可能会让开发人员感到繁琐。

7. Perfecto

    使用页面对象模型(但仅在其生成的测试中)
  • 为记录的 Web 元素提供多个定位器
  • 最近引入了故障恢复(虽然有点不清楚它的作用或性能如何)

缺点:

    测试脚本采用基于 TCL 的专有语言
  • 不能导入自己的 Selenium 脚本
  • 虽然它们提供 CI 集成,但它并未直接集成到您现有的框架中
  • BDD 通过第三方实施支持,Project Quantum

8. TestCraft

    使用页面对象模型(但仅在其生成的测试中)
  • 推荐智能定位器,称为“智能绑定”
  • 功能强大:TestCraft 提供了许多功能,能够满足不同类型的测试需求。
  • 易于使用:TestCraft 的安装和使用方法比较简单,可以快速上手。
  • 跨平台支持:TestCraft 可以在不同的操作系统上运行,包括 Windows、macOS 和 Linux 等。
  • 支持多种测试语言:TestCraft 可以与多种测试语言集成,包括 Python、Java、c 等。
  • 可以集成到其他工具中:TestCraft 可以与许多其他工具集成,例如 Git、Jenkins 等。

缺点:

    使用专有框架
  • 您不能导入/导出测试脚本
  • 不直接集成到您现有的框架中(CI 集成可用作插件)
  • 学习曲线较陡峭:TestCraft 的功能很多,因此需要一定的学习曲线,需要花费一定的时间来了解它的使用方法。
  • 复杂度比较高:TestCraft 的使用需要一定的技术能力,如果不熟悉测试理论、方法和工具,可能会感到复杂和困难。
  • 费用较高:TestCraft 是一种商业测试框架,需要支付一定的费用。

9. Squish

    广泛的跨平台测试支持
  • 强大的光学字符识别 (OCR 功能
  • 独立于屏幕布局的可靠对象识别和验证
  • 对脚本语言的良好支持

缺点:

    可能需要改进最终用户培训和技术支持,尽管大多数反馈是有利的
  • 向对象映射添加新对象时报告的一些问题

10. AutonomIQ

    强大的 NLP、AI 和 ML
  • 使用页面对象模型(但仅在其生成的测试中)
  • 通过 Chrome 插件推荐智能定位器
  • 在执行过程中故障恢复
  • 传统 BDD 的替代方法(使用专有 NLP)。如果您想做传统的 BDD(即 Cucumber),可能是个缺点

缺点:

    使用专有框架
  • 您无法导入测试脚本
  • 不直接集成到您现有的框架中(CI 集成可用作插件)
  • 不完全成熟的技术

编程笔记 » 漫谈前端自动化测试演进之路及测试工具分析

赞同 (37) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽