Raina测试学习指南Raina测试学习指南
导读
面试题
对话式面试题
AI 测试教程
软件测试教程
🌍 知识星球
学习交流群
  • Raina测试工具集
  • Raina常用网站&工具合集
  • 小红书
  • B站
  • 作者介绍
导读
面试题
对话式面试题
AI 测试教程
软件测试教程
🌍 知识星球
学习交流群
  • Raina测试工具集
  • Raina常用网站&工具合集
  • 小红书
  • B站
  • 作者介绍
  • 基础测试对话

    • 测试基础理论
    • 测试用例设计
    • 功能测试
    • 接口测试
    • 自动化测试
    • 性能测试
    • 安全测试
    • 移动端与兼容性测试
    • 测试管理与工程实践
    • 综合与开放题
    • 数据库与数据测试
    • Linux 与测试环境
    • 微服务与分布式系统
    • Web 前端专项
    • DevOps 与 CI/CD
    • 业务领域专项
    • 测试工具与效率
    • 质量度量与测试策略
    • 软技能与职业发展
    • 进阶综合题
    • 网络与 HTTP 协议(高频)
    • SQL 与数据库基础(高频)
    • 自动化落地细节(高频)
    • 缺陷与质量过程(高频)
    • 经典业务 / 场景设计题(高频)
    • Web / App 实战补充(高频)
    • 接口与联调实战(高频)
    • 性能与稳定性补充(高频)
    • 编程与工具基础(高频)
    • 行为面试与综合高频
  • AI 测试对话

    • AI 测试基础与方法论
    • 大模型(LLM)功能测试
    • Prompt 与对话质量测试
    • Agent / Skill / MCP 测试
    • RAG 与知识库测试
    • 评测体系与 Eval
    • 自动化测试与 CI/CD
    • 性能、成本与稳定性
    • 安全、合规与伦理
    • 测试工程实践与职业发展

测试工程师要不要会写代码?你会到什么程度?

👔 Raina面试官: 测试工程师到底要不要会写代码?你自己会到什么程度?

🙋 候选人:

  • 要会,但目标是能写测试代码、能读业务代码,不是和开发拼算法。
  • 我会 Python 写接口/UI 自动化、数据处理脚本、日志分析;能读 Java/Go 接口逻辑定位边界。Shell 做环境部署和数据清理;SQL 查数验库。
  • 不写生产功能代码,但脚本 + 调试能力决定效率上限——手工能测的,会代码的人能测十倍场景还可持续回归。

👔 Raina面试官: 不会代码能不能做好测试?

🙋 候选人:

  • 能做好探索和业务验收,但自动化、性能、复杂联调会吃瘪。
  • 建议先学 Python + requests + pytest,一个月能跑通接口冒烟,ROI 最高。


Python 里 list、dict、set 常见用法你熟悉吗?举个测试场景。

👔 Raina面试官: Python 的 list、dict、set 你熟吗?结合测试举个用法。

🙋 候选人:

  • 熟,测试里list 存用例集、dict 做映射、set 做去重对比最常见。
  • list:接口返回列表断言条数、排序、首尾元素;参数化用例数据 [{user, pwd, expect}, ...]。dict:JSON 响应转 dict 按 key 断言;headers/cookies 配置;接口字段映射表。set:两接口返回 ID 列表做差集,找漏同步的数据;日志里提取订单号去重统计。
  • 举个实际场景:批量注册后用 set 对比 DB 用户 ID 与 API 列表 ID,差集就是有问题的账号,比双重 for 循环清晰。

👔 Raina面试官: dict 嵌套很深怎么断言?

🙋 候选人:

  • 用jsonpath 或递归 get,别一层层硬写。
  • pytest 里封装 get_nested(data, 'a.b.c'),失败时打印完整路径,维护成本低。


Git 常用命令有哪些?遇到冲突怎么解决?

👔 Raina面试官: Git 日常你常用哪些命令?冲突了怎么处理?

