测试面试核心知识点速记

测试面试核心知识点

一、测试基础

1. 计算机基础

  • 硬件:CPU侧重调度,四级缓存,低延迟;GPU侧重矩阵运算,缓存简单,高吞吐。
  • 存储结构:顺序(数组,连续空间)、链接(链表,引用关联)、索引(索引表,稠密/稀疏)、散列(关键字算地址)。
  • 软件架构:C/S两层,需安装,扩展性差;B/S三层(浏览器+Web+DB),免安装,易维护,服务器负载高。
  • 网络基础
    • DNS:UDP53端口,域名-IP映射。
    • IP查看:Windowsipconfig,Linux/macifconfig
    • LAN高带宽、小范围;WAN跨地域,Internet为最大WAN。
    • 子网掩码:与IP按位与区分网络/主机地址,同结果即同局域网。
    • MAC(二层,硬件分配,同链路通信)vs IP(三层,拓扑分配,跨网络通信)。
    • 子网划分:192.168.5.0/24,掩码255.255.255.248,32子网,每子网6可用IP。

2. 测试理论

  • 软件质量:功能、性能、兼容、易用、可靠、安全、可维护、可移植;测试目的为发现缺陷,保障质量。
  • 测试流程:需求评审→测试计划→用例设计/评审→执行→提缺陷→回归→测试报告。STLC:需求分析→计划→分析→设计→实施→执行→总结。
  • 测试模型
    • V模型:需求→编码→单元→集成→系统→验收,测试后置,忽视前期验证。
    • W模型:开发测试并行;X模型:强调探索性;H模型:测试为独立流程,贯穿全周期。
  • 测试分类
    • 阶段:单元(最小模块,详设依据)、集成(模块交互)、系统(真实环境全量验证)。
    • 静态(不运行,查文档/代码)vs动态(运行,比对结果)。
    • Alpha(开发环境,内部受控)vs Beta(用户环境,验收测试)。
    • 黑盒(不关注内部,验功能)vs白盒(基于代码逻辑)vs灰盒(结合二者)。
    • 冒烟(验核心功能,通过才全量测);回归(改代码后重测,防引入新缺陷)。
  • 测试策略
    • 集成:自顶向下(早验核心,无驱动,底层滞后)、自底向上(早验底层,无桩模块,高层错误发现晚)、三明治(折中,中间层覆盖不足)、大爆炸(一次性集成,定位难,适合小项目)。
    • 单元:孤立测试(覆盖率最高)。
  • 测试用例:要素含目标、环境、等级、输入、步骤、预期结果;方法:白盒(逻辑/循环/基本路径覆盖)、黑盒(等价类、边界值、错误猜测、因果图、场景法);正交表(最少用例覆盖最多操作,适合系统测试)。
  • 缺陷管理
    • 报告要素:版本、环境、编号、标题、等级、模块、复现步骤、预期/实际结果、附件。
    • 生命周期:新建→打开→修复→回归→关闭;非缺陷驳回,修复失败重开。
    • 等级:致命(崩溃、丢数据)、严重(主功能失效)、一般(界面/格式错误)、建议(文案/体验优化)。
    • 群集效应:80%缺陷集中在20%核心模块;初期缺陷数上升,中后期下降。
  • 测试报告:含引言、测试概况、测试分析(用例执行率、缺陷修复率、覆盖率)、总结(质量评定、遗留问题、结论、建议)。

3. 数据库

  • 关系型(MySQL/PG):支持SQL、事务,易维护,读写性能低,表结构固定,适合业务数据;非关系型(MongoDB/Redis):KV存储,扩展性强,读写快,不支持SQL,适合日志、缓存。
  • 核心概念:主键(唯一非空)、超键(唯一标识元组)、候选键(最小超键)、外键(关联他表主键)。
  • 事务ACID:原子性(全执行或全回滚)、一致性(前后状态合法)、隔离性(并发互不干扰)、持久性(提交后永久生效)。
  • MySQLbegin/rollback/commit控制事务,set autocommit=0关自动提交。
  • 索引:为where/连接字段建短索引,避免过度(降写性能)。
  • Redis:内存KV,10W QPS,单线程安全,支持多种数据结构,可做缓存、分布式锁、消息队列,支持持久化。
  • SQLdelete(删数据,可回滚,触发触发器);truncate(删全表,不可回滚,无触发器,快);drop(删表结构+数据,不可回滚)。

