你可能对并行测试执行的扩展策略类型不太熟悉,但在实际工作中,99% 的人都在使用它们。我想向你介绍三种扩展策略,以扩展你的知识基础。
垂直扩展
垂直扩展是通过增加现有系统的处理能力(如 CPU 或 RAM)来满足不断增长的需求。
垂直扩展:通过增加单个服务器的资源容量(CPU、RAM)来处理更多负载。
换句话说,通过增加并行测试执行中的线程数 / 工作进程数,你就进行了垂直扩展。这种扩展方式受限于测试执行实例的容量(CPU、RAM)(例如,个人电脑、远程服务器等)。
水平扩展
水平扩展是指应用程序能够根据工作负载的增加或减少自动添加或减少计算节点。
我的意思是,你将测试执行分布在不同的实例上 —— 将测试一分为二,分配给每个服务器执行其部分。
水平扩展:添加更多服务器来分担负载并提高性能。
一个简单的理解差异的方法是考虑方向。在垂直方法中,我们通过增加实例的处理能力(CPU、RAM)来向上扩展。在水平方法中,我们通过添加更多实例来向外扩展。
对角线 / 混合 / 混合扩展
其中一种术语(我听说过这三种变体)解释了最后一种扩展类型,即水平扩展 + 垂直扩展。这种扩展类型用于同时最大化所有实例的性能。
混合扩展:结合垂直和水平扩展以优化性能和灵活性。
例如,在 3 个实例中每个实例运行 2 个线程 / 工作进程,你将总共获得 6 个线程 / 工作进程!
实施扩展策略
我们拥有实施这些方法的所有工具:
Selenium-Java:对于基于 Selenium 的测试,我们可以使用 JUnit/TestNG 内置的解决方案进行垂直扩展,或使用 Selenium Grid + JUnit/TestNG 进行水平或混合扩展。
垂直扩展的 junit-platform.properties 文件示例
Playwright:工作进程处理垂直扩展,而分片管理水平扩展。通过结合工作进程和分片,你可以实现混合解决方案。
运行 Playwright 测试以实现对角线扩展
Cypress:我在这一方面经验有限,但据我所知,Cypress 的并行化测试一直是通过 Cypress Cloud 提供的付费功能。有人尝试通过 cypress-parallel 或 sorry-cypress 引入免费的 Cypress 并行化测试。然而,从版本 13 开始,Cypress 强制实施数据记录限制,阻断了特定的第三方解决方案。我称之为 “不尽如人意的 sorry-cypress”。如果你知道如何在最新版本中运行 Cypress 并行测试,请在评论中分享!