🙋 候选人:

  • 日常就pull、branch、commit、push、merge/rebase 这几类,测试脚本和用例都走 Git 版本管理。
  • 常用:clone/init;checkout -b 开分支;add + commit;pull --rebase 更新;push 提 MR。查历史用 log、diff、blame;回滚用 revert 或 reset(本地)。stash 临时存改动;tag 打版本对应测试报告。
  • 冲突处理:先 pull 再改,冲突文件里搜 <<<<<< 标记,手动保留正确版本,删标记后 add + commit。拿不准就和对方沟通谁改哪块;大冲突用 IDE 三路合并更直观。测完再 push,别 force push 公共分支。

👔 Raina面试官: rebase 和 merge 你更用哪个?

🙋 候选人:

  • 个人分支用rebase 保持线性历史,合 main 用 merge 或 PR squash。
  • 已 push 的公共分支别 rebase,避免别人本地乱掉。


正则表达式在日志过滤、断言里怎么用?

👔 Raina面试官: 正则表达式在日志过滤和断言里你怎么用?

🙋 候选人:

  • 正则适合模式匹配和半结构化提取,日志 grep 和自动化断言都会用到。
  • 日志:grep -E 'ERROR|Exception' 筛异常;orderId=\d{16} 提订单号;tail -f app.log | grep --line-buffered traceId=xxx 跟一条请求全链路。Python re.findall(r'traceId=(\w+)', log) 批量提取。
  • 断言:响应里订单号格式 ^ORD\d{12}$、手机号脱敏 1\d{2}\*\*\*\*\d{4}、时间戳 ISO8601 格式校验。别滥用——固定字符串用 equals,正则只在动态值或格式校验时用。

👔 Raina面试官: 正则写错了怎么调试?

🙋 候选人:

  • 用regex101 或 Python 小脚本先离线验证,再放进用例。
  • 断言失败时打印实际字符串和 pattern,方便 diff;复杂规则拆成多个简单 regex。


JSON / XML 解析出错时,你怎么定位问题?

👔 Raina面试官: JSON 或 XML 解析报错,你怎么定位?

🙋 候选人:

  • 先分是数据本身坏了,还是代码解析方式不对,再逐层缩小范围。
  • JSON:看报错行号/列号,常见是尾逗号、单引号、未转义换行、BOM 头。用 jq 或 jsonlint 在线校验;对比接口 raw body 和文档示例。XML:命名空间缺失、标签未闭合、特殊字符未转义;xmllint 验证。
  • 定位步骤:抓 raw 响应 → 格式化工具校验 → 对比 Content-Type 和 charset。若是第三方返回,保存原始报文提缺陷;若是己方序列化问题,让开发看对象转 JSON 时的 null/日期/枚举处理。

👔 Raina面试官: 接口返回 200 但解析失败呢?

🙋 候选人:

  • 多半是实际 body 不是 JSON——HTML 错误页、空 body、gzip 未解压。
  • 打印 response.text 前 200 字符和 headers,一眼能看出是网关 502 还是编码问题。


编码问题(UTF-8 / GBK)导致乱码,你怎么排查?

👔 Raina面试官: UTF-8 和 GBK 编码乱码,你怎么排查?

🙋 候选人:

  • 乱码本质是读写用了不同编码,按数据流逐段对齐编码声明和实际字节。
  • 排查链:浏览器/客户端显示乱 → 看响应头 Content-Type 是否带 charset=utf-8;抓包看 raw bytes。文件乱 → file 命令或 chardet 检测;Excel CSV 用 GBK 打开 UTF-8 文件必乱。日志乱 → 启动参数 -Dfile.encoding=UTF-8;Linux locale 是否 UTF-8。
  • Python 读写明确指定:open(f, encoding='utf-8'),requests 后 r.encoding = r.apparent_encoding。DB 连接串加 characterEncoding=utf8;前后端统一 UTF-8,老系统 GBK 要在边界做转码并单测。

👔 Raina面试官: 怎么快速判断当前是哪种编码?

🙋 候选人:

  • 看hex 前缀:EF BB BF 是 UTF-8 BOM;乱码形如 锟斤拷 多是 UTF-8 当 GBK 解。
  • 用 iconv 试转:iconv -f gbk -t utf-8 file,转对就说明源编码猜对了。


Shell / Python 脚本你写过哪些提高效率的工具?

👔 Raina面试官: 你写过哪些 Shell 或 Python 小工具提效?

