自动化测试(二)02——单元测试类工具-Karma、Jasmine、Mocha、Jest、AVA E2E测试类工具-cypress、nightmare、nightwatch、testcafe
自动化测试(二)02——单元测试类工具-Karma、Jasmine、Mocha、Jest、AVA & E2E测试类工具-cypress、nightmare、nightwatch、testcafe、webdriverio
单元测试类工具
npm trends: 点击链接
1、Karma
Karma是一个Runner(即运行环境),具体详细的介绍见 后面的章节Karma
A test runner is the library or tool that picks up an assembly (or a source code directory) that contains unit tests, and a bunch of settings, and then executes them and writes the test results to the console or log files.
there are many runners for different languages. See Nunit and MSTest for C#, or Junit for Java.
karma 设计目标主要有下面四点:
高效
扩展性
运行在真实设备
无缝的使用流程
karma 是一个典型的 C/S 程序,包含 client 和 server ,通讯方式基于 Http ,通常情况下,客户端和服务端基本都运行在开发者本地机器上。
一个服务端实例对应一个项目,假如想同时运行多个项目,得同时开启多个服务端实例。
Karma 的优点是能通过插件和配置的方式集成大部分的主流的测试框架和前端库,能方便的一次在多浏览器环境执行测试用例,并集成了测试覆盖率生成功能,生成页面形式覆盖率报告并能导出不同形式的覆盖率报告数据。
它的缺点是,对测试页面环境的搭建和资源文件的加载不是常见的形式,最开始搭建环境时会有很多跟预期不一致的情况,配置不直观。
2、Jasmine
Jasmine 带有 assertions(断言),spies (用来模拟函数的执行环境)和 mocks (mock 工具),Jasmine 初始化设置简单,同时,如果你需要一些单元功能的时候你仍然可以加一些库进来。
3、Mocha
Mocha 是一个灵活的库,提供给开发者的只有一个基础测试结构。然后,其它功能性的功能如 assertions, spies和mocks,这些功能需要引用添加其它库/插件来完成。
5、Jest
被 Facebook 和各种 React 应用推荐和使用,Jest 得到了很好的支持。Jest 也被发现是一个非常快速的测试库在平行测试报告中。
对于小型项目来说你可能在开始的时候不用过多担心,而性能的提高,对于希望全天持续部署的大型应用 app 来说是非常之好的。
而开发人员主要是用 Jest 去测试 React 应用,Jest 可以很容易地集成到其它应用程序中充许你使用更独特的特性在其它地方
快照测试是一个非常好用的工具,去确保你的应用 UI 不会有超出预期的错误,在产品发布替换的期间发生。虽然大部分功能,专门设计都是使用在 React 上。
Jest 有着很广阔的 API 。
6、AVA
AVA 它的优势是 JavaScript 的异步特性和并发运行测试.
利用了 JavaScript 的异步特性优势,优化了在部署的时间等待
保留了简单的 API 为你提供你所需要的功能。
如果搭配 mocking 来使用它会显得更加友好,但是必须安装一个单独的库。
E2E测试类工具
npm trends: 点击链接
最佳实践
测试有很多好处,但不代表一上来就要写出100%场景覆盖的测试用例。
最佳的实践:基于投入产出比来做测试
由于维护测试用例也是一大笔开销(毕竟没有多少测试会专门帮前端写业务测试用例,而前端使用的流程自动化工具更是没有测试参与了)。
对于像基础组件、基础模型之类的不常变更且复用较多的部分,可以考虑去写测试用例来保证质量。个
先写少量的测试用例覆盖到80%+的场景,保证覆盖主要使用流程。
一些极端场景出现的bug可以在迭代中形成测试用例沉淀,场景覆盖也将逐渐趋近100%。
但对于迭代较快的业务逻辑以及生存时间不长的活动页面之类的就别花时间写测试用例了,维护测试用例的时间大了去了,成本太高。
大型项目,可以使用Jest快速形成配置并且开始单元测试。
需要测试快照,则可以选择Jest或者Ava。
对于配置性要求高,对测试框架性能有要求的可以选择mocha。
对模拟还原浏览器业务操作有很大的需求的,可以选择nightmare
配合CI工具完成自动化测试、测试覆盖率、测试结果推送。
Ava。
对于配置性要求高,对测试框架性能有要求的可以选择mocha。
对模拟还原浏览器业务操作有很大的需求的,可以选择nightmare
配合CI工具完成自动化测试、测试覆盖率、测试结果推送。
自动化测试(二)02——单元测试类工具-Karma、Jasmine、Mocha、Jest、AVA E2E测试类工具-cypress、nightmare、nightwatch、testcafe相关推荐
- jasmine单元测试_使用Jasmine,Spock和Nashorn测试JVM服务器端JavaScript
jasmine单元测试 JavaScript使用不仅限于浏览器中的客户端代码或NodeJS支持的服务器端代码. 许多基于JVM的项目都将其用作内部脚本语言. 测试这种功能既不简单也不标准. 在本文中, ...
- python+pytest接口自动化之测试函数、测试类/测试方法的封装
前言 今天呢,笔者想和大家聊聊python+pytest接口自动化中将代码进行封装,只有将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码如下: import requestshea ...
- 使用Jasmine,Spock和Nashorn测试JVM服务器端JavaScript
JavaScript使用不仅限于浏览器中的客户端代码或NodeJS支持的服务器端代码. 许多基于JVM的项目都将其用作内部脚本语言. 测试这种功能既不简单也不标准. 在本文中,我打算演示一种使用成熟的 ...
- 为何一个简单的测试类H5却要花费我2天时间才完成?
心血来潮想做一个H5小游戏,考察人们的创造力和想象力,由于更复杂的交互形式(诸如移动.旋转)还没有学会,只能采用之前学习到的"测试类"游戏思维来做. 那么做测试类的H5第一步是找寻 ...
- SpringBootTest测试类报错:Suppressed: java.lang.IllegalStateException: Unable to find a @SpringBootCon
在一个特别简单的mybatisPlus测试类中,单元测试时,报错Suppressed: java.lang.IllegalStateException: Unable to find a @Sprin ...
- 目前有哪些好用的测试管理工具?
写好测试用例是做好测试的前提,写测试用例需要一个有用的测试管理工具.外国有几款不错的测试管理工具,因为服务器部署在国外,国内访问会比较卡,还有就是语言不是中文大家用起来比较困难,这里就不推荐大家使用. ...
- Java运行非Web的Springboot项目(测试类或启动主类两种方法)
Java运行非Web的Springboot项目(测试类或启动主类两种方法) 前言 一.创建打开一个Springboot项目 二.运行项目 1.Test测试类运行 2.启动主类运行 三.持续运行不停止( ...
- JUnit3 一次运行多个测试类和进行多次重复测试:使用测试套件和RepeatedTest
测试套件 如果测试类写到很多,每次要进行测试,难道要重新点击每一个测试类来运行?如果有200个测试类要测试呢? 为了解决这个问题,引入了测试套件(TestSuite). 通过将多个测试放入套件中,一并 ...
- 软件测试 - 测试管理工具禅道
1. 为什么要用测试管理工具 2. 禅道 2.1 主要功能 2.2 用户角色 2.3 使用禅道 1. 为什么要用测试管理工具 我们在开发一款软件的时候,测试人员要写测试用例来测试软件是否有 bug,而 ...
最新文章
- Android 3.0 r1 API中文文档(107) —— AsyncPlayer
- 佐治亚理工学院硕士建议:2022年你应该掌握这些机器学习算法
- 【前端】递归之引起堆栈溢出解决方案
- 多少行数_经验丰富的程序员和其每日代码行数
- [蓝桥杯2015决赛]五星填数-枚举+数论
- 推荐一个最近开源的Matting工具箱
- macos模拟器_苹果芯补完计划,iOS终将回归mac OS?
- java盒图_《》——8幅图图解Java机制
- 基于JAVA+SpringMVC+Mybatis+MYSQL的高校社团管理系统
- 网易云android国内版,网易云音乐Android版产品体验报告
- Cloud Control 12c Installation 错误处理 Checking swap space: 0 MB available, 150 MB required. Failed
- 《机器学习实战》 自制勘误表 中文版第一版2015年9月第11次印刷版
- AI将带我们去何方?(下-展望篇)
- 87.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。
- iverilog -- ivlpp 词法与语法分析解读
- Via浏览器 – 简洁优雅的手机浏览器
- NoSQL:列族数据库
- 【论文阅读】【3d目标检测】Behind the Curtain: Learning Occluded Shapes for 3D Object Detection
- 群论学习——几种基本的群
- 夜来风雨声,Python协程知多少