自动化测试方案对比

测试方案

1. End-to-End Testing(端到端测试)

端到端(E2E)测试的主要目的是通过模拟真实的用户场景,验证被测系统及其组件的集成性和数据完整性,从最终用户的体验进行测试。

不需要知道业务代码,只需要模拟用户在真实环境的操作。

1.1 目前方案介绍
cypress

使用业务:官网下载业务

运行流程:本地代码commit后,自动执行cypress run打开浏览器,按照测试用例模拟用户操作,测试出现错误会自动截图/录屏。

测试代码和业务代码在同一个库。需要本地提供mock数据。在发布部署前进行测试。

matman

matman(测试框架)+mockstar(mock服务器)+whistle(代理)

使用业务:

  • 词典管理-列表
  • 寒暄库
  • 单轮问答列表、创建
  • 基础设置

运行流程:启动mock服务器,执行测试命令打开浏览器,将请求接口代理到mock服务器,按照测试用例模拟用户操作。自动化测试每天在蓝盾上运行,每次运行会通过企业微信通知测试通过率。

测试代码和业务代码在同一个库。需要提供mock数据。在发布部署前进行测试。

CodeceptJS

使用业务:

  • 词典管理-列表
  • 寒暄库
  • 单轮问答列表、创建
  • 基础设置

运行流程:业务代码发布后,执行测试命令打开浏览器,按照用户操作先登录账户中心,然后执行测试用例,测试出现错误会自动截图。

测试代码和业务代码不在同一个库,不需要接触到业务代码,在真实环境中执行测试。在发布部署后进行测试。

1.2. cypress、matman、CodeceptJS对比
CodeceptJS

https://codecept.io/

CodeceptJS是一个针对Nodejs,开源的前端自动化测试框架,它对其他运行测试工具做了一层封装,提供简洁的api。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1OIJ3eUJ-1647851524188)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/image-20220224163625064.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cJcX6VWV-1647851524189)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/image-20220224210728087.png)]

cypress

https://www.cypress.io/

Cypress 是为现代网络构建的下一代前端测试工具。对在浏览器中运行的任何东西进行快速、简单和可靠的测试。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5jH3mcqt-1647851524190)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/image-20220224202856923.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RGgC5nF4-1647851524190)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/image-20220224203105845.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KMSAsqOY-1647851524191)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/image-20220224173831068.png)]

matman

matman 是一个可用于做 web 端对端测试(E2E,End-to-End Testing)的框架,十分适合 web 前端开发人员来编写端对端测试。

puppeteer 做浏览器驱动,用 jQuery 来写爬虫脚本,用 Jest 或者 Mocha 来做断言判断

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NTGifRo6-1647851524191)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/image-20220224210211724.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ex4STGXN-1647851524192)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/no_python_easy_use.4a7494d6.png)]

1.3 方案对比
功能CodeceptJScypressmatman
上手难度对非前端用户友好、api简单非常容易上手、all in oneapi容易上手、代码编写有一定难度、all in one不易上手、需要自己集成多个插件
学习成本只需要学习CodeceptJS语法、少量js基础cypress语法、需要有js基础、Mochapuppeteer、jQuery、Mocha/Jest
代码理解从用户的角度编写验收测试。使测试可读且易于遵循。基于js/MochaJS,代码逻辑简单基于js/断言库chai,实现比较复杂
UI测试支持支持不支持
开源开源开源,Cypress Dashboard服务收费开源
重试能力支持支持不支持
多浏览器控制支持不支持
跨浏览器支持支持支持不支持,基于chrome
多标签控制支持不支持
iFrame支持不支持不支持
幻灯片截图支持不支持不支持
代码自动完成支持支持支持
生成测试报告支持支持支持
持续集成支持支持支持
网络流量控制不支持支持不支持
时间旅行不支持支持不支持
失败自动截图支持支持支持
录屏支持支持默认不支持

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cjIDPn1J-1647851524192)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/image-20220224112025238.png)]