4. 操作系统(Linux)

  • 文件查找:find -name/-perm/-user
  • 系统操作:ifconfig(IP)、top(资源)、hostname(主机名)、ps(进程)、grep(过滤)、kill -9 PID(杀进程)、pwd(当前路径)、exit(退出)
  • 文件操作:cd(切换目录)、ls(列目录)、vi/vim(编辑)、mkdir(创目录)、cat/more/less(查文件)、tar -cvf(打包)、tar -xvf(解包)
  • 日志查看:tail -f xx.log(实时)、tail -100 xx.log(最新100行)
  • 大文件查找:find . -type f -size +10M
  • 权限:rwxrw-r--(所有者读写执行,组读写,其他读);755(所有者读写执行,组和其他读执行)。
  • Windows:PATH为命令检索路径;ps -ef | grep 进程名查PID,kill -9 PID杀进程。

5. 网络协议

  • OSI七层:物理层(比特流)、数据链路层(帧,MAC)、网络层(路由,IP)、传输层(端到端,TCP/UDP)、会话层(会话管理)、表示层(格式转换、加密)、应用层(用户接口,HTTP/FTP)。
  • TCP/IP四层:数据链路层、网络层、传输层、应用层。
  • TCP vs UDP:TCP面向连接、可靠、保序、点对点、首部20字节,适合文件传输;UDP无连接、不可靠、不保序、支持多播、首部8字节,适合音视频传输。
  • TCP机制:三次握手(建连,确认双方收发能力);四次挥手(断连)。
  • HTTP
    • 方法:GET(获资源,参数URL,限2000字符)、POST(传实体,参数请求体,无限制)、HEAD(获报文头)、PUT(传文件)、DELETE(删文件)、OPTIONS(查支持方法)。
    • 无状态:每次请求独立,通过Cookie/Session解决。
    • 状态码:2xx成功(200 OK)、3xx重定向(304 Not Modified)、4xx客户端错(403禁止、404未找到)、5xx服务端错(500内部错误、503服务不可用)。
  • Cookie vs Session:Cookie客户端存储,会话/持久;Session服务端存储,ID通过Cookie传递;重要信息存Session,普通存Cookie。
  • HTTPS:HTTP+SSL/TLS,端口443,需CA证书,防窃听篡改,握手耗资源,搜索加权。
  • URL输入流程:DNS解析(浏览器→系统→hosts→路由器→根域名服务器)→TCP三次握手→发HTTP请求→服务器返回HTML→浏览器渲染。
  • 同步vs异步:同步等返回再执行(下单扣库存);异步不等返回直接执行(下单发通知)。

6. 编程语言(Python)

  • 范式:结构化(面向过程,自顶向下,难适配变更);面向对象(封装、继承、多态,复用性高)。
  • 参数传递:值传递(传拷贝,不改原值);地址传递(传地址,可改原值)。
  • 数据类型:不可变(Number、String、Tuple);可变(List、Dict、Set)。
  • 列表vs元组:列表动态可变,性能略低;元组不可变,轻量高效。
  • 内存管理:引用计数(引用为0回收)、标记清除、分代回收;<256字节用私有内存池,大对象用系统malloc。
  • 引用vs指针:引用是别名,初始化后不可变,非空,类型安全;指针是实体,可变,可空,有const。
  • 命名规范_xx(内部)、__xx(私有,名称修饰)、__xx__(魔术方法/系统属性)。
  • 算法:冒泡排序(相邻比较交换,有序可提前终止);二分查找(有序表,O(logN));列表去重保序(list(dict.fromkeys(lst))或遍历去重)。
  • 加密:对称(DES/AES,同钥)、非对称(RSA,公私钥对)、Hash(MD5/SHA,单向不可逆)。
  • 设计模式:创建型(工厂、单例)、结构型(适配器、装饰器)、行为型(策略、观察者);开闭原则(扩展开放,修改关闭);单例(全局唯一,适合日志、配置、线程池);工厂(封装创建逻辑,解耦调用与实现)。

