0

0

优化端到端测试:速度,可靠性和效率的策略

DDD

DDD

发布时间:2025-01-28 08:06:26

|

448人浏览过

|

来源于php中文网

原创

优化端到端测试:速度,可靠性和效率的策略

高效端到端(E2E)测试策略:速度、可靠性与效率

端到端(E2E)测试模拟真实用户交互,例如点击按钮、输入文本和页面导航,验证整个应用流程是否正常运行。本文分享优化E2E测试的策略,基于Playwright框架,但多数技巧适用于其他E2E测试框架。

背景

近期项目中,我们重新启用了一些被搁置的E2E测试。此过程中,我们发现测试用例可以合并或重写,数据库恢复方式也显著增加了执行时间。此外,我们发现了并行化测试的潜力。因此,我们专注于以下优化策略:测试用例合并与优化、并行化和数据库恢复策略调整。

测试并行化

并行测试是加速E2E测试执行最有效的方法。通过同时运行多个测试,可以充分利用系统资源,缩短总运行时间。

跨文件并行化

我们使用Playwright,配置其使用5个worker,每个worker独立运行一个测试文件,最多同时执行5个测试:

// playwright.config.js
import { defineConfig } from '@playwright/test';

export default defineConfig({
  workers: 5,
});

这显著提高了测试执行速度,但部分测试需要重写,因为某些测试修改了其他测试依赖的资源,并行执行时可能导致失败。

文件内并行测试

除了跨文件并行,我们还可以在单个测试文件中启用并行执行。Playwright通过test.describe.parallel实现:

科威旅游管理系统
科威旅游管理系统

该软件是以php+MySQL进行开发的旅游管理网站系统。系统前端采用可视化布局,能自动适应不同尺寸屏幕,一起建站,不同设备使用,免去兼容性烦恼。系统提供列表、表格、地图三种列表显示方式,让用户以最快的速度找到所需行程,大幅提高效率。系统可设置推荐、优惠行程,可将相应行程高亮显示,对重点行程有效推广,可实现网站盈利。系统支持中文、英文,您还可以在后台添加新的语言,关键字单独列出,在后台即可快速翻译。

下载
test.describe.parallel('并行测试组', () => {
  test('测试1', async ({ page }) => {
    // 测试逻辑
  });

  test('测试2', async ({ page }) => {
    // 测试逻辑
  });
});

关键原则:避免副作用,确保测试独立,避免共享或修改资源;明智地重用资源,防止资源竞争或冲突。

预认证

预认证确保每次测试都从一致的用户会话开始,避免重复登录操作。我们使用Playwright和storagestate存储会话信息(cookie、本地存储),每次测试恢复此状态:

test('用户视图 - TEST_ID#153', async ({ browser }) => {
  const context = await browser.newContext({
    storageState: path.join(__dirname, `../.auth/${email}.json`),
  });
  const page = await context.newPage();
  await page.goto('/'); // 用户已登录
});

挑战包括确保.auth/${email}.json文件始终更新,以及关注辅助函数的可重用性,避免紧密耦合。

高效端到端测试的最佳实践

  • 测试隔离:确保测试独立,避免共享状态;
  • 最小化依赖:预认证和可重用助手减少冗余,提高可靠性;
  • 监控管道性能:定期检查测试运行时间和资源利用率;
  • 平衡覆盖率和执行时间:专注于关键工作流程。

结论

优化E2E测试是一个持续过程,需要平衡性能、可靠性和覆盖范围。并行化、预认证和资源管理等技术可以缩短测试执行时间,提高效率。虽然存在挑战,但优化后的E2E测试套件带来的好处远大于付出的努力。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

418

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

535

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

76

2025.09.10

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6424

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

346

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

411

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

88

2025.08.19

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

58

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号