前端自动化UI测试的完整方案

开发公共平台项目,测试资源相对比较少,因此对开发者自身而言,为了维护项目的稳定性,需要对平台做各类测试,即使有测试环境,但是也很容易缺乏测试场景导致带着bug上线的情况。

因此我们需要做完整自动化测试方案,来避免这类常规错误,提高平台的可用性和稳定性。

这里先简单描述自动化测试的分类:

  • 单元测试,验证独立的单元模块代码或函数是否正常工作
  • 集成测试,验证多个单元模块间的协同工作
  • UI 测试,只针对前端UI部分测试,后端数据采用mock方式
  • 端到端测试,从用户的角度,通过机器来模仿用户在真实浏览器中验证应用交互
  • 快照测试,验证程序的UI变化

接下来我们将根据这些测试类如何在项目中落地完整方案。

单元测试

前端项目主要用的单元测试框架为JestMocha,下面就Jest框架如何实现一个单元测试。

实现步骤

1、安装依赖

npm i jest --save-dev
# 如果是typescript还需要安装 ts
npm i ts-jest babel-jest --save-dev
# 安装类型
npm i @types/jest --save-dev

2、新增测试命令,在package.jsonscripts新增代码

{
    ...
    "scripts": {
        "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
  },
}

3、新增配置文件jest.config.js,参考配置如下:

module.exports = {
    "testEnvironment": "node",
    testMatch: [ //匹配测试用例的文件
        '<rootDir>/test/**/*.test.ts'
    ],
    transform: {
        '^.+\\.js$': '<rootDir>/node_modules/babel-jest', // babel编译
        '^.+\\.ts$': '<rootDir>/node_modules/ts-jest', // typescript编译
    },
    "collectCoverage": true
}

4、编写单元测试代码,在根目录下新建测试文件test/sum.test.js,标识对a.ts文件做测试,代码如下:

//sum.ts
export const sum = (a, b) => {
    return a + b;
}

//sum.test.ts
import { sum } from '../src/sum'

test("test two num sum", async () => {
    const res = sum(5, 6);
    expect(typeof res).toBe("number")
    expect(res).toBe(11)
})

5、开始自动化测试yarn test或者npm run test,然后会出现如下:


                
### 前端 UI 自动化测试工具推荐 对于前端 UI自动化测试,存在多个高效且功能强大的工具可供选择。以下是几种被广泛认可并使用的工具: #### 1. Cypress Cypress 是一款专为现代 Web 应用程序设计的强大前端测试框架。其特点在于能够提供实时重新加载、自动等待机制以及直观的调试体验。这使得开发者能够在本地环境中快速定位问题所在[^1]。 #### 2. Playwright Playwright 支持 Chromium, Firefox 和 WebKit 浏览器引擎,并提供了跨平台的一致性 API 接口来执行各种类型的交互操作。该工具还具备内置视频录制等功能,有助于记录整个会话过程以便后续审查分析。 #### 3. Selenium WebDriver (结合 Python/Java 等编程语言) 尽管 Selenium 并不局限于特定领域,但在前端 UI 测试方面仍然占据重要地位。借助于丰富的社区资源和支持多种主流编程语言的优势,Selenium 可以轻松集成到现有 CI/CD 流程当中去[^4]。 #### 4. Jest + React Testing Library 或 Vue Test Utils 当涉及到具体框架下的组件级单元测试时,则可以考虑采用专门为此目的而生的技术栈组合方式——比如针对 React 使用 `Jest` 加上 `@testing-library/react`;或者是面向 Vue.js 生态系统的 `Vue Test Utils`。这两种方案均能很好地满足日常开发中的需求,同时也易于学习掌握[^3]。 #### 5. LambdaTest 作为一个云端分布式浏览器网格服务平台,LambdaTest 不仅允许用户在其上面运行由其他任何开源库构建而成的脚本文件,而且还自带了一套完整的可视化编辑界面供初学者尝试探索不同的可能性。 ```javascript // 示例:使用 Cypress 进行简单的登录表单验证 describe('Login Form', () => { it('should submit successfully with valid credentials', () => { cy.visit('/login') cy.get('#username').type('testuser') cy.get('#password').type('secret{enter}') cy.url().should('include', '/dashboard') // 断言跳转到了预期页面 }) }) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值