面试真题
题目 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) 避免测试实现细节 及时更新测试
文章来源:
四季读书网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至23467321@qq.com举报,一经查实,本站将立刻删除;如已特别标注为本站原创文章的,转载时请以链接形式注明文章出处,谢谢!