性能与契约测试

共 38 题
#

1. k6 的 HTTP/WS 压测与阈值 与 Storybook 8 CSF4 的现代协作

A k6 只能压测 HTTP 请求,不支持 WebSocket
B k6 阈值只能在运行后人工判断
C k6 以 VU/迭代模型施压,thresholds 声明式断言形成 CI 性能门禁,可与 CSF4 组件规格协作做开发期压测 ✓ 正确答案
D k6 脚本不支持 JS 语法
#

2. Pact 在前后端契约测试的应用与边界

A Pact 要求前后端必须联调才能验证契约
B Pact 由消费者生成契约、提供者回放验证,经 Broker 共享版本,实现契约驱动的并行开发 ✓ 正确答案
C Pact 契约能验证接口的所有可能输入
D Pact 只适用于 GraphQL
#

3. 内存与 FPS 性能回归测试

A 浏览器可以直接读取合成器 FPS 数值
B 内存回归以强制 GC 后的快照基线衡量,帧率以长任务与掉帧等代理指标衡量,需固定环境与容差阈值 ✓ 正确答案
C 性能回归测试只需运行一次即可判定
D 内存增长与长会话 SPA 无关
#

4. Bundle 体积回归测试(bundlesize、size-limit)

A bundle 体积测试只需在发版时手动检查
B 体积预算不需要考虑首屏关键包
C bundlesize 支持执行开销估算
D size-limit 度量压缩后体积与实际执行开销,体积预算作为 CI 门禁防止依赖膨胀 ✓ 正确答案
#

5. web-vitals 库与 PerformanceObserver 在自动化性能回归的工程价值

A web-vitals 库无法在测试中注入采样
B PerformanceObserver 只能读取注册后的条目
C web-vitals 基于 PerformanceObserver 封装 CWV 测量,可注入自动化流程做预算断言,与 RUM 字段数据互补 ✓ 正确答案
D LCP 与 PerformanceObserver 无关
#

6. 契约测试(Pact/OpenAPI)在前后端联调与回归的工程价值

A 契约测试的目的是替代所有集成测试
B 契约测试使前后端并行开发、独立验证接口一致性,把联调自动化并提前暴露不兼容变更 ✓ 正确答案
C OpenAPI 是消费者驱动的契约
D 契约测试无法接入 CI
#

7. Jest 30 与 Playwright 1.5x 的现代取舍

A Jest 30 可以替代 Playwright 做 E2E
B Playwright 1.5x 不支持组件测试
C Jest 30 聚焦单测运行器现代化,Playwright 1.5x 覆盖组件与 E2E 层,可按测试金字塔分层组合 ✓ 正确答案
D Jest 30 已放弃 ESM 支持
#

8. fixture factory(如 Fishery)相较手写 mock 对象的可维护性与类型安全优势

A fixture factory 只能构建基础类型对象
B 手写 mock 与工厂在类型安全上无差异
C Fishery 以工厂声明默认数据并按需覆盖,TypeScript 全量推导,解决手写 mock 的重复与类型漂移 ✓ 正确答案
D fixture factory 不支持关联数据构建
#

9. MSW handler 的分层组织与场景复用,基础 handler、场景 override 与测试隔离策略

A MSW handler 按基础层与场景 override 分层组织,afterEach 重置恢复默认,保证用例隔离 ✓ 正确答案
B 每个测试都应在 beforeAll 中声明全部接口 handler
C handler 可以在测试之间共享可变状态
D override 不需要恢复
#

10. size-limit 与 Bundlewatch 在 PR 阶段的产物体积门禁

A size-limit 只能测量 gzip 体积
B Bundlewatch 无法展示体积 diff
C size-limit 以绝对预算、Bundlewatch 以基线对比在 PR 阶段拦截体积膨胀 ✓ 正确答案
D 体积门禁会降低构建速度所以应跳过
#

11. Lighthouse CI 在性能门禁的应用

A Lighthouse CI 只能生成报告,不能作为门禁
B assertions 不支持 LCP 等指标
C LHCI 通过 assertions 声明性能阈值,固定环境多次运行取中位数,形成稳定的 CI 性能门禁 ✓ 正确答案
D Lighthouse 评分与运行环境无关
#

12. k6(k6.io)在负载测试与 SPA 加压的工程价值

A k6 以协议层请求压测服务端容量,SPA 的客户端渲染与交互需真实浏览器测试协作补充 ✓ 正确答案
B k6 可以完全模拟浏览器中的 SPA 渲染
C k6 不支持阈值判定
D k6 只能压测 WebSocket
#

13. Lighthouse CI 在 PR 检查的性能预算(performance-budget.json)

A performance-budget.json 只能声明总体积
B LHCI 无法读取预算文件
C 资源预算与性能指标无关
D performance-budget.json 按资源类型声明体积与数量预算,LHCI 断言其通过率,与指标门禁配合治理 ✓ 正确答案
#