7. 组织管理

  • 分工:按流程(交叉)、按模块(专人)、按类型(单元/接口/功能拆分),大团队结合类型+模块。
  • 进度:紧急需求:需求+用例3天→功能+回归5天(含1天缓冲)→报告1天,同步风险,必要时BUGBash。
  • 架构:项目型(归项目组,沟通高效);职能型(归测试部,资源复用高);综合型(功能/自动化驻项目,性能/安全按需委派,主流)。
  • 团队建设:招聘适配者、定期培训、团队活动、台账(站立会/日报/周报)、激励优秀成员;分享会促知识传递,版本间隙开展。
  • 日常:每日站立会同步进展/计划/问题;周报/年报复盘;自我提升(业务学习+技术栈拓展,如Jmeter性能测试)。

8. 工具管理

  • 版本控制:SVN集中式,权限严,操作简单;Git分布式,本地操作灵活,适合敏捷。
  • 用例管理:TestLink、禅道、QC、Wiki,支持用例库、版本、执行跟踪、报表。
  • 缺陷管理:JIRA、禅道、Bugzilla;流程:新建→分配→修复→回归→关闭,非缺陷驳回,无法修复标为暂不处理。
  • 抓包:Fiddler、Charles、Wireshark;Fiddler应用层代理,拦HTTP(S),定前后端问题。
  • 工具定位:辅助提效,核心仍为测试思路与问题定位能力,避免过度依赖。

二、功能测试

1. Web测试

  • 兼容性:重点测Chrome、IE、Edge、Firefox、Safari及Windows/Mac;区别于配置测试(测硬件适配)。
  • 登录测试:功能(正常/空参/特殊字符/边界/掩码/空格剔除)、性能(加载/响应耗时)、安全(登录限次、防SQL注入/XSS、密码加密、Cookie HttpOnly、多端互斥)、兼容(多浏览器/终端)、UI(布局/样式/响应式)、易用性(快捷键/复制粘贴)、接口(逻辑验证)、异常(高负载/弱网/断电)。
  • 浏览器缓存:memory cache(内存,临时)、disk cache(硬盘,依HTTP头判时效);不可缓存场景:Cache-Control: no-cache/max-age=0Pragma: no-cache、动态请求、POST请求、无缓存标识响应。

2. App测试

  • 基础:Activity(交互界面,状态:Active/Running、Paused、Stopped、Killed);Android四大组件:Activity(界面)、BroadcastReceiver(广播)、ContentProvider(跨应用共享)、Service(后台任务)。
  • 稳定性:Crash(内存泄漏/逻辑错误/兼容/网络异常,稳定复现则提单,偶现查日志);无响应(内存不足/死锁/空指针/资源缺失/缓存过多/代码异常)。
  • 兼容性:覆盖厂商、系统版本、网络制式、分辨率;Android(虚拟机、实时渲染、应用可后台常驻);iOS(沙盒、普通渲染优先级、仅系统服务后台)。
  • 升级:多渠道下载、网络切换、中断(暂停/关机/低电量)、存储不足、权限变更、新旧覆盖/卸载重装、强制/非强制更新、旧数据迁移。
  • 流量/电量:横向(硬件单独耗电vs总耗电差值)、纵向(同机型运行vs不运行差值),工具辅助。
  • 交叉测试:来电/短信/音视频/低电量干扰;补充:后退、通知栏、UI适配、触屏、安装卸载、升级、弱网切换、横屏。
  • 冷启动(后台无进程,新建进程,初始化Application+MainActivity)vs热启动(后台有进程,仅初始化MainActivity)。

3. 其他

  • 小程序vs H5:小程序(微信内、开发成本低、系统权限多、原生渲染流畅);H5(浏览器、需多端兼容、权限受限、依赖优化)。
  • Windows程序:安装/卸载/重复安装、杀毒拦截、分辨率/缩放适配、多系统兼容、磁盘不足、端口占用。
  • Web vs App测试:同(流程一致,均需功能/API/性能/安全测试);异(App需测安装卸载/升级、设备兼容、流量/电量、交叉/弱网,Web兼容聚焦浏览器、性能关注响应时间)。
  • 朋友圈点赞:点赞/取消逻辑、可见范围、状态同步、排序、多端一致、消息通知、隐私。

三、自动化测试

