以下是关于端到端(E2E)测试的基本知识总结:
一、E2E 测试核心认知
1. 定义与价值定位
"模拟真实用户在完整应用环境中的操作流程"
2. 与传统测试对比
维度 | E2E 测试 | 单元测试 |
---|
测试范围 | 完整用户流程 | 独立模块/函数 |
执行速度 | 慢(秒级) | 快(毫秒级) |
维护成本 | 高 | 低 |
发现问题 | 集成问题/环境问题 | 逻辑缺陷 |
二、基础技术体系
1. 主流工具对比
工具 | 核心优势 | 适用场景 |
---|
Cypress | 实时重载/时间旅行 | 快速迭代的Web应用 |
Playwright | 多浏览器/多语言支持 | 复杂跨平台测试 |
Selenium | 历史久/生态丰富 | 企业遗留系统测试 |
Puppeteer | Chrome深度集成 | 爬虫类应用测试 |
2. 典型测试结构
describe('Checkout Flow', () => {beforeEach(() => {cy.login('test@user.com', 'password123');});it('should complete purchase', () => {cy.visit('/products/1');cy.get('[data-testid="add-to-cart"]').click();cy.contains('Checkout').click();cy.fillForm('#payment-form', {cardNumber: '4242424242424242',expiry: '12/30',cvc: '123'});cy.contains('Payment Successful').should('be.visible');cy.get('[data-testid="order-number"]').should('have.length.gt', 0);});
});
三、核心能力进阶
1. 复杂场景处理
场景 | 解决方案 | 代码示例 |
---|
跨域测试 | 禁用Web安全策略 | chromeWebSecurity: false |
文件上传 | 使用隐藏input元素 | .selectFile('file.txt') |
多标签页 | 上下文管理 | browserContexts API |
WebSocket | 消息拦截与模拟 | cy.intercept() 方法 |
2. 网络控制策略
cy.intercept('POST', '/api/checkout', {statusCode: 200,body: { success: true, orderId: 123 }
}).as(