第十三章(前端测试 面试真题)

四季读书网 2 0
第十三章(前端测试 面试真题)

面试真题

题目 1:单元测试原则

好的单元测试应该具备哪些特点?

答案

  • 快速执行
  • 独立,不依赖其他测试
  • 可重复执行
  • 自我验证(有明确的断言)
  • 及时更新

题目 2:TDD vs BDD

TDD 和 BDD 有什么区别?

答案

  • TDD:Test Driven Development,测试驱动开发
  • BDD:Behavior Driven Development,行为驱动开发
  • TDD 关注测试,BDD 关注行为和业务价值
  • BDD 使用更自然的语言(it/should)

题目 3:测试覆盖率

测试覆盖率多少合适?

答案

  • 一般项目:70-80%
  • 核心业务:90%+
  • 不要追求 100%,关键是测试关键路径

题目 4:Mock vs Stub

Mock 和 Stub 有什么区别?

答案

  • Mock:验证交互(方法调用、参数)
  • Stub:提供测试数据
  • Stub 不验证行为,Mock 验证行为

题目 5:快照测试

什么时候使用快照测试?

答案

  • UI 组件渲染结果
  • JSON 序列化数据
  • 快速验证变更
  • 适合变化不频繁的场景

题目 6:集成测试 vs 单元测试

集成测试和单元测试有什么区别?

答案

  • 单元测试:测试单个函数/组件
  • 集成测试:测试多个模块协作
  • 单元测试快,隔离性好
  • 集成测试更接近真实场景

题目 7:E2E 测试

E2E 测试的优缺点?

答案

  • 优点:模拟真实用户行为、覆盖完整流程
  • 缺点:慢、不稳定、维护成本高
  • 用于关键路径测试

题目 8:测试策略

如何制定测试策略?

答案

  • 单元测试:核心业务逻辑
  • 集成测试:模块间交互
  • E2E 测试:关键用户路径
  • 遵循测试金字塔

题目 9:Jest 常用 API

Jest 有哪些常用 API?

答案

  • describe/test/it:组织测试
  • beforeEach/afterEach:setup/teardown
  • expect:断言
  • toBe/toEqual/toBeNull:匹配器
  • jest.fn():创建 mock
  • jest.spyOn():监视方法

题目 10:React 组件测试

如何测试 React 组件?

答案

  • 单元测试:渲染、props、state
  • 交互测试:点击、输入
  • 快照测试:UI 变化
  • 使用 @testing-library/react

题目 11:测试异步代码

如何测试异步代码?

答案

  • async/await + done 回调
  • 使用 Promise + .then
  • Jest 中可使用 async/await
  • 确保错误被正确捕获

题目 12:测试保护隐私

测试中如何处理敏感信息?

答案

  • 不在测试中存储真实数据
  • 使用 mock 数据
  • 环境变量管理配置
  • 避免日志输出敏感信息

题目 13:CI 中的测试

CI 流程中如何配置测试?

答案

  • 每次 push 触发测试
  • 测试失败阻止合并
  • 生成测试覆盖率报告
  • 集成 SonarQube

题目 14:调试测试失败

测试失败时如何调试?

答案

  • 查看测试输出
  • 使用 --verbose 查看详情
  • 在测试中加 console.log
  • 使用 IDE 调试器

题目 15:测试可维护性

如何提高测试的可维护性?

答案

  • 清晰的测试命名
  • AAA 模式(Arrange-Act-Assert)
  • 避免测试实现细节
  • 及时更新测试

抱歉,评论功能暂时关闭!