🙋 候选人:

  • 我写过几类重复劳动自动化脚本,都是日常痛点攒出来的。
  • Shell:一键启停测试环境 docker-compose;cron 清理过期测试数据;grep 聚合 ERROR 发钉钉告警;批量 curl 健康检查。Python:Excel 用例转 YAML 供 pytest 读;造数脚本批量注册/充值;日志按 traceId 串联输出;接口回归报告 diff 两次 JSON 响应。
  • 原则:第三次手工操作就脚本化,加 README 和参数说明,放团队 Git 共享;敏感信息走环境变量,别写死密码。

👔 Raina面试官: 脚本谁来维护?

🙋 候选人:

  • 谁用谁 PR,放 tests/tools 目录进 CI 冒烟。
  • 核心脚本加简单单元测试,避免环境升级后 silently break。


如何用 Charles / Fiddler 做弱网模拟和接口改包?

👔 Raina面试官: Charles 或 Fiddler 怎么做弱网模拟和改包?

🙋 候选人:

  • 弱网用Throttle 限速,改包用 Breakpoints / Map Local / Rewrite,都在代理工具里完成。
  • 弱网:Charles → Proxy → Throttle Settings,设 3G/高延迟/丢包;Fiddler → Rules → Performance → Simulate Modem。验 loading、超时重试、重复提交。改包:Breakpoints 断住请求/响应手动改 JSON;Map Local 用本地文件替换响应;Rewrite 批量改 host、header、body 字段。
  • 场景举例:把支付接口响应改成失败码,验前端提示和订单状态,不用等后端配合造异常。仅限测试包和测试环境,HTTPS 需装并信任根证书。

👔 Raina面试官: 移动端弱网怎么配?

🙋 候选人:

  • 手机 WiFi 代理指到 PC,Charles 开 SSL Proxying 抓 HTTPS。
  • App 有 SSL Pinning 要 debug 包关闭;改包后记得关 Breakpoint,否则所有请求都卡住。


Postman 里环境变量、前置脚本、断言你会怎么用?

👔 Raina面试官: Postman 的环境变量、前置脚本、断言你怎么配合用?

🙋 候选人:

  • 我的套路是环境管配置、脚本管动态值、Tests 管验收,一条请求自包含。
  • 环境变量:、 分 dev/staging 切换;Collection 变量放公共 header。前置脚本:登录接口把 token 写入 pm.environment.set;时间戳、随机手机号动态生成;签名字段按规则计算。断言:pm.test 验 status、响应时间;pm.expect(json).to.have.property;JSON schema 或嵌套字段校验。
  • 进阶:Collection 级 pre-request 统一加 Authorization,Tests 里 pm.collectionVariables 传递 orderId 给下游请求,串业务流程。

👔 Raina面试官: 和 Newman CI 怎么衔接?

🙋 候选人:

  • Newman 跑 collection,--environment 注入 CI secret,报告接 Allure 或 HTML Extra。
  • token 过期问题在 CI 里先调登录请求写 env file,再跑业务 collection。


你怎么搭建一套本地可运行的接口自动化 Demo?

👔 Raina面试官: 如果要搭一套本地能跑的接口自动化 Demo,你怎么做?

🙋 候选人:

  • 我会用pytest + requests + 公开 Mock API,半小时能 clone 就跑通,展示工程化结构。
  • 目录:tests/ 放用例;common/client.py 封装 HTTP;config/env.yaml 管 base_url;conftest.py 提供 fixture(session、token)。选 jsonplaceholder.typicode.com 或 httpbin 做被测服务,零依赖。写 3~5 条 CRUD 用例 + 参数化边界 + Allure 报告。
  • 加分项:README 一键 pip install && pytest;Makefile 或 run.sh;GitHub Actions 跑 CI badge。Demo 重点是结构清晰——配置分离、断言封装、日志可读,而不是 case 数量。

👔 Raina面试官: 没有真实项目接口怎么办?

🙋 候选人:

  • 用WireMock 或 Flask 写 stub 服务,自己定义接口契约。
  • docker-compose 起 mock + 测试容器,面试官本地 docker compose up && pytest 即可复现。
最近更新: 2026/8/21 08:07
Contributors: weixin_55062269
Prev
网络与 HTTP 协议(高频)
Next
自动化落地细节(高频)