作者:京东批发 杜兴文
随着前端技术的一直倒退和应用程序的日益简单,前端自动化测试也在一直演进。
Web 前端 UI 自动化测试发展史能够追溯到 2000 年,过后最早的 Web 应用程序越来越简单,开发人员开始应用自动化测试工具来确保应用程序的正确性和可靠性。
在晚期,自动化测试是通过应用脚本或脚本来模仿用户的操作来实现的。这些测试工具通常基于 JavaScript 编写,并且须要对 Web 应用程序的交互方式进行深刻理解。
随着 Web 应用程序变得越来越简单,自动化测试的需要也越来越高。2005 年,Selenium 开始风行,它是一种基于 Java 的自动化测试框架,能够用于模仿用户操作并进行 Web 应用程序的自动化测试。
Selenium 和其余自动化测试工具的呈现使得 Web 前端 UI 自动化测试变得更加容易和高效。随着 Web 应用程序的一直演变,自动化测试工具也在不断更新和倒退。现在,自动化测试曾经成为 Web 利用程序开发过程中不可或缺的一部分,它们能够帮忙开发人员更快地发现和修复谬误,进步应用程序的性能和可靠性。
上面是前端自动化测试经验的阶段:
- 手动测试:晚期的前端开发过程中,开发人员须要手动测试代码的正确性,这须要大量的工夫和精力。
2. 单元测试:随着前端技术的一直倒退,单元测试开始呈现。单元测试是一种自动化测试方法,它测试代码中的最小可测试单元,例如函数或模块。单元测试能够帮忙开发人员更快地发现和修复代码中的谬误。
- 集成测试:集成测试是单元测试的进一步倒退,它将单元测试集成到整个应用程序的测试中。这种办法能够更疾速地发现整个应用程序中的谬误。
- 端到端测试:端到端测试是一种自动化测试方法,它测试从输出到输入整个端到端应用程序的过程。这种办法能够帮忙开发人员更快地发现和修复应用程序中的整个端到端谬误。
- 继续集成和继续交付:继续集成和继续交付是一种自动化测试方法,它将测试集成到整个开发周期中,包含代码提交、构建、测试、部署等环节。这种办法能够帮忙开发人员更快地交付高质量的应用程序。
- 自动化测试框架和库:随着前端自动化测试的一直倒退,呈现了许多自动化测试框架和库。这些框架和库能够帮忙开发人员更疾速地编写和运行测试用例,进步测试效率和品质。
- 人工智能和机器学习:最近这些年来,人工智能技术和机器学习办法逐步利用于前端自动化测试中。这些办法能够帮忙开发人员更疾速地辨认和修复谬误,进步测试效率和品质。
总之,前端自动化测试是一个一直倒退的畛域,随着前端技术的一直倒退和应用程序的日益简单,测试人员须要一直地学习新技术和办法来跟上变动。
同时呢,咱们在做前端自动化的时候又会随同着一些挑战
编写 UI 测试脚本可能会很耗时,因为这部分工作须要测试循环之前就要做好。但这份辛苦是值得的;只不过,UI 脚本实质上是软弱的。大多数测试是通过 Selenium 测试脚本实现的,这些脚本能够用多种语言编写,例如 Java、Python 和 C++。
上面列举一些挑战事项:
- 重常识。编写脚本的人必须具备该方面的技术常识和教训。
- 耗时。因为流程的起因,一项测试可能须要 5 – 10 多分钟能力运行。加载浏览器 > 执行工作 > 设置和解析测试 > 数据加载等等。
- 保护。古代应用程序具备动静前端 UI。当同一页面从新加载时,其中的元素定位器和链接可能会在后盾更改它们的定义形式。期待条件可能会毁坏测试。如果页面加载工夫更长,则会返回一个损坏的测试。
- 解决多个谬误。简单的场景意味着微小的数据量。筛选这个可能很麻烦。
- 故障排除。依据问题的频率和修复它所破费的工夫,找出是什么毁坏了测试可能很艰难。
- 动静利用。因为麻利开发,Web 应用程序以及应用程序自身始终在发生变化。测试必须从保护角度和后果角度来思考。
前端自动化测试最佳实际又是什么呢,上面列举一些:
因为用户界面是用户触摸和看到的,因而实现自动化测试以缩短公布周期至关重要。与开发一样,所有团队都能够遵循一些相似的最佳实际,以确保从他们的自动化投资中取得丰富的投资回报。
1. 遵循统一的命名约定。
2. 查看哪些测试用例应该自动化。
3. 创立品质测试数据。
4. 放弃测试独立。
5. 不要只依赖一种类型的测试。
6. 当您实际上应该暂停 UI 测试时,请防止零碎休眠。
7. 并非所有测试都必须在所有指标浏览器中应用。
8. 钻研无头浏览器测试。
9. 思考应用 BDD 框架。
10. 应用数据驱动与反复测试。
11. 简单化测试。
12. 截取屏幕截图以改良故障考察。
13. 应用正确的自动化测试工具。
在过来的几年里,至多呈现了十几种全新的 UI 测试自动化工具。因为每个工具都有本人的重点和策略,因而很难从中抉择。不过您能够参考 10 个必不可少的 Web UI 测试工具,只须要分别哪一个有您的团队所须要的性能。
正如任何一个 UI 测试人员可能会争执的那样,UI 测试绝对简略,只有您的 GUI 中没有任何变动,但问题是……界面始终在变动。依据您为 UI 测试抉择的解决方案,一直变动的条件可能是具备自我修复和 AI 定位器的革命性体验,也可能是简单的手动工作流程的重大失败。
以下是一些罕用的 Web 前端 UI 自动化测试工具:
1. Parasoft Selenic
2. Katalon
3. Selenium IDE
4. mabl
5. TestIM
6. Functionize
7. Perfecto
8. TestCraft
9. Squish
10. AutonomIQ
1. Parasoft Selenic
Parasoft Selenic 最亮的性能莫过于自我修复和 AI 驱动倡议,可帮忙团队无效保护其现有的 Selenium 脚本,无需退出 Selenium 即可从高级 UI 测试稳定性中受害,通过将简略的单行代码更改为命令行执行,即可激活适宜现有 CI / CD 管道的性能;一个智能的测试创立工作流程,使测试人员能够应用页面对象模型疾速创立可保护的 Selenium 测试。
长处:
- 智能记录器能够轻松创立应用页面对象模型的 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 是近几年来比拟风行的自动化测试工具,在自动化测试工具年度评比中仅次于 selenium 位居第二,他与 selenium 有着很多类似的中央又有很多不同,比如说他们有如下相同点:
他们都能够进行网页自动化测试。katalon 的 recorder 对标于 selenium IDE,都能够进行网页的自动化脚本录制
他们都能够导出代码,其中 katalon 的 recorder 也能够导出 selenium 的代码
katalon 的 recorder 与 seleniumIDE 的性能有很多雷同。
Katalon 的长处:
- 举荐智能定位器
- 应用页面对象模型(但仅用于在 IDE 中生成和治理的测试)
- 具备故障复原性能(通过付费插件)
- 可能导出到多种不同类型的测试脚本
- 反对 BDD。性能文件执行 Katalon 测试代码
毛病:
- 尽管您能够将测试导出为 Selenium 和其余测试脚本,然而一旦导出,将失去 Katalon 的所有可用性,并且导出不包含页面对象模型,这意味着测试变得难以重用和保护
- 他们的客户反对仅在企业级别可用,而且十分低廉
- 不间接集成到您现有的执行框架中(应用专有框架,CI 集成可用作插件)
3. Selenium IDE
Selenium IDE 应该说是咱们用的最多的 web 自动化测试工具了,Selenium IDE(集成开发环境) 是套件中可用的最简略的框架。它用作为 Firefox 插件,因而装置和应用非常简单。通过极少的编程常识和靠近零的培训,就能够开始应用 Selenium IDE。对于初学者,要理解 Selenese 命令,还要理解脚本语法,这是一个很好的工具。
它提供了一个 GUI(图形用户界面),用于在 Firefox 浏览器中记录必要的操作。抉择在 Firefox 浏览器以后显示的页面上显示的 UI 元素时,Selenium IDE 运行时的右键单击将依据所选 UI 元素的上下文显示具备预约义参数的 Selenium 命令列表。这使脚本变得更加容易!
更多请浏览:https://www.yiibai.com/hotnews/tempa/ide-benefits-limitations.html
长处:
- 很容易装置和应用。
- 不须要编程教训。
- 具备内置的帮忙性能,并显示所选或输出的命令的文档
- 通过显示信息和谬误音讯帮忙调试。
- 它容许在必要时设置断点,插入命令和正文。
- 为扩大提供良好的反对,有助于导出可在 Selenium RC 和 WebDriver 中执行的测试。
毛病:
- 作为 Firefox 插件,它不反对 Mozilla Firefox 以外的任何浏览器。
- 它没有明确提供帮忙来反对警报,弹出窗口和导航。
- 它不反对监听器。
- 不反对错误处理和数据库测试。
- 它不能用于测试 iPhone 和 Android 应用程序。
- 不反对从内部文件读取和上传文件。
- 不反对迭代和条件操作。
// 更多请浏览:https://www.yiibai.com/hotnews/tempa/ide-benefits-limitations.html
要害要点: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 集成可用作插件)
- 不齐全成熟的技术