# 1. UI 测试的"测试金字塔"定位,单元测试(组件逻辑)→ 集成测试(交互)→ E2E(用户流程)→ 视觉测试(外观)的分层策略? A 应尽量用 E2E 测试覆盖所有组件逻辑,以保证真实性 B 各层测试数量应均等,成本无差异 C 视觉测试可以替代单元测试的逻辑断言 D 单元测试应占大头覆盖组件逻辑,E2E 聚焦关键路径,视觉测试作为横向补充层验证外观 ✓ 正确答案
# 2. Storybook 的 Interaction Testing(play 函数)与 Testing Library 的集成,如何在组件隔离环境中验证用户交互? A play 函数运行在 jsdom 环境中,无法验证真实交互 B play 函数在真实浏览器隔离环境中驱动 DOM 仿真用户交互,并复用 Testing Library API 与可视化回放 ✓ 正确答案 C play 函数只能做视觉断言,无法验证交互 D play 函数无法与 Testing Library 集成
# 3. UI 测试中的"抗脆弱性"设计,如何避免测试因 UI 微调而频繁失败(brittle tests)? A 应使用精确的 CSS 选择器定位元素,以保证测试精准 B 抗脆弱性与测试稳定性无关 C 测试应依赖 DOM 层级结构,以便跟随实现调整 D 应优先使用 getByRole/getByLabelText 等用户可感知的语义查询,并断言行为结果而非内部实现细节 ✓ 正确答案
# 4. 表单交互的测试要点,即时校验、防重复提交、焦点管理、错误提示与恢复 A 只需测试正常提交成功即可 B 应覆盖即时校验、防重复提交、焦点管理与错误提示、错误恢复等要点,并验证提交失败后数据保留 ✓ 正确答案 C 防重复提交与测试无关,无需覆盖 D 焦点管理与错误提示可访问性不属于表单测试范围
# 5. 动画与过渡效果的测试策略,如何验证 CSS 动画、View Transitions、手势交互的正确性? A 应精确断言动画的每一帧,以保证时序正确 B 动画无法测试,只能跳过 C 应验证动画终态与关键状态,通过禁用/冻结动画消除时序不确定性,并尊重 prefers-reduced-motion ✓ 正确答案 D 动画测试与可访问性无关
# 6. 多语言/RTL 布局的 UI 自动化测试,如何检测文本溢出、截断和布局镜像问题? A 所有语言布局相同,只需测英文即可 B 应检测文本溢出、截断与 RTL 镜像问题,用布局断言与视觉对比双重验证,并覆盖长文本与 RTL 语言 ✓ 正确答案 C RTL 环境无需测试镜像,方向自动正确 D 文本溢出无法通过自动化检测
# 7. 微前端(Micro-Frontend)的 UI 集成测试,子应用间的样式隔离、事件通信和视觉一致性如何验证? A 应验证子应用间的样式隔离、事件通信与视觉一致性,并结合各子应用独立回归与集成验证 ✓ 正确答案 B 子应用之间不会互相影响,无需集成测试 C 事件通信无法通过自动化测试验证 D 视觉一致性由各子应用自行保证,无需统一验证
# 8. 键盘操作与焦点管理在交互测试中的验证,Tab 顺序、快捷键、焦点陷阱与可访问性结合 A 只需用鼠标点击测试即可,键盘操作无需覆盖 B 键盘测试与可访问性无关 C 焦点陷阱是模态框自带的,无需测试 D 应验证 Tab 顺序、快捷键、焦点陷阱(模态框内焦点不逃逸)与焦点恢复,并结合 ARIA 与 axe 断言 ✓ 正确答案
# 9. 交互测试中的防抖/节流场景,搜索联想、按钮连点、滚动加载如何验证行为正确? A 应即时断言输入后的请求,无需等待防抖窗口 B 应用可控时钟(fake timers)验证防抖/节流时序,断言最终行为与请求次数,并覆盖连点与滚动加载 ✓ 正确答案 C 防抖只影响性能,不影响行为,无需测试 D 滚动加载的游标推进无法验证
# 10. 拖拽与排序交互的测试,HTML5 拖放、鼠标事件序列与列表重排的自动化难点,如何稳定模拟并断言结果? A 原生 HTML5 拖放在 jsdom 中支持完整,可直接模拟 B 只需断言拖拽过程,无需断言重排结果 C 拖拽排序无法自动化测试 D 拖拽自动化难点在事件序列与坐标,应优先用功能断言验证重排结果,真实拖拽用 Playwright 鼠标事件模拟 ✓ 正确答案
# 11. 异步竞态的交互测试,响应乱序、加载中重复操作与竞态覆盖如何设计用例,测试中如何控制时序保证确定性? A 竞态无法控制,只能依赖真实网络自然发生 B 竞态用例只需覆盖正常顺序即可 C 应用可控的 mock 与时钟控制响应顺序重现竞态,断言最终展示的是最新/正确数据 ✓ 正确答案 D 加载中重复操作不会引起问题,无需覆盖
# 12. Design Token 变更的视觉影响分析,如何自动检测 Token 变更对全局 UI 的影响范围? A Token 变更只影响单个组件,无需全局分析 B 影响分析只能人工排查,无法自动化 C 应建立 token 到使用方的映射,token 变更时用变更驱动视觉回归与影响清单,自动检测影响范围 ✓ 正确答案 D Token 变更不影响对比度合规
# 13. UI 测试中的截图(Screenshot)管理,存储成本、版本对比和审批工作流? A 应控制存储成本、关联代码版本做对比,并走"审查→批准→记录"的审批工作流 ✓ 正确答案 B 应无限期保留所有截图,以支持回溯 C 截图无需关联版本,随意存放即可 D 截图管理不需要审批流程
# 14. UI 的自动化断言,视觉与行为? A 行为断言验证功能正确性,视觉断言验证外观,二者互补不可互相替代 ✓ 正确答案 B 视觉断言可以完全替代行为断言 C 行为断言关注外观,视觉断言关注功能 D UI 测试只需行为断言即可
# 15. 响应式与多端 UI 测试? A 只需用浏览器模拟覆盖视口即可,无需真机 B 多端测试只需测 iOS 即可 C 应以断点为单元覆盖视口(响应式),并用浏览器模拟为主、真机/云真机为辅覆盖平台差异 ✓ 正确答案 D 响应式与多端测试无关
# 16. UI 测试中的组件 Mock 与真实渲染取舍,组件测试的替身边界与集成验证的平衡? A 应按测试层级选择替身边界:单元测试 mock 隔离、集成测试真实渲染少量 mock、E2E 全真实,替身边界尽量小而真实 ✓ 正确答案 B 应绝对真实渲染,不 mock 任何东西 C 应尽量 mock 所有依赖,以保证测试快速确定 D Mock 与真实渲染无差别,可随意使用
# 17. UI 自动化中第三方组件(地图、支付 SDK、广告)的测试策略,如何隔离与打桩? A 应始终真实加载第三方 SDK,以保证真实性 B 打桩会导致所有集成问题都被掩盖,应该完全不用 C 第三方组件无法测试,只能跳过 D 常规 UI 测试应通过模块 mock、接口拦截、桩组件隔离第三方组件,并保留少量真实集成验证兜底 ✓ 正确答案
# 18. UI 测试与设计系统的联动,组件库(Storybook/Design Tokens)变更如何驱动 UI 回归? A 设计系统变更只影响组件库,与页面无关 B 组件库与页面应使用不同基线,互不关联 C 设计系统变更无法自动触发测试 D 应通过变更检测,让组件库/Design Token 变更自动触发组件级与页面级 UI 回归,并用影响范围报告驱动审查 ✓ 正确答案
# 19. URL 与组件状态的同步测试,路由参数、浏览器前进后退与组件状态的联动如何验证,深链接直达状态如何恢复? A URL 与组件状态无关,无需测试同步 B 应验证状态与 URL 的双向同步、浏览器前进后退的历史联动,以及深链接直达时的状态恢复 ✓ 正确答案 C 深链接直达永远恢复默认态,无需测试 D 前进后退不需要考虑状态恢复