Skip to content

测试面试高频 50 问

测试理论、场景设计、自动化、编程、Linux、数据库、CI/CD、行为面试 每道题附回答思路

一、测试理论基础(Q1-Q10)

Q1. 黑盒测试和白盒测试的区别?

思路: 黑盒不看代码测功能(等价类、边界值),白盒看代码逻辑(语句/分支/路径覆盖)。

Q2. 如何设计测试用例?

思路: 理解需求 → 拆功能点 → 等价类划分 → 取边界值 → 写用例。

Q3. 如何保证测试覆盖率?

思路: 需求覆盖率(RTM)+ 代码覆盖率(Jacoco)+ 场景覆盖(正常/异常/边界)。

Q4. Bug 的生命周期?

思路: 提交 → 确认 → 分配 → 修复 → 验证 → 关闭。特殊情况:reopen、defer。

Q5. 功能/集成/系统/验收测试区别?

思路: 按测试层级从小到大:单元(开发自测)→ 集成(联调)→ 系统(全功能)→ 验收(用户确认)。

Q6. 什么是回归测试?

思路: 改代码后重新测,确保没引入新 bug。范围:改了什么 + 上下游模块 + 核心流程。

Q7. 测试计划和测试策略区别?

思路: 计划 = 谁、什么时候、测什么(管理)。策略 = 怎么测、用什么工具(技术)。

Q8. 冒烟测试和冒泡测试区别?

思路: 冒烟=版本提测前的快速验证。冒泡=回归前的定向验证。

Q9. 如何评估测试工作量?

思路: 功能点拆分 → 预估用例数 → 执行时间 × 轮次 + 环境/沟通/回归缓冲。

Q10. 测试左移和右移?

思路: 左移=需求阶段介入提早发现问题。右移=上线后监控+日志+用户反馈。

二、场景设计题(Q11-Q18)

Q11. 如何测试登录功能?

思路: 功能(正常/异常/边界)+ 安全(暴力破解/SQL注入)+ 异常(网络/超时/锁定)。

Q12. 如何测试购物车加购?

思路: 未登录加购、重复加购、数量边界、并发抢购、已下架商品。

Q13. 如何测试支付模块?

思路: 金额(0/负数/超余额)、渠道(微信/支付宝)、异常(取消/网络中断/重复支付)、状态机。

Q14. 如何测试搜索功能?

思路: 关键词(精确/模糊/拼音/空/特殊字符)、排序(时间/价格)、过滤、无结果、性能。

Q15. 如何测试文件上传?

思路: 格式(支持/不支持)、大小(空/超大)、命名(中文/特殊字符/超长)、中断续传、安全扫描。

Q16. 如何测试消息推送?

思路: 类型(系统/用户/定时)、状态(在线/离线/已读未读)、并发推送、兼容性。

Q17. 如何测试定时任务?

思路: 正常执行、跨天/月/年、闰年、执行超时、失败重试、并发执行、暂停恢复。

Q18. 如何测试 API 接口?

思路: 参数校验 + 业务逻辑 + 异常场景(超时/鉴权/限流/500)+ 工具(Postman/Apifox)。

三、自动化测试(Q19-Q26)

Q19. 用过哪些自动化框架?

思路: UI(Selenium/Appium/Cypress)+ 接口(Requests+Pytest)。对比优缺点。

Q20. Selenium 如何定位动态元素?

思路: 相对 XPath / CSS Selector / 显式等待 / 加 data-testid。

Q21. PO 模式是什么?

思路: 页面封装成类,元素和方法在类里。好处:改了只改一处、可读性高。

Q22. UI 自动化不稳定怎么办?

思路: 显式等待 + 用例解耦 + 失败重试 + 截图日志。

Q23. 接口自动化框架如何设计?

思路: 分层:请求层 → 业务层 → 用例层 + 数据驱动 + 报告。

Q24. 数据驱动测试?

思路: 数据从代码中分离(yaml/excel),代码不变加数据就加用例。

Q25. 如何处理验证码?

思路: 最好让开发加万能验证码 / 测试环境关掉。

Q26. CI/CD 怎么集成自动化?

思路: Jenkins/GitHub Actions:提交代码 → 自动部署 → 跑用例 → 报告 → 通知。

四、编程与算法(Q27-Q34)

Q27. 列表和元组区别?

思路: 列表可变,元组不可变。

Q28. 深浅拷贝?

思路: 浅拷贝只拷一层,深拷贝递归全部。

Q29. 写一个计时装饰器?

python
import time
def timer(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        r = func(*args, **kwargs)
        print(f"耗时{time.time()-start:.2f}s")
        return r
    return wrapper

Q30. 多线程和多进程?

思路: 多线程 IO 密集(并发请求),多进程 CPU 密集。

Q31. 回文判断?

python
def is_palindrome(s):
    return s.lower().replace(" ", "") == s.lower().replace(" ", "")[::-1]

Q32. 找出列表出现最多的元素?

python
from collections import Counter
Counter(lst).most_common(1)[0][0]

Q33. 各部门工资最高?

sql
SELECT department, MAX(salary) FROM employees GROUP BY department;

Q34. JSON 断言?

思路: 精确断言 vs JSON Schema 模糊校验。

五、Linux & 数据库(Q35-Q40)

Q35. 常用排查命令?

bash
tail -f、grep、ps aux、top、netstat -tlnp、df -h、free -m

Q36. 从日志提取 500 错误?

bash
grep "500" access.log | awk '{print $1, $7}'

Q37. INNER JOIN vs LEFT JOIN?

思路: INNER 只返回匹配的,LEFT 左表全返回。

Q38. 接口响应慢排查?

思路: 1. 网络 2. SQL 慢查询 3. 锁等待 4. 外部依赖。

Q39. 索引失效场景?

思路: LIKE '%xx'、函数操作、类型隐式转换、不满足最左匹配。

Q40. 统计接口调用次数?

bash
grep "/api/order" app.log | awk '{print $1}' | sort | uniq -c | sort -rn

六、工具与 CI/CD(Q41-Q45)

Q41. Git 冲突解决?

思路: 手动解决 <<<<<<< 标记 → add → commit。避免:频繁 pull、分工明确。

Q42. Jenkins Pipeline?

groovy
pipeline { agent any; stages { stage('Test') { steps { sh 'pytest' } } } }

Q43. Docker 常用命令?

思路: docker ps、logs、exec、docker-compose up。

Q44. 抓包工具?

思路: Charles(PC)、Proxyman(Mac)、Stream(iPhone)、Wireshark(底层)。

Q45. 接口文档工具?

思路: Swagger、YApi、Apifox。

七、用友 BIP 相关(Q46-Q48)

Q46. BIP 是什么?

思路: 用友商业创新平台(云 ERP),微服务+多云,大型企业级 SaaS。

Q47. ERP 测试难点?

思路: 业务流程长、数据状态复杂、并发问题、版本兼容、定制化多。

Q48. 跨系统数据同步怎么测?

思路: 字段映射、增量/全量、数据一致性、网络中断、监控对比。

八、行为面试(Q49-Q50)

Q49. 最挑战的一个 Bug?

思路: STAR 法则:场景 → 任务 → 行动 → 结果。用数字说话。

Q50. 开发和测试意见不一致?

思路: 1. 确认是否理解偏差 2. 拉产品三方对需求 3. 用数据说服 4. 对事不对人。

💬 给清秀留言