前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >前端自动化测试工具 overview

前端自动化测试工具 overview

作者头像
IMWeb前端团队
发布于 2019-12-04 05:17:25
发布于 2019-12-04 05:17:25
1.4K00
代码可运行
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队
运行总次数:0
代码可运行

本文作者:IMWeb 邝伟科 原文出处:IMWeb社区 未经同意,禁止转载

总结最近了解的前端测试的相关内容,如有问题,欢迎指出。

TDD vs BDD:

TDD(Test Drivin Development)是测试驱动开发,强调的是一种开发方式,以测试来驱动整个项目,即先根据接口完成测试编写,然后在完成功能时要不断通过测试,最终目的是通过所有测试。

BDD(Behavior Drivin Development)行为驱动开发,可以理解为也是TDD的分支,即也是测试驱动,但BDD强调的是写测试的风格,即测试要写得像自然语言,运用一些比如expect、should等跟自然语言相近的断言,让项目的各个成员甚至产品都能看懂测试,甚至编写测试。

前端测试化工具简单汇总和比较

Qunit

jquery出的自动化测试库,没什么好说的,可以想象其跟jquery UI及jquery animation等库结局一样,逃脱不了各种被后来的库全方位的比较和“超越”

Mocha && Jasmine

Mocha 跟 Jasmine 是目前最火的两个单元测试框架,基本上目前前端单元测试就在这两个库之间选了,下面是这两个库的区别,大家可以根据自己的需求进行选择:

mocha:

优点:

  • 终端显示友好
  • 灵活,扩展性好

缺点:

  • 自身集成度不高(没有断言,spy,异步等),而且经常要配合Chai,Sinon等库使用
  • 配置相对麻烦一点点
Jasmine:

优点:

  • 集成度高,自带BBD,spy,方便的异步支持(2.0)
  • 配置方便

缺点:

  • 相对不太灵活
  • 由于各种功能内建,断言方式或者异步等风格相对比较固定
  • 没有自带mockserver, 如果需要这功能的得另外配置

总的来说就是Jasmine功能齐全,配置方便,Mocha灵活自由,自由配置。 两者功能覆盖范围粗略可以表示为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Jasmine(2.x) === Mocha + Chai + Sinon - mockserver

PS: 个人实际使用后觉得Chai和Sinon毕竟是专门做特定功能的框架,用 Mocha + Chai + Sinon 这种方式会想对舒爽一点。

断言方式

上面说到BDD,就是说测试要写的像自然语言一样,不同的断言方式就相当于不同的判断句的句式而已,现在普遍有下面三种断言方式:

  • assert: assert.equal(something, someting)
  • should: something.should.equal(something)
  • expect: expect(something).to.equal(someting)

上面说Mocha的时候就说到 Chai 就是一个用的最多断言库,另外还有像 shouldjs很容易理解,就是should断言方式的库

无头浏览器测试 Phantomjs && Slimerjs

这两个框架一样,都是提供了无界面的真实浏览器测试环境,可以让你在node中对真实浏览器的dom进行操作和测试,不同的就是Phantomjs基于webkit(chrome),而Slimer则基于 Gecko(firefox)。当我们有需要在真实浏览器环境中测试时可以考虑这两个框架

测试任务管理工具 Karma

Karma 是 Google Angular 团队开源的 JavaScript测试执行过程管理工具,其提供了强大的自动化测试功能,其主要提供能力如下:

  1. 提供真实环境,可以配置 各种chrome, firefox等各种浏览器环境或者 Phantomjs等无头浏览器环境
  2. 可控制自动化测试流程,比如编辑器保存时自动全部全部测试用例
  3. 强大适配器,可以在karma上面配置jasmine,mocha等单元测试框架。
  4. 配置方便