14. Ladle 的轻量 Storybook 替代 在大型项目测试金字塔的工程价值

A Ladle 不支持 CSF 格式的 story
B Ladle 无法被 E2E 工具访问
C Ladle 的启动速度与 Storybook 相同
D Ladle 以轻量架构提供秒级构建,story 作为组件测试与文档的统一入口,降低大型项目 CI 成本 ✓ 正确答案
#

15. Storybook 8 CSF4 在 CI/CD 与并行执行的工程价值

A CSF4 只能用于文档展示
B CSF4 以结构化 story 规格驱动视觉、交互与文档多工具,按 story 粒度并行与增量测试提升 CI 效率 ✓ 正确答案
C Test Runner 无法与 CSF4 协作
D TurboSnap 会测试所有 story 以保准确
#

16. Lighthouse CI 的 lighthouserc 配置与预算治理

A lighthouserc.json 只需要配置 URL
B lighthouserc 由 collect/assert/upload 三段构成,断言支持分级阈值,需固定环境与基线演进治理波动 ✓ 正确答案
C assertions 只能对总评分断言
D 多次运行应取最大值作为口径
#

17. API Mock 与契约测试(契约驱动开发)

A CDD 中前端只能等后端实现完成再开发
B CDD 以契约为单一事实源,mock 从契约生成支撑并行开发,契约测试在 CI 中验证一致性 ✓ 正确答案
C 契约变更不需要通知消费方
D mock 与契约可以互相矛盾
#

18. WebPageTest 与真实场景测试

A WebPageTest 在真实地点与网络条件下测试并提供瀑布图等深度诊断,与 Lighthouse 的合成审计互补 ✓ 正确答案
B WebPageTest 只能在本地模拟环境中运行
C WPT 不支持自定义脚本
D Lighthouse 与 WPT 的测试条件完全相同
#

19. Puppeteer/Cypress 性能测试(Web Vitals 注入)

A 性能测试只能在单独的性能工具中执行
B Puppeteer/Cypress 可注入 web-vitals 在真实交互路径中采集指标并断言,与 Lighthouse、RUM 形成三极互补 ✓ 正确答案
C 注入的指标无法在测试中断言
D E2E 注入性能测试不需要固定环境
#

20. Pact 的 pactflow 与 Mock Server 在微前端集成的协作边界

A Mock Server 可以完全替代集成验证
B 契约变更无需评审
C PactFlow 无法处理多团队契约
D PactFlow 托管契约版本并做 can-i-deploy 决策,Mock Server 按契约生成模拟接口,微前端场景仍需环境级验证兜底 ✓ 正确答案
#

21. WebPageTest 与 Lighthouse 的差异在多地点多设备性能测量的工程价值

A Lighthouse 支持全球多地点测试
B WPT 的结果与 Lighthouse 必然一致
C 同一页面的性能与地理位置无关
D WebPageTest 覆盖多地点真实网络与设备,可暴露 CDN 地域性问题,与 Lighthouse 基线形成互补 ✓ 正确答案
#

22. Performance Observer API 与 Lighthouse 的运行时性能数据采集在真用户监控(RUM)

A PerformanceObserver 属于实验室数据采集工具
B RUM 数据不需要采样与批量上报
C buffered: true 无法读取历史条目
D PerformanceObserver 支撑真实用户的字段数据采集,Lighthouse 提供可复现的实验室审计,两者在 RUM 中分工互补 ✓ 正确答案
#

23. v8 snapshot 在 Node.js 测试启动加速与 Jest 28 worker 的边界

A v8 snapshot 序列化预热堆跳过重复编译,worker 池复用进程避免冷启动,两者各有适用边界 ✓ 正确答案
B v8 snapshot 可以无条件加速所有测试
C Jest worker 可以跨环境无限制复用
D 测试启动开销与模块编译无关
#

24. Pact 的 matchers(like、eachLike、term)在动态值(id、timestamp)契约匹配

A matchers 只能匹配字面量值
B like/eachLike/term 等 matchers 按类型、结构或正则匹配动态字段,需按字段性质平衡匹配精度 ✓ 正确答案
C 使用 matcher 后契约验证完全失效
D term matcher 不支持正则
#

25. Cypress Component Testing 与 Storybook 在组件可视化回归的协作与现代取舍

A 组件可视化回归只能使用 Storybook
B Cypress CT 无法截图组件
C Storybook 侧重组件资产与视觉回归,Cypress CT 侧重测试工程化,可复用同一 story 描述按需消费 ✓ 正确答案
D 两套组件测试体系并行没有成本
#

26. 基准测试(microbenchmark)benchmark.js/tinybench 在高频路径优化(debounce、throttle、format)的现代边界