1.4. 推荐方案

使用测试目前的CodeceptJS方案

1.5 开发流程

首先开发同学完成业务代码开发并部署到oa环境后。在提测阶段,测试同学根据业务需求在oa环境手动进行功能测试与编写测试用例同时进行。完成后,在灰度、正式环境部署业务代码后也执行测试用例。后期将执行测试用例集成在流水线上每几天运行生成运行报告,企微通知。

1.6 注意的点
优点
  1. 业务代码库和测试用例代码库分离,减少代码量,提高开发效率
  2. 开发和测试只需要关注自己领域
缺点
  1. 测试用例的编写最好的时间点是提测阶段,否则dom定位不一定正确
  2. 需求变更后,测试同学需要重新修改测试用例,维护成本大
  3. 业务代码库和测试用例代码库分离,执行测试用例后,输出结果没代码覆盖率
  4. 业务代码部署前执行自动化测试成本太高,最好在部署后,主要起到监控作用
难点

流水线上如何持续集成测试用例,定时自动执行并企微通知。

2. 自动化测试再研究

2.1. 目前业界方案

UI自动化的难点来源于元素识别的困难、执行的不一致行以及不稳定的产品和环境。
业界正在做的方向有几个方面:
1、自动化脚本编写的低代码化:适合无计算机学科基础的人来使用,包括有界面元素的智能识别(无需通过Inspector来确认,内部隐含了这些识别因素),实现无脚本语言的用例组织形式(如通过json语言来描述操作步骤和流程,而用户仅需要组织预定义好的步骤流程),或者仅定义用例场景和该场景下的操作(场景的切换由后端程序自动控制),testin、阿里、网易和我司都有类似的产品或工具在使用。
Testin:AI在自动化测试中的创新机会点:自然语言脚本、OCR识别、以图找图
文章:https://baijiahao.baidu.com/s?id=1654671532811739200&wfr=spider&for=pc
阿里:SmartX:解决场景分类等问题
文章:https://developer.aliyun.com/article/747741

2、无脚本语言的自动测试:它比低代码更进一步,无需编写任何脚本,自动启动程序,然后自己执行操作,由monkey概念衍生而来,但是比monkey更智能,会通过ai模型训练(包括轮廓和文字)识别元素,在随机执行过程中去规划下一次的执行步骤,并通过一定的技术手段去掉重复执行的路径,避免进入局部死循环。在业界也有不少的工具,国内如字节跳动(fastbot)和携程公司。
Trip.com 智能自动化探索测试
文章:https://tech.ctrip.com/articles/a_qa/3680/
Fastbot:行进中的智能 Monkey
文章:https://www.toutiao.com/i6877076132886217227
3、局内游戏的自动化:这个专项应用做得很多,比如王者荣耀的智能机器人,可以获得比较高的段位,还有国外的星际争霸2的智能机器人的例子。这种技术的未来在于如何快速的得到训练模型并应用于某个项目。

2.2 涉及到的工具介绍
iTestin在线录制

自动化录制工具,基于类自然语言的输入进行自动化用例的描述,通过加入AI强化学习和NLP语义解析能力,完成录制,生成NLP脚本。

操作流程:在线录制,输入中文,浏览器同时执行相应的中文操作,录制完成,生成NLP脚本。后面可以通过NLP脚本进行回放。

Smatch

Smatch,基于类自然语言的输入进行自动化用例的描述,基于机器视觉的能力和底层引擎驱动完成用例的执行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IFgmj7Uc-1647851524193)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/image-20220311151037322.png)]

Smartbot

基于深度学习和强化学习的智能深度遍历测试框架,自动识别场景,构建测试意图,从而达到对业务的高度覆盖,高效多端执行,并借助异常检测和定位的能力,以完成缺陷和问题的快速自动发现。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ahOzIpas-1647851524201)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/image-20220311152322623.png)]

UiAutomator

是谷歌推出的,用于UI自动化测试的工具,也就是模拟普通的手工测试,点击每个控件元素看看输出的结果是否符合预期。

