7种前端自动化测试框架,到底谁是No.1

转自公众号文章:https://mp.weixin.qq.com/s/frY16XCv_8lKXSTLv_NBmA

互联网时代,我们对web前端进行测试,不应该巧是关注其功能是否实现,随之还有更多的测试内容,如样式是否符合预期、交互是否流畅、应用是否安全等各个方面。前端自动化测已经成为web自动化测试中的终极目标和追求,但对于目前市场上层出不穷的前端测试框架,往往让人眼花缭乱。下面,说一说,前端自动化测试框架的对比,以及初阶选择推荐。

一、 框架对比

前端自动化的流派主要分为3类:基于录制回放技术的自动化测试框架,基于对文档对象模型 (DOM)对象进行解析的自动化测试框架,以及基于图像识别的自动化测试框架。

1、基于录制回放技术的自动化测试框架

基于录制回放的方法大多是通过记录测试人员的操作行为以及记录被操作的屏幕坐标来开发用例。该方法操作简单,学习成本低,对于前端知识储备不够充分的人员来说,上手很容易,方便没有代码基础的测试工程师进行自动化测试。但该方法仍存在自己的缺点,如:当应用发生一点小修改,对象定位的属性发生改变,将使得录制好的脚本无法使用。常见的基于录制回放技术的自动化测试框架有UI recoder,Selenium ide等;

2、基于对文档对象模型 (DOM)对象进行解析的自动化测试框架

目前,主流的前端自动化测试框架是基于文档对象模型 (DOM)对象进行解析。同样该方法也存在和录制回放相同的问题,一旦前端元素布局放生改变,测试脚本就可能失效,自动化脚本就要重写,且该方法是还受特定平台的限制。常见的基于文档对象模型的自动化测试有基于Selenium自编程序和自写的js测试程序等等;

3、基于图像识别的自动化测试框架

基于图像识别的自动化测试,算是近年来“异军突起”的“非主流”。它是通过类似图像识别的原理进行自动化操作的,测试不易识别或无法定位的对象,比如map 、Flash和图表等。同前两种方法对比,该方法不受目标前端代码修改的影响,即使目标前端代码发生改变,也无需担心。但是,该方法受制于图片清晰度、屏幕分辨率等影响,要求图片匹配区域的大小和样式不能有丝毫变化。所以,一旦屏幕分辨率、浏览器缩放等,导致图片区域的大小发生变化,该方法的测试脚本就会失败。常见的框架有Aritest,sikuli等。

如下图1所示,为常见的前端测试框架对比:

!图1 多种框架对比](https://upload-images.jianshu.io/upload_images/6993402-ec09f5fb6b246643.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

二、 如何选择

对于前端自动化测试初级人员来说,尽管基于录制回放技术的测试框架存在各种问题,本身并不完美,但仍不失为前端自动化测试学习和测试初期的一个高性价比选择。它可以使得测试人员在测试过程中,学习前端知识,通过测试代码的学习了解元素定位方法等等。

而在本文介绍中,笔者选择使用Selenium ide而放弃UI Recorder的原因很直白:后者开源贡献力后期不足,存在的bug无法得到及时修复,在安装环节就几次让笔者试图放弃。相反,Selenium ide作为一个比较成熟的插件,安装方法简单,使用方便。

Selenium ide是一款基于Selenium驱动的可视化界面编辑插件,可以提供给用户快速录制、回放,多种语言(python、java、c#、ruby等)导出测试脚本等功能。并且具有支持firefox和chrome主流浏览器,id、css、xpath等多种元素定位,用户代码扩展等能力。虽然不支持ie浏览器,但在前端自动化测试初期,表现也无伤大雅。(Selenium ide官方文档页面:https://www.Selenium.dev/Selenium-ide/docs/en/introduction/getting-started)。

1、Selenium ide安装方法

1)下载Selenium ide插件

下载网址:https://www.crx4chrome.com/crx/77585/

2)添加chrome扩展程序

将下载的crx文件,更改后缀名为.rar并解压。然后打开chrome://extensions/,点击“加载已解压的扩展程序”选择解压的文件夹即可;

3)启动Selenium ide插件

点击chrome扩展程序的Selenium ide图标即可。

2、Selenium ide使用

Selenium ide使用方法,点击录制即可生成测试脚本,点击回放即可完成回归测试。网上初级教程很多,不再举例,贴图笔者的一个case某段截图。

图2 某case截图

Selenium ide生成测试代码之后,可以根据用户需要导出python、java等语言的测试脚本,方便用户学习和修改测试代码。且Selenium ide导出的测试代码还可以与Robotframework等自动化测试框架结合,进行更深层的编程和测试,为用户提供更高阶的前端自动化测试。

三、 Selenium ide如何与Robotframework结合

Robotframework的第三方的库Selenium2Library提供了丰富的关键字(如open browser,click element,get location等等)给用户,以实现可以前端自动化测试。但在使用过程中,对于前端知识不甚丰富的测试人员而言,经常会在寻找元素、定位元素时遭遇“滑铁卢”,使得测试脚本编写变得困难。且Robotframework为关键字驱动框架,将录屏后的文件当作整体关键字使用,可以方便用户专注业务层逻辑测试,在底层关键字修改和自动化测试集成方面都能更加方便。

因此,将Selenium ide与Robotframework结合使用,不失为一种快速学习、加快测试的好方法。

1、 使用Selenium ide录制

使用Selenium ide进行录制,会自动生成测试语句(具体使用方法不赘述)。

2、 导出测试脚本为python文件

点击“Test suites”>“Export”选择导出为Robotframework支持的python语言格式,导出界面及导出后脚本如下图所示: [图片上传失败...(image-4923ee-1612690945177)]

图3 测试集导出

图4 导出的python脚本

3、 将python文件导入Robotframework使用

直接导出的python文件可能无法直接导入Robotframework中(导入失败会变成红色字体)。需要确保以下两点:1)python文件名与class名一致,且首字母需大写;2)同级目录存在__init__py文件。确保以上2点,即可进行导入。

打开robotfamework-ride,点击suite或test层的Settings>Library,选择2中导出的python文件(如本文中的Test.py),将它作为外源关键字在Robotframework中使用,导入成功为黑色,如下图所示:

图5 成功导入Robotframework中的Selenium ide导出文件

此时,在robotframwork中按F5键即可查看引入python文件中的关键字,如本文Test.py中的Setup Method、Teardown Method和Test关键字(与图4一致),本文使用录屏的关键步骤皆在Test关键字。

图6 导入的Selenium ide录屏文件关键字
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容