参考资料:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-01-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 并发编程:volatile的使用及其原理
一、volatile的作用   在《Java并发编程:核心理论》一文中,我们已经提到过可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用Synchronized来解决问题。而volatile关键字就是Java中提供的另一种解决可见性和有序性问题的方案。对于原子性,需要强调一点,
用户2140019
2018/06/25
4580
70. 对并发熟悉吗?谈谈对volatile的使用及其原理
我们已经知道可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchronized原理有了解的话,应该知道Synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用Synchronized来解决问题。
用户11332765
2024/11/01
510
70. 对并发熟悉吗?谈谈对volatile的使用及其原理
【Java并发系列】volatile
多线程的同步问题其实就是要解决线程并发所带来的工作内存之间以及和主内存的数据不一致性问题(一份数据如果在物理空间中存在不止一份,就需要付出维护数据一致性的成本,例如HDFS冗余备份机制、Redis缓存一致性等)。
章鱼carl
2022/03/31
1870
【Java并发系列】volatile
Java程序员面试必备:Volatile全方位解析
volatile是Java程序员必备的基础,也是面试官非常喜欢问的一个话题,本文跟大家一起开启volatile学习之旅,如果有不正确的地方,也麻烦大家指出哈,一起相互学习~
捡田螺的小男孩
2020/08/13
5260
Java程序员面试必备:Volatile全方位解析
并发编程特性与volatile
由于处理器使用缓存和读 / 写缓冲区,这使得加载和存储操作看上去可能是在乱序执行。
程序员 NEO
2023/09/30
3190
并发编程特性与volatile
volatile 的作用和原理
内存可见性:所有线程都能看到共享内存的最新状态。每次读取前必须先从主内存刷新最新的值。每次写入后必须立即同步回主内存当中。
王小明_HIT
2020/12/14
7050
volatile 的作用和原理
并发编程原理剖析——多线程的实现原理 顶
1、编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。
须臾之余
2019/07/09
4570
(四) 一文搞懂 JMM - 内存模型
用户7630333
2023/12/07
2.8K0
(四) 一文搞懂 JMM - 内存模型
【java并发编程实战3】解密volatilevolatile的使用场景
根据 as if serial原则,它强调了单线程。那么多线程发生重排序又是怎么样的呢?
yukong
2018/10/09
2790
【java并发编程实战3】解密volatilevolatile的使用场景
并发基础之volatile原理
「volatile」是java中保证有序性、可见性的关键字,相比于synchronized来说他更轻量,是jvm提供的最轻量的同步机制。之前我们介绍的ReentrantLock可重入锁里的状态变量state,就是被volatile所修饰的,ConcurrentHashMap里的node节点里的value和next同样被其修饰。
崩天的勾玉
2021/12/20
2560
为了讲清volatile,面试官都听不下去了
根据JMM中规定的happen before和同步原则: 对某个volatile字段的写操作happens- before每个后续对该volatile字段的读操作。 对volatile变量v的写入,与所有其他线程后续对v的读同步
JavaEdge
2020/05/27
7940
为了讲清volatile,面试官都听不下去了
什么是Volatile关键字?
在仔细讲解Java的volatile关键字之前有必要先了解一下【Java的内存模型】
全栈程序员站长
2022/09/18
2430
什么是Volatile关键字?
【Java线程】深入理解Volatile关键字和使用
理解volatile底层原理之前,首先介绍关于缓存一致性协议的知识。 背景:计算机在执行程序时,每条指令都是由CPU调度执行的。CPU执行计算指令时,产生与内存(物理内存)通讯的过程(即数据的读取和写入),由于CPU执行速度很快,而从内存读取数据和内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存(Cache)。
沁溪源
2020/12/22
4290
【Java线程】深入理解Volatile关键字和使用
Java volatile关键字
Java 内存模型(JMM)是一种抽象的概念,并不真实存在,它描述了一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式。试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。
IT小马哥
2021/09/03
2940
Java volatile关键字
【死磕Java并发】—–Java内存模型之分析volatile
前篇博客【死磕Java并发】—–深入分析volatile的实现原理 中已经阐述了volatile的特性了: volatile可见性;对一个volatile的读,总可以看到对这个变量最终的写; volatile原子性;volatile对单个读/写具有原子性(32位Long、Double),但是复合操作除外,例如i++; JVM底层采用“内存屏障”来实现volatile语义 下面LZ就通过happens-before原则和volatile的内存语义两个方向介绍volatile。 volatile与happens
用户1655470
2018/04/26
5680
【死磕Java并发】—–Java内存模型之分析volatile
JAVA并发编程系列(2)volatile核心原理
上文说到synchronized,JAVA并发编程synchronized全能王的原理,虽然被评为并发全能王,不过用起来也是格外注意,不能搞大力出奇迹那一套,容易出现性能问题。比如synchronized是无法控制阻塞时长,阻塞不可中断问题;以及锁范围,修饰方法或代码块,要精细,仅修饰需要并发控制部分,降低锁粒度。文末再总结一下,synchronized和volatile的区别,先进入正题,聊聊正主:volatile。
拉丁解牛说技术
2024/09/05
1590
聊聊并发编程:volatile关键字
上一篇学习了synchronized的关键字,synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁,而volatile是一个轻量级的同步机制。
烂猪皮
2023/09/04
2120
聊聊并发编程:volatile关键字
【云+社区年度征文】深入理解Volatile关键字和使用
背景:计算机在执行程序时,每条指令都是由CPU调度执行的。CPU执行计算指令时,产生与内存(物理内存)通讯的过程(即数据的读取和写入),由于CPU执行速度很快,而从内存读取数据和内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存(Cache)。
沁溪源
2020/12/19
3240
【云+社区年度征文】深入理解Volatile关键字和使用
java架构之路(一)JMM和volatile关键字
  说到JMM大家一定很陌生,被我们所熟知的一定是jvm虚拟机,而我们今天讲的JMM和JVM虚拟机没有半毛钱关系,千万不要把JMM的任何事情联想到JVM,把JMM当做一个完全新的事物去理解和认识。
小菜的不能再菜
2019/09/18
5380
java架构之路(一)JMM和volatile关键字
Java多线程内存模型(JMM)
CPU在摩尔定律的指导下以每18个月起一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。这就造成了高性能能的内存和硬盘价格及其昂贵。然而CPU的高度运算需要高速的数据。
chenchenchen
2022/01/05
3640
Java多线程内存模型(JMM)
推荐阅读
相关推荐
Java 并发编程:volatile的使用及其原理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文