可以通过集成UiAutomator来达到深度遍历测试的目的。

通过Uiautomator API获取页面上所有元素,然后遍历执行每种操作,自动化探索获取到所有可执行路径。

深度遍历算法制定探索策略。策略如下:

  • 页面事件随机触发,触发过的事件不再触发
  • 若跳转到新页面,则优先触发新页面探索
  • 新页面事件触发完毕返回上一个页面
  • 新页面事件未触发完毕返回上一个页面,则重新回到新页面。

xpath是一种结合父元素、元素类型、元素id以及元素坐标的表示方法,能够精准定位一个元素。

自动化探索提供的其实是一种基础服务能力,为性能测试、Crash检测或者页面内容检测等不同的测试目的提供测试基础。

Fastbot

fastbot是字节团队基于monkey的二次开发的app稳定性测试工具,目前已经开源,此工具有比较深入的算法探索,目前已经更新了多个版本,相对稳定的支持了移动端app、H5页面的自动化遍历,支持定制测试、当发生crash、anr时会有比较全的log可导出供分析。

我们将测试任务转换为对 App 进行遍历搜索和构建有向有环图模型的搜索任务。执行动作保存在服务端,客户端获取动作后执行得到状态。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TORaK96J-1647851524204)(/Users/mybells/Desktop/%E5%85%AC%E5%8F%B8%E5%89%8D%E7%AB%AF%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%B7%B2%E5%AE%8C%E6%88%90%E6%96%87%E6%A1%A3%E6%95%B4%E7%90%86/%E5%9B%BE%E7%89%87/%E6%B5%8B%E8%AF%95%E6%96%B9%E6%A1%88%E5%AF%B9%E6%AF%94/3e1d539f697c47adb820e276b50b1c01.jpeg)]

2.3 工具对比及推荐
iTestinSmatchSmartbotUiautomatorfastbot
是否开源不开源不开源不开源不开源开源
学习成本
使用成本成熟的产品,收费无法使用无法使用基础移动端操作api,免费免费
录制支持不支持不支持不支持不支持
回放支持不支持不支持不支持不支持
实现低代码测试低代码测试无脚本自动化测试无脚本自动化测试无脚本自动化测试
支持的端移动端/PC端移动端移动端移动端移动端

以上大部分工具都是针对移动端的,可能是因为移动端有现成可以控制app操作的基础sdk能力吧。移动端比web端简单点,还有就是移动端按钮可以轻松识别出来。

以上几种方案中推荐的方案是使用iTestin成熟的产品。

优点:

  1. 是成熟的产品,不需要二次开发。
  2. 适合无代码经验基础的人使用。

缺点:

  1. 不开源,无法自己定制。
  2. 需要按功能付费。
2.4 web端常用自动化测试工具介绍
Katalon Studio

https://katalon.com/katalon-studio

https://cloud.tencent.com/developer/article/1523924

Katalon Studio 是一款免费的自动化测试工具,可以安装在windows、macOS、linux操作系统上,基于selenium 和 Appium 测试框架,支持不同层次的人员使用。具体使用流程是:打开浏览器进行业务操作,程序记录操作步骤,生成具体的脚本,可以回放,生成测试报告。

Ranorex Studio

https://www.ranorex.com/

https://blog.csdn.net/kowayee/article/details/107022134

Ranorex Studio是一个商业化的Windows GUI测试自动化工具,全球有4000多家公司使用它来测试桌面、web和移动应用程序。具体使用流程是:打开浏览器/应用程序/手机程序进行业务操作,程序通过动作表编辑器捕获和重播动作,然后将这些动作转换为可读的语言,生成测试报告。

testsigma

https://testsigma.com/

https://blog.csdn.net/weixin_42727710/article/details/122712267

Testsigma是 一款基于云端的、以AI驱动测试的自动化平台, 为Web、移动应用以及RESTful服务等各种应用的测试服务。 程序通过自然语言编写/录制,执行自动化测试,生成测试报告。

