无代码化的测试自动化
2020年软件测试自动化的趋势除了智能化、云化、敏捷化/DevOps化、模型化等,还有一个亮眼的存在:Codeless Test Automation,即无代码化的测试自动化。不是没有代码,而是测试人员不用自己开发测试代码,使用Codeless测试工具可以帮助我们生成可以执行的测试用例集。如此将大大降低自动化测试的技术门槛,没有编程经验的测人员甚至是业务分析人员也可以很快上手,是不是令人心动?
实际上,这不仅是软件测试的一个新趋势,而且是整个软件工程的一个新趋势:无代码化的软件应用,比如国际上比较流行的无代码化网站创建工具包括Wix、Squarespace等。软件测试正是顺应这一趋势,出现了一些无代码化的测试工具。
在目前的软件测试中,为了达到一个比较高的测试自动化水平,测试人员还是有很多工作要做的,比如搭建测试环境、设计测试用例、开发测试脚本,有的组织还自己开发自动化测试工具或框架,这些几乎都需要手工完成,测试自动化也仅仅体现在测试执行的自动化上,开发测试脚本、适配到不同的软件版本、不同的浏览器(UI自动化测试),以及调试代码让其能够稳定运行一般都要花费不少时间。因此,即使在测试自动化水平比较高的团队里,软件测试也难免会成为软件快速交付的瓶颈。
当一个团队在单元测试方面投入不够,只能基于Selenium、Appium这样的测试工具来编写大量端到端的UI自动化测试脚本,团队里的开发人员一般是不负责的,就要求测试人员具备一定的编程能力,对于很多组织来说,大多数软件测试人员的编程能力比较弱,这也拖累了自动化水平的提高和面向测试自动化的转型。
Codeless自动化测试工具的出现正是为了解决上述难题,这类工具一般有两个核心特点:
- 提供友好的界面,测试人员不需要编写代码即可通过界面上的操作完成测试用例的开发。
- 通过人工智能(AI)和机器学习算法使测试用例具有自愈机制,能够自动进化和完善,自动修复和维护测试脚本中的对象和元素定位。
Codeless自动化测试工具能够带来的好处也显而易见,这就是更高的测试覆盖率和更短的软件交付周期。不仅节省测试脚本的开发时间,也节省调试时间,而且提升测试代码的可重用性,可以跨项目跨版本重用测试代码,而不需要手动更新和调试测试代码。此外,也有利于促进敏捷团队中不同技能和职责的团队成员参与软件测试,比如团队中的业务分析人员。
下面列举一些Codeless自动化测试工具。
1. Katalon Studio:
Katalon Studio是无代码化的测试工具里面最值得关注的,它是2015年推出的一个自动化测试框架,目前在国外各类机构的Top自动化测试工具排行榜中都排名靠前。另外,它的开源属性(也有收费版本)也大大促进了该工具的普及和发展,不过目前还没有中文版本。
Katalon Studio使用Selenium和Appium作为底层框架,支持Web和Android、iOS移动应用的UI自动化测试,支持多种主流浏览器。也支持Restful和Soap协议的API接口自动化测试。作为无代码的测试工具,既支持有编程经验的测试人员使用Groovy语言开发测试脚本,同时也支持没有编程经验的测试人员开发测试用例。
在UI自动化测试方面,它提供录制-回放功能,Web recorder utility接收应用程序上的所有动作,转化成测试用例。也提供object spy功能在界面上捕获元素对象来支持用户自己编写测试用例。
在最新的7.6版本中,Katalon Studio提供了UI测试用例自愈(self-healing)功能:在测试用例运行时,当使用缺省的定位方法(比如XPath)定位不到这个元素时,工具会自动尝试其它的定位方式进行元素定位(比如CSS),让测试得以运行,并在随后的测试中也使用新的定位方式。测试结束后会建议更新测试用例:用新的定位方式代替不工作的定位方式。但使用这个功能需要企业版的License。至于这个功能是不是通过AI技术实现的,在Katalon Studio的官方指南中并没有强调。
当然,作为一个优秀的测试工具的标配,Katalon Studio提供多种plug-in支持和Jira、Git、Jenkins、Jmeter、Sauce Labs等多款工具的集成,实现和测试管理、缺陷管理和持续集成管理的集成。
对于Katalon Studio的功能,后续还会专门介绍。
2. TestCraft:
TestCraft是一款商业软件,以SaaS的模式为Web应用提供自动化测试服务,用户通过账号登录Web管理界面,因此也是一款云化的测试工具。底层也是基于Selenium框架。TestCraft通过两种方式生成测试用例:一种是通过图形界面建模生成、调整测试步骤,等功能实现后再为每个测试步骤添加控件元素。因此,这也可以说是一款模型化(MBT)测试工具——在需求分析阶段就创建测试步骤,有助于团队内部沟通澄清需求。另一种是在软件功能实现以后通过录制—回放生成测试用例。
TestCraft也支持所有主流的浏览器,可以同时在多个浏览器上运行测试;为一个测试用例创建多个测试数据集;有定时执行和测试结果通知功能,为一个测试用例创多个测试数据集;也支持和CI/CD管理工具像Jenkins的集成,以及和Jira集成。TestCraft也提供了控件的动态重新绑定机制——“on-the-fly rebinding”,在测试执行过程中修复元素定位。优点:
- 为每一个测试用例创建一个模型,直观的展示测试执行的路径,适合设计复杂的测试场景。
- 提供“智能绑定”式定位器的推荐和自我修复。缺点:只能使用专有的框架,无法导入/导出测试脚本。
3. Perfecto
Perfecto是一款商业软件,提供云化的测试自动化解决方案,用于Web和移动应用的测试。它远程提供多款手机及平板真机,支持在远程iOS和Android设备上进行手工或自动化测试,可以在多台设备上并行运行自动化测试。基于录制-回放的无代码化测试用例开发是Perfecto提供的功能之一,如下图所示,实时捕捉界面上的操作在左边生成和调整测试步骤。
大家有兴趣可以到其官网上看一下demo:https://www.perfecto.io/codeless-automation。基于AI的自愈功能让测试脚本能够连续运行,自我完善。另外它还提供基于AI技术的测试分析和缺陷分类,帮助快速定位缺陷。总之,值得大家去深入学习它所提供的这些智能化的功能。
4. TestingWhiz
TestingWhiz也可以支持Web及移动端的UI自动化测试,以及Web Service的API测试。基于关键字和数据驱动测试用例。它提供的Visual Recorder可以支持桌面应用、flash应用的元素识别和web UI测试。TestingWhiz提供recorder功能可以录制和存储web应用控件,桌面应用控件,以及移动应用的控件。
除上述工具之外,还有CloudQA、TestProject、Mabl等其它的Codeless测试工具,就不一一介绍了。
其实,基于录制-回放技术的UI自动化测试工具很早就有,当时主要针对桌面应用,也可以认为它们是“无代码化”测试工具的前身。在国际敏捷联盟网站整理的“Agile Practices Timeline”(敏捷实践编年史)也有这类工具的相关记载:
1990:
Testingdiscipline dominated by “black box” techniques, in particular in the form of“capture and replay” testing tools ( 1990年:黑盒(black box)测试技术在测试学科中占据了主导地位,尤其是“捕获与回放”类型的测试工具。)1988-1990: The rise of event-driven GUI software and their specific testingchallenges create an opportunity for “capture and replay” test automation toolsprovided by companies such as Segue or Mercury; this type of tool dominates themarket for the next decade.( 1988年-1990年:事件驱动的GUI软件的兴起及其特定的测试方面的挑战为“捕获和回放”类测试自动化工具创造了机会。这类工具由Segue、Mercury等公司开发,并在今后10年间占据了市场主导地位。) 1997: The testing tool JUnit is written by Beck and Gamma, inspired byBeck’s earlier work on SUnit; its growing popularity over the next few yearsmarks the end of the “capture and replay” era.( 1997年:Beck和Gamma合作开发了测试工具JUnit,灵感来自Beck早期开发的工具SUnit。JUnit在未来几年日益流行,标志着测试工具“捕获和回放”时代的落幕。)这样看起来无代码化也不是一个新生事物,让人不得不感慨软件测试也经历了一次轮回。想起20年前使用Silk Test做桌面应用的UI自动化测试的痛苦经历:几乎每个操作系统上的测试脚本都需要重新适配,有了新的软件版本也经常不得不重新调试测试脚本,尝试了一年终于放弃……。传统的录制-回放测试工具代码结构化差,不支持数据驱动,对测试用例组织和维护方面做得差。整个测试生态当然也不如现在,现在很多工具都支持和其它工具的集成,自己不具备的功能可以通过plug-in和其它工具进行集成。
另外,功能好不好用关键还在于实现的细节。这里简单对比一下Selenium IDE和Katalon Studio的录制-回放功能。
| Selenium IDE | Katalon Studio |
支持类型 | Web browser: Chrome,Firefox | Web Browser: Chrome, Firefox, IE,Edge Chromium Mobile: Android, iOS Windows桌面应用 |
Web browser录制功能 | 先安装所支持的web browser,添加对应的Selenium IDE plug-in。 | 不需要事先安装web browser,录制测试脚本时在Katalon Studio界面上选择一种web browser |
录制 | 实时生成每一个测试步骤 | 实时生成每一个测试步骤,并在浏览器上同时捕获操作的界面元素,录制完成后存储到object repository中供编辑和重用 |
脚本编辑 | 可以对测试步骤和输入数据增加、删除、修改 | 可以对测试步骤和输入数据增加、删除、修改。支持的关键字比较多,也支持多种丰富脚本逻辑的statement,比如if,else, for, while等 |
测试脚本执行 | 只能在录制脚本的web browser运行 | 可以选择任一选择的web browser,目前支持5种,而且无需安装。收费版有脚本自愈功能。 |
支持的代码 | 支持export成多种语言 | 只支持Groovy |
代码查看 | 需要其它工具编辑、查看 | 界面上可以直接切换显示测试脚本和测试代码并进行编辑 |
数据驱动 | 需要编辑export出的测试代码以支持数据驱动 | 支持在界面上创建、编辑、导入数据文件 |
总结
无代码化的测试工具的兴起从加快软件交付方面来说肯定是很有价值,但从人的角度来说,对于测试人员的职业发展其实会带来冲击,有不少测试人员说:“好不容易培养起来的一点儿编程能力这下也用不上了,真不知道将来我的核心竞争力是什么”。懂业务的测试人员当然也很有价值,但往往不受重视。留给大家的时间也许真的不多了,需要思考一下未来。
PS:明天有重要消息发布,请关注