← 返回全部分类软件测试面试题(5道)
软件测试 · 中等"单元测试和集成测试有什么区别?"
单元测试验证单个函数或方法,用mock隔离依赖,运行极快。集成测试验证多个组件协同工作:API端点对接真实数据库、服务间通信、UI与后端交互。它们更慢但能发现接口不匹配和配置问题。我遵循测试金字塔:底部大量单元测试,中间较少集成测试,顶部少量端到端测试。在上一个项目中,2000个单元测试30秒跑完,200个集成测试需要8分钟——两者都不可或缺但服务不同目的。
💡 提示:提到测试金字塔展示战略思维。;讨论权衡:速度vs信心,隔离vs真实。;提及你用过的框架(Jest、pytest、JUnit)。
软件测试 · 中等"你会如何设计测试自动化策略?"
我围绕ROI设计自动化策略。首先识别最高价值的自动化目标:频繁运行的回归套件、部署冒烟测试、多输入组合的数据驱动测试。我用80/20法则——自动化覆盖80%关键路径的20%测试。遵循测试金字塔,主要投资单元和API级测试。UI自动化只针对稳定的用户旅程并使用页面对象模式保持可维护性。一切集成到CI/CD:每次提交跑单元测试,每个PR跑集成测试,每晚跑E2E。我还预留20%自动化时间用于维护——不稳定测试会侵蚀信任。
💡 提示:强调ROI思维——不是所有东西都要自动化。;讨论如何处理不稳定测试和维护套件。;将CI/CD集成视为必须而非可选。
软件测试 · 中等"你怎么确定Bug的优先级?"
我使用严重度-优先级矩阵。严重度衡量技术影响:S1数据丢失或安全漏洞,S2主要功能损坏,S3次要功能问题,S4外观问题。优先级衡量业务紧急度:影响用户数、收入影响、变通方案可用性。高严重低优先可能是罕用功能的崩溃;低严重高优先可能是定价页的错别字。我与产品经理每日分诊,共享看板。在上一个岗位,实施此框架后平均解决时间缩短40%,因为工程师聚焦在真正重要的事上。
💡 提示:展示你考虑业务影响,而非只看技术严重度。;提到利益方协作——分诊不是独立活动。;展示务实:不是每个Bug都需要立即修复。
软件测试 · 中等"你怎么做API测试?"
我从四个维度测试API。功能:验证每个端点对有效输入返回正确数据、无效输入返回恰当错误码、处理空数组和null等边界。契约:确保API符合OpenAPI规范不破坏消费者——用Pact做消费者驱动的契约测试。性能:对关键端点做负载测试建立基线。安全:测试认证、授权、输入验证和限流。所有这些都自动化集成到CI中,每个PR运行完整API测试套件,并在生产环境监控API健康。
💡 提示:超越正常路径测试——边界和错误处理最重要。;提到契约测试展示你考虑API消费者。;讨论部署前测试和生产监控两方面。
软件测试 · 中等"你怎么做性能测试?"
我分三个阶段做性能测试。首先基线:在正常负载下分析当前系统,建立响应时间、吞吐量和资源利用率基准。其次负载测试:逐步增加并发用户找到临界点和瓶颈——用k6或Locust。第三浸泡测试:持续24+小时负载发现内存泄漏和连接池耗尽。我总是在尽可能接近生产的环境中测试。在上一个项目中,性能测试发现了一个只在持续流量4小时后才出现的数据库连接泄漏。我们在上线前修复了它。
💡 提示:总是在类生产环境中测试——本地测试结果有误导性。;关注对用户有意义的指标:响应时间百分位(p95、p99),而非只看平均值。;将性能测试纳入CI/CD自动捕获回归。