A 微基准需预热与统计采样,只宜做同环境相对对比,JIT 与 GC 干扰决定了其边界 ✓ 正确答案
B 微基准测试的结果可以直接作为生产性能指标
C benchmark.js 与 tinybench 不兼容异步
D 微基准不受环境噪声影响
#

27. Pact Broker 在版本管理与跨服务版本兼容契约验证的协作

A Pact Broker 只能存储单一契约版本
B 提供者升级无需验证消费者契约
C Pact Broker 记录契约验证矩阵,can-i-deploy 依据已部署版本判断发布兼容性,形成发布门禁 ✓ 正确答案
D tag 与环境部署无关
#

28. Web Vitals(CWV)的 Lab 数据(Lighthouse)

A Lab 数据反映真实用户的性能分布
B Lighthouse 可以直接测量真实 INP
C Lab 数据在固定环境中可复现测量,INP 以 TBT 为代理,适合回归门禁但无法代表真实用户 ✓ 正确答案
D Lab 与 Field 数据可以互相替代
#

29. 契约测试在 GraphQL 服务端的 schema introspection 与客户端 codegen 的协作

A GraphQL 以 schema 为类型契约,introspection 与 codegen 保证双端类型一致,行为契约仍需示例验证补充 ✓ 正确答案
B GraphQL 不需要契约测试
C codegen 生成的类型与运行时无关
D introspection 只能用于调试
#

30. Playwright Accessibility Testing(axe-core 集成)

A axe 扫描结果一定准确无需人工复核
B axe 只能扫描静态页面
C AxeBuilder 注入规则扫描页面,可配置范围与等级,在内容稳定后扫描并接入 CI 门禁 ✓ 正确答案
D Playwright 无法运行 axe
#

31. Cypress 的 cy.performance API 与 Web Vitals 上报的 RUM 数据同步策略

A 测试环境的性能数值与生产环境必然一致
B 测试中采集的性能指标与生产 RUM 保持同一测量口径并对照相对基线,实现 Lab/Field 可比 ✓ 正确答案
C RUM 采样不需要批量上报
D 测试指标只能看绝对值
#

32. E2E 测试的账号、种子数据与环境隔离策略,测试租户、数据清理与并行执行冲突避免

A E2E 测试可以直接使用生产账号
B E2E 数据用测试租户隔离、幂等创建与按 worker 唯一命名,数据生命周期与测试绑定避免并行冲突 ✓ 正确答案
C 种子数据只创建不清理也没问题
D 并行测试共享固定种子数据最稳定
#

33. 测试并发执行时的数据冲突与清理策略,事务回滚、独立 schema 与 truncate 的工程取舍

A 事务回滚快且净但要求同连接,独立 schema 彻底隔离支持并行,truncate 需独占环境,按场景组合使用 ✓ 正确答案
B 事务回滚适用于所有测试场景
C truncate 适合在共享库中并发使用
D 独立 schema 不需要迁移初始化
#

34. Pact 与 OpenAPI/AsyncAPI 的契约规范协作与现代 API 设计优先(API First)

A OpenAPI/AsyncAPI 定义接口标准,Pact 验证消费期望,API First 以规范为单一事实源驱动 mock、测试与文档 ✓ 正确答案
B OpenAPI 与 Pact 是同一种契约形式
C AsyncAPI 只用于 HTTP 接口
D 规范变更无需评审
#

35. 测试环境配置(env、service mock)在 CI 与本地的一致性保障,dotenv、config 注入与 secrets 管理

A 环境配置分层覆盖并统一校验,mock 描述共享、secrets 经 CI secret 注入且 .env 不提交,保证本地与 CI 一致 ✓ 正确答案
B 测试密钥可以提交进 git 仓库
C 本地与 CI 的配置可以随意不同
D dotenv 负责生产环境变量注入
#

36. Factory Bot 模式在前端测试中的 TypeScript 类型推导与关联数据构建的工程实践

A 工厂模式会丢失 TypeScript 类型
B 工厂只能构建单层对象
C 工厂集中测试数据规格,build 结果全量类型推导,支持关联与序列化构建,消除手写 mock 的类型漂移 ✓ 正确答案
D 覆盖字段时类型不检查
#

37. 测试数据库的迁移(migration)与种子(seed)在 CI 流水线中的执行时机与缓存策略

A 迁移建立结构、种子灌入数据,可按 schema 指纹缓存复用,种子需幂等并处理并发安全 ✓ 正确答案
B 每次测试运行都应重新执行全部迁移
C 已上线的迁移文件可以随意修改
D 种子数据不需要版本管理
#

38. 快照测试(Snapshot)在 API 响应数据中的适用边界与脆弱性治理

A API 快照适合包含所有动态字段
B 快照更新不需要审查
C API 快照适用于结构稳定的响应,动态值需 normalizer 归一化,更新走评审并配合语义断言 ✓ 正确答案
D 快照可以完全替代接口断言