1. API测试

  • 优势:比UI稳定、执行快、语言无关、贴近场景、易定位、覆盖率高。
  • 流程:分析接口文档→测试计划→用例设计→执行→报告。
  • 用例设计:前置(登录态、默认参数)、业务(正逆向、参数关联、必填校验)、异常(空参/少参/错参/类型不符/超范围)、安全(Header校验、敏感信息脱敏)。
  • 依赖处理:Mock模拟第三方返回;参数传递(正则/JSON提取,存变量供后续调用);登录态(登录后存Session/Cookie,后续携带);垃圾数据(反向接口删除或直连DB清理);HTTPS验证(Requests库verify=False)。
  • Request Header:User-Agent(客户端)、Accept(接收类型)、Cookie(会话)、Referer(来源)、Content-Type(请求体格式)。
  • POST Content-Typeapplication/x-www-form-urlencoded(表单)、application/json(JSON)、multipart/form-data(文件上传)、text/xml(XML)。
  • 常见BUG:接口未实现、边界处理错、参数校验缺失、明文传敏感信息、并发异常、响应超时。
  • 工具:Postman(易上手、协作、集成CI);SoapUI(支持REST/SOAP,免费版可二次开发,付费版支持数据驱动/异步)。

2. Web自动化(Selenium)

  • 适用:需求稳定、迭代长、结构固定项目;优缺点:省人力、执行快、支持CI;成本高、不适需求频繁变更、难发现新BUG。
  • 流程:手工测试完成→搭环境→转化用例→脚本开发→报告→优化→集成CI。
  • 核心指标:用例覆盖率、时间成本、ROI、缺陷发现数;覆盖率难100%(ROI低、部分场景难自动化、低频用例无需覆盖)。
  • 原理:driver作为服务端,脚本按WebDriver协议发请求,driver解析后在浏览器执行,返回结果。
  • 元素定位:八大方式(Id、Name、Class、Tag、Link、PartialLink、CSS、XPath);find_element(首个匹配)、find_elements(所有匹配列表);动态元素(父子/兄弟关系定位、遍历);子找父(XPath..parent::*轴);定位失败原因(表达式错、无等待、iframe遮挡、布局变化);隐藏元素(type="hidden"/display:none,JS移除属性后定位)。
  • 元素操作is_displayed()判显示;try...except NoSuchElementException判存在。
  • 脚本开发:规范(语言规范+项目组补充,如定位加注释、减嵌套);driver.close()(关当前页)、driver.quit()(关所有页+结束进程);稳定性提升(显式/隐式等待、异常捕获)。
  • 时间等待:强制(sleep,固定时长);隐式(implicitly_wait,持续查找元素,等页面全加载);显式(WebDriverWait,自定义条件,满足即执行,最多等指定时长)。
  • 测试框架self(实例方法首参,指代实例)、cls(类方法首参,指代类)、super(继承父类属性方法);unittest:setUp()(每个测试方法前执行,失败则测试失败)、tearDown()(每个测试方法后执行,无论成败)。
  • 测试模型:PO(页面对象,页面对应类,封装元素和操作,分离定位与逻辑);数据驱动(测试数据从外部文件读取,同脚本传不同数据);混合模型为主。
  • Selenium Grid:分布式测试,多环境并行,缩时间提效率;Hub为中心节点,管理Node节点。

3. App自动化(Appium)

  • 特点:支持iOS/Android/FirefoxOS,基于WebDriver协议。
  • 工具:Inspector(录制回放,Windows不支持,用UIAutomator Viewer替代);ADB检测不到设备(装驱动、开USB调试、重插授权)。
  • 问题处理:定位/等待不足致脚本报错;需求频繁变更时暂缓开发,待版本稳定推进。
  • 脚本有效性:封装定位、异常、业务流程;保数据环境稳定;动态提取测试数据。
  • 日志抓取:iOS(iTunes Connect、Xcode、第三方SDK);Android(第三方SDK、加固工具、代码捕获异常存日志)。

4. Web vs App自动化

  • :用例设计方法、测试原理、模型、执行策略一致。
  • :App需测中断、安装卸载、多设备适配;Web用Selenium,App用Appium;Web兼容聚焦浏览器,App聚焦厂商/系统版本。

