Drupal容器内执行facets模块PHPUnit测试耗时超30小时问题咨询
Drupal Facets模块PHPUnit测试耗时过长原因说明
核心原因梳理
- 测试类型全量执行:你执行的是facets模块全量测试用例,包含单元测试、内核测试、功能测试、前端JS测试四类,其中功能测试和JS测试每个用例都需要重新安装Drupal实例、初始化数据库、模拟浏览器请求,单条用例基础开销是单元测试的几十倍,facets模块逻辑大量依赖Search API、索引服务、视图渲染,本身测试的基础耗时就偏高。
- 容器资源配置不足:从执行日志可见测试全程内存仅占用30MB,明显是容器内存分配上限过低,触发了频繁的磁盘swap交换,数据库写入、临时文件生成等操作都被IO阻塞,这是耗时被拉长到30小时以上的核心因素。跑Drupal功能测试建议单进程至少分配2G可用内存,同时关闭容器swap。
- 配置与错误开销:日志明确提示phpunit.xml使用了过时的schema,未启用测试缓存、并行执行优化,同时日志中存在大量错误用例(标记为E的条目),错误用例会触发超时重试、异常日志回写等额外开销,你可以先加
--debug参数排查错误原因,常见为缺少索引服务、PHP扩展缺失、数据库权限不足等问题,修复错误后可大幅降低无效等待时间。 - 执行参数未优化:默认PHPUnit为单进程串行执行,你可以安装并行测试扩展后配置多进程执行,或添加
--group参数按需过滤需要执行的测试分组,无需每次全量跑所有用例,仅跑单元测试的情况下全量耗时不会超过5分钟。
内容的提问来源于stack exchange,提问作者Vedang Wartikar
相关产品推荐
相关产品推荐

