无代码化的测试自动化

标签: | 发表时间:2020-10-15 23:21 | 作者:
出处:https://mp.weixin.qq.com

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:明天有重要消息发布,请关注

相关 [代码 测试 自动化] 推荐:

无代码化的测试自动化

- -
2020年软件测试自动化的趋势除了智能化、云化、敏捷化/DevOps化、模型化等,还有一个亮眼的存在:Codeless Test Automation,即无代码化的测试自动化. 不是没有代码,而是测试人员不用自己开发测试代码,使用Codeless测试工具可以帮助我们生成可以执行的测试用例集. 如此将大大降低自动化测试的技术门槛,没有编程经验的测人员甚至是业务分析人员也可以很快上手,是不是令人心动.

iPhone App自动化测试

- BeerBubble - Taobao QA Team
         无线客户端的发展很快,特别针对是android和ios两款无线操作系统的客户端应用,相应的测试工具也应运而生,这里主要给大家介绍一些针对iPhone App的自动化测试工具.          首先,我们把这些测试框架分为三大类:接口测试工具、注入式UI测试工具、录放式UI测试工具.

Android Robotium自动化测试

- - CSDN博客移动开发推荐文章
1、官方网站下载测试工程demo. 从 http://code.google.com/p/robotium/downloads/detail?name=ExampleTestProject_v3.6.zip 下载官方的Android测试工程demo. 解压后的文件NotePad、NotePadTest、readme.txt.

Android UiAutomator 自动化测试

- - 操作系统 - ITeye博客
一、一个BUG引发的问题.     如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”. 我想,最好的方式应该是自动化测试.     那么,自动化测试可以完成哪些任务呢.     简单的说,那些重复性的测试工作,都可以交给自动化完成:.         1、设置手机的语言.         2、添加、删除、收藏联系人.

Robotium 自动化测试

- - CSDN博客推荐文章
Robotium 自动化测试. Android Studio环境下,在所要测试的Module的build.gradle文件下添加,. Robotium即是对Instrumentation框架方法的封装,所以使用之前需要继承测试类,重写构造器,setUp()和tearDown()方法. 其中继承的是ActivityInstrumentationTestCase2测试类.

Android自动化测试解决方案

- Haides - InfoQ中文站
现在,已经有大量的Android自动化测试架构或工具可供我们使用,其中包括:Activity Instrumentation, MonkeyRunner,Robotium,以及 Robolectric. 另外LessPainful也提供服务来进行真实设备上的自动化测试.

InstrumentDriver,对iOS自动化测试说 Yes!

- - Taobao QA Team
    InstrumentDriver 是 Mobile自动化小组最近实现的基于 instrument,针对 iOS 的自动化测试框架,目前支持 java 语言编写测试用例.     研究过iOS自动化测试的同学肯定对 instrument UI Automation 有所耳闻,或者已经使用它进行自动化测试实践.

菜鸟学自动化测试(九)----WebDirver

- - 博客园_首页
关于什么是WebDirver,上一节做了简单的描述,环境也在上一章中搭建完成. 下面我们拷贝了官网提供的一个实例. 让其在我们的eclipse中运行. Selenium WebDirver 代码如下:. // 用Firefox driver创建一个新的的实例. //注意:其他的代码依赖于界面. WebDriver driver = new FirefoxDriver();// 这里我们可以使用firefox来运行测试用例.

无用的自动化测试

- - CSDN博客研发管理推荐文章
自动化测试,特别是UI级的自动化测试是一件费力而不讨好的事情. 自动化测试使得测试人员疲于应付,朝不顾夕,如坐针毡,苟延残喘. UI级的自动化测试看起来很美好,就像罂粟,如果你经不住诱惑冒然尝试,那么后果很严重,下场很惨淡. 也许这个世界上就不应该出现自动化测试这个东西,起码在中国不应该出现,因为这个是无效的,无用的,宿命是失败的东西.

前端自动化测试探索

- - FEX 百度 Web 前端研发部
测试是完善的研发体系中不可或缺的一环. 前端同样需要测试,你的css改动可能导致页面错位、js改动可能导致功能不正常. 由于前端偏向GUI软件的特殊性,尽管测试领域工具层出不穷,在前端的自动化测试上面却实施并不广泛,很多人依旧以手工测试为主. 本文试图探讨前端自动化测试领域的工具和实践. 一个项目最终会经过快速迭代走向以维护为主的状态,在合理的时机以合理的方式引入自动化测试能有效减少人工维护成本.