四、性能测试

  • 流程:需求分析→测试准备(计划/用例/环境/数据)→脚本开发→场景执行→分析→调优→报告。
  • 核心概念
    • 负载测试:超负荷验承载能力;压力测试:低资源验运行情况;容量测试:最大并发用户数;极限测试:过量用户连续操作。
    • 响应时间:请求到响应耗时;并发用户数:同时处理请求数;吞吐量:单位时间处理请求数;TPS:每秒事务数;HPS:每秒HTTP请求数。
  • 介入时机:前期(功能完成后,单功能验证);后期(系统集成后,整体验证)。
  • 需求调研:用户关注响应速度;开发关注响应+DB交互;管理员关注体验+调优;无明确需求时(沟通客户、分析日志、对标竞品、经验推导);敏捷项目(每迭代定目标,建自动化体系,结合业务场景评估,如报名系统仅报名前测试)。
  • 工具:LoadRunner(VUGen脚本录制、Controller场景调度、Analysis结果分析);Jmeter监听器(聚合报告、结果树、表格/图形结果、BeanShell监听器)。
  • 脚本设计:关联(提取动态参数如SessionID,供后续请求);思考时间(模拟用户操作间隔,贴近真实);参数化(固定数据换动态参数,适配环境);300客户端vs单客户端300用户(单客户端占资源/带宽,受IP连接数限;多客户端需调度中心,配网络权限);Jmeter保持Session(存登录Session,后续请求读取);分布式核心(心跳检测、高可用、容错、负载均衡)。
  • 性能调优
    • 网络瓶颈:结合Network Delay Time,综合软硬件/网络分析。
    • 内存泄漏:内存持续增长不释放,致宕机/响应慢。
    • 阈值:2/5/8原则(2秒内快,2-5秒可接受,5-8秒慢,超8秒不可接受,上传下载可放宽)。
    • TPS上不去:带宽不足、连接池过小、GC频繁、DB无索引/未读写分离、通信低效、硬件不足、压力机超限、业务逻辑复杂、缓存命中率低。
    • 页面卡顿:后端接口慢、前端JS耗时、网络延迟。
  • 测试报告:项目背景、工具、方案、数据(并发、TPS、响应时间、成功率、资源使用率)、结论(达标情况、问题、优化建议)。

五、持续集成(CI)

  • 概念:持续集成(频繁合代码,自动化测试通过方可入主干);持续交付(代码随时可评审,就绪生产);持续部署(自动部署生产,随时发布)。
  • 价值:提协作效率、改善覆盖率、自动化构建部署、缩反馈周期、降人工成本。
  • Jenkins:开源CI工具,支持任务调度、自动化构建测试、结果可视化;主节点(master)管任务,从节点(slaves)执任务,多节点适配多环境;备份JENKINS_HOME(含任务/节点配置、构建历史)。

六、其他问题

1. 安全测试

  • 维度:用户认证、加密、入侵检测/漏洞扫描、数据备份恢复、防病毒。
  • 常见攻击
    • SQL注入:表单/URL插恶意SQL,窃数据;防范:参数化查询、输入校验。
    • XSS:注入恶意脚本,控用户浏览器;防范:输入输出转义、CSP策略。
    • CSRF:盗用身份发恶意请求;防范:Token验证、Referer校验、SameSite Cookie。
    • 文件上传:上传可执行脚本拿服务器权限;防范:文件类型白名单、重命名、上传目录不可执行、限大小、独立域名。
    • DDos:伪造请求占资源,致服务不可用;防范:限SYN半连接数、缩SYN超时、关不必要服务。
  • 渗透测试:模拟黑客攻击,主动发现漏洞。
  • 漏洞成因:设计缺陷、弱密码、软件复杂、人为失误、管理不规范。

2. 问题定位

  • 前后端BUG:前端发正确请求但渲染异常→前端;后端收请求后返回错/超时→后端。
  • Web空白排查:确认网络/URL→开发者工具看状态码/响应数据→后端查日志,前端查JS异常/元素状态。
  • Windows程序慢:查病毒、核对软硬件配置、查高负载服务、查网络/服务器连接、性能监视器看CPU/内存。