Mabl

https://www.mabl.com/product

https://www.cxyzjd.com/article/zjuxsl/79493010

Mabl是一个统一的DevTestOps平台,使开发人员和非开发人员都可以轻松快捷地大规模生成和执行自动化功能性UI测试。软件测试的全过程自动化,不再需要人工参与。自动创建和执行测试,自动分析测试结果,同时还能根据需求的变化自动适配和维护测试。

Selenium

https://blog.csdn.net/wanglian2017/article/details/72843984

https://blog.csdn.net/liudinglong1989/article/details/107740061

能够记录用户执行的操作,并可以导出为可重复使用的脚本。Selenium IDE 可以通过使用chrome、firefox插件进行扩展,可以与第三方服务集成。

2.5 katalon studio、Ranorex Studio、testsigma、Mabl、Selenium工具对比及推荐
katalon studioRanorex StudiotestsigmaMablSelenium
是否免费基础使用免费,集成其他功能收费定制收费收费定制收费免费
录制支持支持支持支持支持
回放支持支持支持支持支持
可测试Web、桌面程序、以及移动appWeb、桌面程序、以及移动appWeb、移动appwebweb
生成测试报告支持支持支持支持不支持
支持集成支持,但收费支持支持支持
适用对象同时适用于技术和非技术的测试人员同时适用于技术和非技术的测试人员同时适用于技术和非技术的测试人员非技术的测试人员适用于技术的测试人员
支持扩展支持支持支持不支持
运行于windows、macOS、linuxwindows云端云端chrome、firefox插件

其中最为推荐的产品是katalon studio,优点是功能强大,基础功能免费,操作简单,可以运行在本地不同操作系统下。如果要运行在云端,推荐testsigma,但是它不是免费的。

2.6 推荐方案

共包括几种方案:

  1. 通过使用现成成熟的产品,包括iTestin、katalon studio、Ranorex Studio、testsigma、Mabl、Selenium。缺点是大部分都不是开源的,需要按功能付费。
  2. 用自然语言编写测试流程,低代码自动化测试,现有产品挺少的,而且基本都收费。
  3. 采用selenium ide或chrome recorder功能录制操作流程,可导出js mocha/puppeteer js测试脚本,只有基础录制能力,可以在这个基础上再开发。现有这种测试模式的产品最多,少部分免费。
  4. 采用可视化流程图的形式创建测试用例,不用编写测试代码。基于workflow,现有免费产品挺多,也可以自己开发。https://www.automa.site/
  5. 无脚本自动化测试,测试程序自动搜索所有可执行路径,找到有用的路径,现有这种测试模式的产品很少,而且基本都收费。比如:Mabl
使用端到端测试框架使用成熟的产品基于低代码模式自行开发基于录制脚本的模式自行开发可视化流程图的模式自行开发基于无代码模式自行开发
是否开源基本都开源基本都不开源,需要付费开源开源
目前流行程度最流行流行不流行比较流行一般最不流行
开发难度一般比较难比较难比较难最难
使用难度高,需要有代码经验最低,有代码经验和无代码经验的人都行低,只需要熟悉流程规则即可编写测试用例低,只需要执行业务步骤录制脚本较高,需要可视化编写流程步骤最低,程序自动测试

目前比较流行的产品自动化测试的模式基本都是一样的,使用selenium操作记录录制的能力,然后集成一些第三方插件,完成一条可执行的测试用例,在云端或本地执行。

推荐方案:

采用selenium ide步骤录制的方式生成mocha/puppeteer js测试脚本,然后在这个基础上再开发生成测试报告、回放等功能。

优点:

  1. 无代码经验的人也可以使用。
  2. 不需要写测试用例,可以录制生成测试脚本。

缺点:

  1. 测试只能在联调发布后进行。
  2. 业务变更后,测试同学需要重新录制脚本,有一定维护成本。
  3. 业务覆盖率不全,只能靠自己手动录制。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值