动手学前端测试 - 基础概念篇

目录

什么是前端测试

前端测试是啥呢?好难理解,其实就和普通的测试一样理解就好了,测试的目的就是为了代码的稳健型,以确保其功能代码和性能是符合预期的

为什么需要前端测试

所有的测试都是为了前置,提前发现问题,减少线上事故的发生,提高代码质量

  • 保证代码质量
  • 增强可维护性
  • 添加新功能时,确保新功能不会破坏原有功能
  • 添加测试用例,方便新人快速上手学习开发

前端测试分类

让我们看下Kent C. Dodds的定义,也就是下图

在他这个测试的模型里面认为测试主要分为三类

  • 端对端测试:利用一个很像用户行为的机器人来和 App 交互,并验证功能是否正常。有时也会说 "功能测试" 或 E2E。
  • 集成测试:验证多个单元是否能协调共同工作。
  • 单元测试:验证单独隔离的部分是否正常工作。
  • 静态测试:捕获写代码时的错别字和类型错误

关于静态测试:静态测试这里其实更多是指用TypeScript以及ESLint等静态检查工具来找出代码问题

下面会对其他三类测试做简单的介绍

端到端测试 E2E

端到端测试,它模拟用户的真实行为,包括用户输入和系统响应,测试整个系统的交互、一致性和可靠性。

特点:

  • 一般运行在完整的系统上
  • 用户使用的完整前后端场景
  • 可视化用户界面的测试

前端端到端测试使用的库有很多,以下是几个比较流行的:

  • Cypress:一个基于 Electron 构建的自动化端到端测试框架,它使用了最新的 Web 技术,提供了简单易用的 API,支持跨浏览器自动化测试。
  • Puppeteer:Google 出品的基于 Node.js 的端到端测试库,提供了一个高级的 API,可以让你控制 Chrome 或 Chromium 浏览器的行为,支持各种自定义操作。
  • TestCafe:另一个基于 Node.js 的自动化测试框架,使用了无头浏览器和真实浏览器结合的方式来执行测试,支持并行测试和分布式测试。
  • Nightwatch.js:一个使用 Node.js 编写的端到端测试框架,基于 Selenium WebDriver,并且提供了易于使用的 API 和内置的断言库。
  • Playwright:一个由 Microsoft 开发的自动化测试库,支持 Chromium、Firefox 和 WebKit 三种浏览器,提供了简单易用的 API 和一些方便的工具。

集成测试

集成测试是指将多个组件或模块组合在一起进行测试,以验证它们在整个系统中的正确性和互操作性。在前端开发中,通常使用自动化测试工具来执行集成测试。

特点:

  • 测试整个代码涉及的多模块
  • 系统级别测试
  • 更多的测试数据与环境,更长的测试时间

测试工具:一些自动化测试工具,如Jest、Mocha、vitest、Cypress等

单元测试

单元测试就是对没有依赖或依赖都被mock掉了的测试单元的测试,一个模块进行测试

特点:

  • 单模块
  • 存函数,或工具函数集合的测试选择
  • 辅助组件等公共组件的测试选择

测试工具:一些自动化测试工具,如Jest、Mocha、vitest、Cypress等

测试工具

这里不会列全,只会列未来篇章会使用到的

单元测试相关工具

  • jest
  • vitest
  • cypress

e2e测试工具

  • cypress

前端框架的测试库

有时候,我们测试更多的是组件,组件的测试,需要使用到框架的测试库,这里会列出一些比较流行的测试库

  • React: React官方的Test Utils / Testing Library - React(推荐) / Enzyme (基于上面的测试策略,更推荐React Testing Library,Enzyme暴露了太多内部元素用来测试,虽然一时方便,但远离了用户行为,之后带来的修改频率也比较高,性价比低)

  • Vue: Vue官方的Test Utils / Testing Library - Vue

  • Angular: Angular内置的测试框架(Jasmine) / Testing Library - Angular

总结

本文介绍了一些前端测试的基本概念,基于大佬的测试模型,介绍了下E2E测试,集成测试,单元测试的概念,以及一些常用的测试工具。

参考

相关推荐
特立独行的猫a1 小时前
用仓颉写一个 Tauri:IPC 的每次往返实现原理(web层到仓颉层的触发过程)
前端·ui·harmonyos·tauri·鸿蒙·仓颉
Dovis(誓平步青云)1 小时前
多个链接不等于多份证据,新闻核验看板怎样合并来源
java·服务器·前端·javascript·人工智能·pdf·电脑
骑着蜗牛撵大象3271 小时前
Qt 事件机制详解:从 QEvent 派生类到事件过滤器的全景指南
前端·python
qq_2518364572 小时前
理发管理系统 —— 会员模块
开发语言·前端·python·flask
Frag0ut2 小时前
2027 年浏览器展望:Chrome 与 Edge 的 AI 智能体进化方向
前端·人工智能·chrome·edge·浏览器·新功能
计算机魔术师2 小时前
从AI绘图鼻祖到音乐版权破局者,Stability AI如何被三大唱片巨头「收编」
前端
奕鼎竜瑆3 小时前
Chrome 插件开发实战指南:从入门到发布
前端·chrome
广州华水科技3 小时前
水库北斗GNSS变形监测系统及单北斗形变监测一体机应用解析
前端
anew___4 小时前
《从零手写操作系统 (20):ELF加载器——让OS读懂现代编译器》
java·服务器·前端
ss2734 小时前
AI全栈实战 | 2.3-01 组件库实战:Element Plus 怎么搭出专业界面,过度封装为什么成维护负担
前端·javascript·elementui·vue