3. 沟通协调

  • 开发不认BUG:对照需求文档,分歧则与产品对齐,统一标准。
  • 线上BUG:测试环境复现→系统BUG提单,评优先级与发布计划;环境问题联合运维/开发排查。
  • 用户投诉:记录细节,功能缺陷推动修复,体验问题反馈产品优化。
  • 开发频犯低级错误:规范流程(提测前自测、冒烟准入)、加强测试覆盖、推常见缺陷清单促自检,必要时配套奖惩。
  • 评审:参与方(用户、开发、测试、需求);目的(发现缺陷、优化性能安全);阶段评审(关键节点可行性);同行评审(具体模块缺陷排查)。

4. 测试认知

  • 测试定位:兼具QC(质量控制,逐点验特性)和QA(质量保证,监督全流程风险),是质量守门员、流程推动者。
  • 时间不足:加班、申请支援、协商延期、优先测核心高优先级功能。
  • 八二原则:80%缺陷集中在20%模块;80%缺陷手工发现,20%自动化发现;剩余5%需上线后长期使用暴露。
  • 零缺陷不可能:完全测试资源不足、输入输出组合多、实现路径多样、需求无绝对标准、概率性缺陷难复现。

七、面试指南

1. 各公司考察重点

  • 腾讯:4轮(基础/代码→leader专业/项目→总监潜力/素养→HR软素质);首轮重点:测试基础(用例覆盖率≥80%)、专项(性能/安全工具)、延伸(Linux/DB/编程/环境搭建),现场写算法。
  • 京东:5维度(Linux操作、SQL复杂查询、编程(快排/深浅拷贝/GC,不熟悉考思想)、测试(流程/V模型/用例设计)、逻辑(如10鼠测1000瓶毒酒))。
  • 外派:项目熟悉度、问题解决/BUG挖掘/争议处理能力、技能(Linux/SQL)、个人规划/离职原因,留提问环节。
  • 创业公司:基本素养(沟通/主动/学习力)、技能/项目深挖(用例设计、测试改进、测试金字塔/左移/右移)、岗位匹配(敏捷经验、MySQL/Linux、自动化/性能实践、职业规划),30-40分钟定适配。
  • 服务型公司:业务逻辑占40%;员工面(SQL、用例设计、Redis/Nginx);组长面(脚本编写、环境搭建、接口/自动化/性能);项目经理面(表达/协作/情商);必备:测试理论、Java/Python/Go、Jmeter/Locust、MySQL/Redis/Mongo/ES、Linux/Shell、Git、Jenkins、学习能力。
  • 区块链:优先级:逻辑>测试技术>沟通>垂直领域>稳定性(≥2年)>规划>优劣势;加分项:技术博客/著作、安全测试经验、开发经验。

2. 高频真题

  • HR面:自我介绍、项目/离职原因、职业规划、期望薪资、优缺点、加班/出差接受度、求职动机、反问;应届生加试:竞赛/实习/学习情况;互联网加试:BAT亲属、健康、意向城市、其他面试进展;金融/科技加试:价值观、违规处理、适应力、矛盾处理。
  • 笔试:基础概念(回归测试、测试模型、α/β测试、用例方法、缺陷等级);Linux(文件/进程/日志操作、权限修改);SQL(增删改查、模糊/分组/多表关联、事务ACID、索引);编程(快排/冒泡、深浅拷贝、GC、递归、数组/字符串操作、unittest);网络(HTTP状态码、TCP三次握手、UDP区别、OSI七层、常用端口);测试设计(ATM/登录/水杯/电梯用例、BUG报告、性能测试流程、Jmeter/Selenium使用);编程实操(日志遍历、数组插入、递归求和)。
  • 技术面:高频题(自我介绍、项目难点、测试流程、用例设计、BUG处理、回归策略、开发与测试争议处理、覆盖率保障、敏捷认知、职业规划);工具(Jmeter/Locust、Selenium、Jenkins、Fiddler、k8s/Docker、Git);专项(性能测试场景/指标分析、自动化框架/元素定位/数据清理、安全/兼容/App测试);场景题(开发延期保交付、线上BUG处理、新增需求测试、全链路压测、线上接口监控);实操(Linux查日志/进程、MySQL改表结构、Docker启容器/拷文件、k8s改Pod标签、Python写交换变量函数)。

上一篇
下一篇