软件测试
Software Testing
📖这门课到底讲什么
软件测试讲授如何系统性地发现缺陷并建立质量信心:测试的基本概念与原则(测试显示缺陷存在而非不存在)、测试层次(单元、集成、系统、验收)、黑盒方法(等价类划分、边界值、判定表、因果图、正交实验、场景法)、白盒方法(语句与分支覆盖、路径覆盖、基本路径测试、循环测试)、缺陷生命周期管理、测试用例设计与管理、自动化测试(单元框架、接口测试、UI 自动化、性能测试)以及测试策略与度量。学完你应能针对一个模块设计高覆盖率的测试用例、编写自动化测试并接入持续集成、规范地提交与跟踪缺陷、并制定一个项目的测试计划与准入准出标准。
🎯为什么必须学好
测试是开发岗与测试岗共同的面试考点:如何设计登录功能的测试用例、等价类与边界值是什么、如何测试一个水杯或电梯(经典开放题)、单元测试如何写、如何保证线上质量。企业里测试开发岗位需求大且薪资不低,懂自动化与接口测试的同学有明显优势。写习惯测试的开发者在重构与协作中效率更高,这是工程素养的直接体现,也是代码评审与面试中被高度重视的能力。
📌核心知识清单
- 测试基础与原则:验证与确认、缺陷与故障与失效的区别、测试的七条基本原则、测试与质量保证的关系
- 测试层次与类型:单元测试、集成测试(自顶向下、自底向上、三明治)、系统测试、验收测试、冒烟与回归测试
- 黑盒测试用例设计:等价类划分、边界值分析、判定表与因果图、正交实验设计、场景法、错误推测法
- 白盒测试与覆盖率:语句覆盖、判定覆盖、条件覆盖、路径覆盖、基本路径测试与圈复杂度、循环结构测试
- 测试用例与缺陷管理:用例要素(前置条件、步骤、预期结果)、用例评审、缺陷生命周期与严重程度与优先级划分、缺陷报告规范
- 单元测试与测试驱动开发:JUnit 与 pytest 的使用、断言与测试夹具、mock 与 stub、TDD 的红绿重构循环
- 接口与自动化测试:HTTP 接口测试(Postman、requests)、契约测试、UI 自动化(Selenium、Playwright)、持续集成中的测试分层与执行策略
- 性能与专项测试:负载与压力测试(JMeter)、稳定性与并发测试、兼容性与安全测试概述、测试度量(缺陷密度、用例执行率、覆盖率)
✍️怎么学(可执行步骤)
- 以《软件测试的艺术》为主线(第2至5章用例设计最精彩),再用《Google软件测试之道》了解工业界的测试组织与分层策略
- 给自己写的每个程序补测试:用 JUnit 或 pytest 写单元测试,覆盖率报告必须打开并看到行覆盖率数字,逐步追求核心模块八成以上覆盖
- 用 Postman 与 requests 对课程项目的接口做完整接口测试,覆盖正常参数、边界值、异常参数与权限场景,并整理成可重复执行的集合
- 为一个已被测过的功能写反向用例:专门设计能暴露缺陷的输入(空值、超长字符串、特殊字符、并发重复提交),记录发现的真实 bug 与修复过程
📚推荐教材与书籍
测试思想经典之作,黑盒与白盒用例设计章节极其扎实,第2至5章为核心
讲解测试开发角色、自动化分层与测试策略,理解工业界如何组织质量保障
讲如何写出可维护的单元测试与测试优先开发,实践性强
JMeter 实操手册,做性能测试与报告时参考
🎬视频课程 / 公开课
推荐南京大学或同济大学版本,用例设计方法与考试风格匹配
覆盖单元测试、接口测试与自动化框架,实践任务多
🌐网站与文档
Python 测试框架权威文档,参数化与 fixture 是重点
现代浏览器自动化测试工具,文档示例清晰,适合做 UI 自动化入门
Web 安全测试标准清单,做安全相关测试时对照检查
🐙GitHub 开源资料
主流 Python 测试框架,读示例与文档能建立测试工程化思维
跨浏览器自动化测试框架,做端到端测试项目的首选工具
Java 单元测试标准框架,配合课程项目的 Java 代码写测试
🧪动手实践任务
实践 1
为一个登录与注册模块写出完整测试用例集:使用等价类与边界值至少设计三十条用例,标注预期结果与优先级,并执行后提交缺陷报告
实践 2
为已有项目补单元测试并输出覆盖率报告:让核心模块的行覆盖率达到八成以上,列出未覆盖分支并说明原因
实践 3
用 requests 与 Postman 完成接口自动化测试集合:覆盖正常、边界、异常与鉴权四类场景,并用 pytest 组织成可在 CI 中一键执行的测试脚本
实践 4
用 JMeter 对一个接口做压力测试:设定并发梯度,记录响应时间与错误率随并发变化的曲线,给出系统容量结论
🧾考试与面试
💼 面试会怎么考
经典开放题:如何测试一个水杯、电梯、自动售货机、微信朋友圈(考测试思维的结构化程度);等价类划分与边界值分析的区别与举例;如何为登录功能设计测试用例;单元测试写不写、怎么写、覆盖率要求多少;发现了一个偶现的 bug 怎么定位与复现;测试与开发如何协作、如何做回归测试;接口测试如何做、如何保证线上质量;性能测试指标有哪些(响应时间、吞吐量、错误率、资源占用)。
📝 期末与考研怎么过
期末题型:设计测试用例(等价类、边界值、判定表)、白盒覆盖率计算(给流程图求语句与分支覆盖、算圈复杂度与基本路径数)、判断测试方法适用场景、缺陷报告与测试计划写作、简答测试原则与层次。备考重点是把两类用例设计方法练到能快速写出规范的用例表。目标八十五分以上,考试套路性很强。
⚠️ 常见坑
- 把测试等同于点点看能不能用,没有系统化的用例设计方法与覆盖思路
- 只测正常流程不设计异常与边界输入,缺陷都留到用户手里才发现
- 追求高覆盖率数字而不检查断言质量,测试全绿但没验证真实行为
- 缺陷报告写得含糊(程序出错、不好用),开发无法复现导致来回沟通成本极高
- 自动化测试在项目末期才补,且与代码变更脱节,维护成本高最后被弃用