HTTP 和 HTTPS 有什么区别?测试时你会关注哪些点?
👔 Raina面试官: HTTP 和 HTTPS 有啥区别?测试时你会盯哪些点?
🙋 候选人:
- HTTPS 在 HTTP 之上加了 TLS 加密和证书校验,防窃听和篡改。
- 协议层:HTTP 明文 80 端口,HTTPS 加密 443。证书:域名匹配、有效期、链是否完整、是否被浏览器信任。
- 测试关注:全站是否强制 HTTPS、HTTP 是否 301 跳 HTTPS、混合内容是否被拦、证书过期告警、敏感字段是否仍出现在 URL 或日志里。
👔 Raina面试官: 测试环境用自签证书,移动端怎么测?
🙋 候选人:
- 装测试 CA 根证书到设备信任库,或用 Charles/Fiddler 代理解密。
- 验 App 是否开了 SSL Pinning——有的话要测降级提示,不能简单忽略证书错误。
HTTP 请求方法除了 GET、POST,还有哪些?各自用在什么场景?
👔 Raina面试官: 除了 GET、POST,你还知道哪些 HTTP 方法?各自干啥用?
🙋 候选人:
- 常用还有 PUT、PATCH、DELETE、HEAD、OPTIONS,语义各不同。
- PUT 全量更新资源,PATCH 部分更新;DELETE 删资源;HEAD 只要响应头不拿 body,测缓存和存在性;OPTIONS 查支持的方法和 CORS 预检。
- 测试要验方法语义对不对——该 DELETE 的用 GET 是否被拦,PUT/PATCH 混用会不会丢字段,OPTIONS 返回的 Allow 头是否和实际一致。
👔 Raina面试官: TRACE 和 CONNECT 需要测吗?
🙋 候选人:
- 生产一般禁用 TRACE防 XST 攻击;CONNECT 多用于代理隧道。
- 安全测试扫一遍是否意外开放;日常功能测试很少直接用到。
Cookie、Session、Token 三者有什么区别?怎么测登录态失效?
👔 Raina面试官: Cookie、Session、Token 到底啥区别?登录态失效你怎么测?
🙋 候选人:
- Cookie 是浏览器存的键值对;Session 是服务端存的会话状态,常用 SessionID 放 Cookie 关联;Token(如 JWT)是自包含凭证,通常放 Header。
- 区别:Session 状态在服务端,Token 状态在客户端解析验证;Cookie 只是载体,也可以存 Token。
- 测失效:等 TTL 过期、改系统时间、服务端踢下线、并发登录挤掉旧会话、清 Cookie/改 Token 后访问受保护接口,期望统一 401 且前端跳登录。
👔 Raina面试官: Remember Me 怎么测?
🙋 候选人:
- 验长周期 Cookie 的 HttpOnly/Secure,过期后是否真正失效。
- 改密码或主动登出后,旧 Remember Me 必须作废,不能还能进系统。
什么是幂等?哪些 HTTP 方法天然幂等?
👔 Raina面试官: 幂等是啥意思?哪些 HTTP 方法天然幂等?
🙋 候选人:
- 幂等就是同一请求执行多次,效果和执行一次相同,不会重复产生副作用。
- 天然幂等:GET、HEAD、OPTIONS、PUT、DELETE。POST 通常不幂等——重复提交可能创建多条记录。
- 测试要验:重复 DELETE/PUT 第二次是否仍合理(404 或 204);POST 重复提交是否有防重(幂等键、前端 disable、后端去重)。
👔 Raina面试官: PATCH 算幂等吗?
🙋 候选人:
- 看实现——绝对赋值幂等,增量操作不一定,比如 PATCH balance+100 连调两次就加了 200。
- 测重复 PATCH 和并发 PATCH,确认业务语义是否符合幂等预期。
状态码 301、302、304、400、401、403、404、500、502、504 分别代表什么?
👔 Raina面试官: 301、302、304、400、401、403、404、500、502、504 分别啥意思?
🙋 候选人:
- 记法:3xx 重定向/缓存,4xx 客户端错,5xx 服务端错。
- 301 永久跳转;302 临时跳转;304 资源未变用缓存。400 请求参数错;401 未认证;403 已认证无权限;404 资源不存在。500 服务端内部错;502 网关收到无效上游响应;504 网关等上游超时。
- 测试不只记含义——要断言错误场景码对不对,302 跳转 Location 是否正确,304 是否带 ETag/If-None-Match,502/504 前端是否有友好降级页。
👔 Raina面试官: 301 和 302 测试差异在哪?
🙋 候选人:
- 301 浏览器和 SEO 会长期记住新地址,302 临时跳回原 URL 仍有效。
- 测域名迁移、活动页用 302,永久改链接用 301,验缓存和 bookmark 行为是否符合预期。
请求头里 Content-Type、Authorization、Cookie 各有什么作用?
👔 Raina面试官: Content-Type、Authorization、Cookie 这三个请求头各干啥的?
🙋 候选人:
- Content-Type 告诉服务端请求 body 的格式,如 application/json、multipart/form-data。Authorization 带认证凭证,常见 Bearer token 或 Basic 编码。Cookie 带浏览器存的会话标识或偏好。
- 测试要验:Content-Type 错或缺失时服务端是否 415/400;Authorization 缺/错/过期是否 401;Cookie 的 domain/path/SameSite 是否导致跨子域丢登录。
- 还要测大小写、多余空格、重复 header 等边界——网关有时只认特定写法。
👔 Raina面试官: multipart 上传怎么测 Content-Type?
🙋 候选人:
- boundary 必须正确,手动改 boundary 或缺 filename 看服务端报错。
- 超大文件、空文件、MIME 伪装(exe 改 png)都要覆盖。
什么是跨域?OPTIONS 预检请求在测试里怎么验证?
👔 Raina面试官: 跨域是啥?OPTIONS 预检请求测试里怎么验?
🙋 候选人:
- 跨域是浏览器同源策略限制——协议、域名、端口任一不同,前端 JS 调 API 会被 CORS 规则约束。
- 带自定义头或非简单方法的跨域请求,浏览器先发 OPTIONS 预检。测:OPTIONS 返回 Access-Control-Allow-Origin/Methods/Headers 是否匹配实际请求;白名单 origin 通过、非法 origin 被拒。
- 用 Playwright 从 A 域页面调 B 域 API,DevTools 看是否先发 OPTIONS 再发真实请求;Postman 不受 CORS 限制,不能替代浏览器验证。
👔 Raina面试官: 带 Cookie 的跨域怎么测?
🙋 候选人:
- 前端 fetch 要设 credentials: include,服务端回**Allow-Credentials: true 且 Origin 不能是 ***。
- 测登录态跨子域共享、未授权子域是否拿不到 Cookie。
TCP 三次握手、四次挥手你了解吗?和测试有什么关系?
👔 Raina面试官: TCP 三次握手四次挥手了解吗?跟测试有啥关系?
🙋 候选人:
- 三次握手:SYN → SYN+ACK → ACK,建立连接;四次挥手:FIN/ACK 来回,优雅关闭连接。
- 和测试的关系:连接失败、超时、半开连接常出在 TCP 层——端口不通、防火墙丢 SYN、负载过高 backlog 满。
- 排查时用 telnet/nc 测端口、Wireshark 看 SYN 有没有回 SYN-ACK;接口慢要区分是 TCP 建连慢还是 HTTP 处理慢(看 time_connect vs time_starttransfer)。
👔 Raina面试官: TIME_WAIT 太多会影响测试吗?
🙋 候选人:
- 压测后大量 TIME_WAIT 可能耗尽端口导致新连接失败,表现为偶发 502/连接超时。
- 功能测试偶现连不上时,让运维看 ss -s 和内核参数,别只怪应用代码。
HTTP/1.1 和 HTTP/2 的主要差异是什么?对测试有影响吗?
👔 Raina面试官: HTTP/1.1 和 HTTP/2 主要差在哪?对测试有影响吗?
🙋 候选人:
- HTTP/2 核心升级:多路复用、头部压缩 HPACK、二进制分帧,单 TCP 连接并行传多个请求,不再靠多个 TCP 或域名分片。
- 对测试:功能行为应一致,但抓包工具要支持 HTTP/2 解码(Charles、Wireshark);有些老代理只懂 HTTP/1 会导致环境差异。
- 性能测试指标会变——连接数下降、首屏可能改善;要确认服务端和 CDN 是否都启了 HTTP/2,避免测试环境和生产协议不一致。
👔 Raina面试官: HTTP/2 下还要测队头阻塞吗?
🙋 候选人:
- 应用层队头阻塞缓解了,TCP 层丢包仍可能拖慢同连接其他流。
- 弱网场景用 Charles throttle 对比 HTTP/1.1 和 HTTP/2 的加载时序,看业务是否受益。
抓包时如何判断是前端问题还是后端问题?你会看哪些字段?
👔 Raina面试官: 抓包的时候,你怎么判断是前端还是后端的问题?会看哪些字段?
🙋 候选人:
- 核心思路:对比请求发出和响应回来是否一致,再对比响应和页面展示是否一致。
- 必看:Request URL/Method/Body 是否和预期一致;Status Code、Response Body 字段和类型;Response Time 分段(DNS/TCP/TLS/TTFB)。
- 后端问题:参数对但 5xx、body 缺字段或业务码错。前端问题:响应正确但页面错——查 Console 报错、JS 解析/渲染逻辑;或请求根本没发出去(参数组装错、拦截器改写了 header)。
👔 Raina面试官: 响应被 CDN 缓存了怎么区分?
🙋 候选人:
- 看Age、X-Cache、CF-Cache-Status 等头,对比 bypass 缓存直连源站。
- 源站新数据 CDN 旧缓存,是缓存配置问题不是前后端逻辑 bug。
如何为一个登录功能设计测试用例?你会覆盖哪些维度?
👔 Raina面试官: 登录功能很基础但容易问细,你会从哪些维度设计用例?
🙋 候选人:
- 我会拆功能、安全、兼容、体验四块。
- 功能:正确账号密码、错误密码、不存在用户、空字段、记住登录、登出后再访问。安全:暴力破解锁定、密码明文传输、Session 过期、多端互踢、CSRF。兼容:浏览器、移动端、第三方登录回调。体验:错误提示是否友好且不泄露账号是否存在。
- 还会加边界:密码长度、特殊字符、SQL 注入字符串、复制粘贴带空格等。
👔 Raina面试官: 密码错误提示说用户名或密码错误,还是分开提示?
🙋 候选人:
- 安全上应统一模糊提示,防止枚举有效用户名。测试要验证两种错误都是同一文案,且响应时间无明显差异避免 timing attack。
- 如果产品坚持分开提示,测试要记录为已知安全风险,让业务签字接受。
搜索框功能你会怎么设计用例?除了功能还考虑什么?
👔 Raina面试官: 一个搜索框,除了能搜出结果,你还会测什么?
🙋 候选人:
- 功能上:关键词匹配、空搜索、无结果、特殊字符、超长输入、分页排序。
- 非功能:响应时间、防抖/节流、高并发下稳定性、敏感词过滤、SQL/XSS 注入。体验:联想推荐、历史记录、清空、highlight 关键词。数据:索引延迟导致新数据搜不到、权限过滤(只能搜到有权限的内容)。
- 还要测边界:emoji、多语言、全角半角、前后空格 trim 策略。
👔 Raina面试官: 搜索和筛选组合时怎么避免用例爆炸?
🙋 候选人:
- 用正交或 pairwise 减组合,优先测高频筛选 + 典型关键词,P0 保证主路径,P2 再扩全组合。
- 另外区分前端筛选和后端搜索——分别验证参数传递是否正确,避免前端筛了但请求没带参数。
