UI 质量与交互测试

共 19 题
#

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 前进后退不需要考虑状态恢复