以下是关于端到端(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(