Week 1软件测试导论与质量模型
📖核心知识点:软件测试基本概念与V模型(验证vs确认);测试层级体系——单元测试、集成测试、系统测试、验收测试的定义与适用场景;质量属性(可靠性、可维护性、可用性)与ISO 25010标准概览;Error/Defect/Failure三者的本质区别与因果链。⏰本周节奏:第一周以概念建立为主,lecture密度不高但定义精确度要求极高,建议边听边建术语卡片。🎯考试关联:期末必考「测试层级定义与区分「简答题,V模型对应关系是高频选择题。🧪Tutorial/Lab:配置JUnit 5与JaCoCo环境,完成第一个断言驱动的单元测试用例。📌作业关联:Assignment中代码覆盖率报告需要JaCoCo,本周务必跑通工具链。⚠️易错点:混淆Verification与Validation;将Testing等同于Debugging——测试是发现缺陷,调试是定位修复。
Week 2黑盒测试:等价类划分
📖核心知识点:等价类划分(Equivalence Partitioning)原理——将输入域划分为有限个等价类,每类中任一值代表整类行为;弱等价类测试(单缺陷假设)vs强等价类测试(多缺陷假设);有效等价类与无效等价类的识别方法;最小测试用例集的构造策略。⏰本周节奏:本周开始进入系统化测试设计,lecture会给出多个划分示例,tutorial需要独立完成3-4道等价类划分练习。🎯考试关联:期末大题必考——给定函数规格说明,要求画出等价类表并设计最小用例集,分值通常15-20分。🧪Tutorial/Lab:针对一个多参数输入的Java方法,手动划分等价类并用JUnit实现自动化验证。📌作业关联:Assignment第一阶段要求对目标模块进行黑盒等价类测试,覆盖有效与无效输入。⚠️易错点:遗漏无效等价类(如null、空字符串、超界值);混淆等价类划分与边界值分析的适用场景。
Week 3黑盒测试:边界值分析与决策表
📖核心知识点:边界值分析(BVA)——在等价类边界及其邻域(min, min+1, nom, max-1, max)取值;健壮性边界值(加入min-1和max+1);多变量边界值的组合爆炸问题与最坏情况测试;决策表测试——条件桩/动作桩的构造,规则合并与简化技巧。⏰本周节奏:BVA与决策表是黑盒技术的收尾,练习量较大,建议周中完成BVA专题,周末攻决策表。🎯考试关联:决策表是期末计算题高频考点,要求从需求文档中提取条件并构造完整决策表。🧪Tutorial/Lab:为一个日期验证函数设计完整BVA测试集;用决策表方法测试一个保险费率计算模块。📌作业关联:Assignment要求综合运用EP+BVA+决策表三种黑盒方法,需在报告中对比三种方法的缺陷发现能力。⚠️易错点:边界值取点时off-by-one错误;决策表中遗漏「don't care「条件导致规则数膨胀。
Week 4白盒测试:控制流与逻辑覆盖
📖核心知识点:控制流图(CFG)的绘制规则——基本块、判定节点、汇合节点;语句覆盖(SC)、分支覆盖(DC/BC)、条件覆盖(CC)的定义与层级蕴含关系(DC⊃SC但DC⊄CC);条件/判定覆盖(C/DC)与修正条件/判定覆盖(MC/DC)的区别——MC/DC要求每个原子条件独立影响判定结果。⏰本周节奏:白盒测试是全课理论核心,本周CFG绘制必须练到手熟,建议至少画5个不同结构的CFG。🎯考试关联:期末必考大题——给定代码画CFG、标注覆盖率、设计满足指定覆盖准则的测试用例,通常占20+分。🧪Tutorial/Lab:手动绘制嵌套if-else和循环结构的CFG,用JaCoCo验证分支覆盖率是否达标。📌作业关联:Assignment核心评分维度之一——JaCoCo覆盖率报告需达到指定分支覆盖阈值。⚠️易错点:混淆分支覆盖与条件覆盖;CFG中遗漏隐式分支(如switch的default、try-catch路径)。
Week 5白盒测试:路径覆盖与圈复杂度
📖核心知识点:路径覆盖(Path Coverage)与基础路径测试法;圈复杂度(McCabe Cyclomatic Complexity)计算——V(G)=E-N+2P,三种等价计算方式;线性无关路径集合的构造方法;路径覆盖的不可行路径(Infeasible Path)问题及处理策略。⏰本周节奏:圈复杂度计算是必须掌握的硬技能,建议本周做8-10道CFG→V(G)→基础路径集的完整练习。🎯考试关联:圈复杂度计算几乎每年必考,常与CFG绘制联合出题;不可行路径的识别是区分D和HD的关键。🧪Tutorial/Lab:对一个包含多层循环和条件的排序算法计算圈复杂度,导出基础路径集并编写对应测试用例。📌作业关联:Assignment报告中需分析目标模块的圈复杂度并论证测试充分性。⚠️易错点:V(G)公式中P值(连通分量数)搞错;将不可行路径强行设计测试用例导致用例无意义。
Week 6灵活周:阶段复习与实践审计
📖核心知识点:黑盒与白盒技术的综合对比——适用场景、优缺点与互补关系;测试充分性准则的层级关系总结(SC⊂DC⊂Path Coverage);Practical Skills Audit准备——限时60分钟为陌生Java类编写满足100%分支覆盖的测试用例。⏰本周节奏:Flex Week是冲刺Practical Audit的关键窗口,建议每天限时练习一个陌生类的测试编写,训练「看规格→画CFG→写用例「的流水线速度。🎯考试关联:Practical Audit本身占25%且考察形式接近期末实操题,本周的练习直接提升期末应试能力。🧪Tutorial/Lab:模拟Audit环境,在限时条件下对一个复杂业务逻辑类完成测试编写与覆盖率验证。📌作业关联:Audit的代码质量标准与Assignment一致,本周打磨的测试代码风格可直接迁移到Assignment。⚠️易错点:Audit时只追求覆盖率而忽略断言质量——空断言会被判定为无效测试。
Week 7变异测试与测试有效性评估
📖核心知识点:变异测试(Mutation Testing)核心思想——通过注入人为缺陷(变异体)评估测试套件的缺陷检测能力;变异算子分类(算术替换AOR、关系替换ROR、条件替换COR等);变异得分(Mutation Score)计算=被杀变异体/(总变异体-等价变异体);等价变异体问题及其不可判定性。⏰本周节奏:变异测试是全课理论巅峰,概念密度极高,建议lecture后立即做手算练习巩固。🎯考试关联:期末必考——给定代码和测试套件,判断哪些变异体能被杀死、计算变异得分,分值15-20分。🧪Tutorial/Lab:使用PIT(PITest)框架对Java项目执行变异测试,分析存活变异体并改进测试套件以提升变异得分。📌作业关联:Assignment核心要求——对开源项目执行变异测试,找出原始测试套件的不足并提交改进方案。⚠️易错点:忽略等价变异体导致变异得分计算偏低;混淆「测试杀死变异体「与「测试检测到变异体「的判定条件。
Week 8模拟对象、存根与集成测试策略
📖核心知识点:测试替身(Test Doubles)体系——Dummy、Stub、Spy、Mock、Fake的定义与适用场景;Mockito框架核心API——when/thenReturn、verify、ArgumentCaptor;集成测试策略——自顶向下(需Stub)、自底向上(需Driver)、三明治(Sandwich)、大爆炸(Big Bang)各策略的优缺点与适用场景。⏰本周节奏:Mockito实战量大,建议先看官方文档Quick Start,再做Lab练习,最后将Mock技巧应用到Assignment中。🎯考试关联:集成测试策略对比是期末简答/论述题常客;Mock vs Stub的区别是高频选择题。🧪Tutorial/Lab:使用Mockito为一个依赖数据库和外部API的服务类编写隔离单元测试,练习模拟异常返回与超时场景。📌作业关联:Assignment中对外部依赖的测试必须使用Mock隔离,HD标准要求覆盖正常路径+异常路径+边界情况。⚠️易错点:过度Mock导致测试与实现强耦合——Mock应聚焦行为验证而非实现细节。
Week 9Web自动化测试与Selenium
📖核心知识点:Selenium WebDriver架构——浏览器驱动、元素定位策略(ID、CSS Selector、XPath);Page Object Model(POM)设计模式——将页面元素与测试逻辑分离,提升可维护性;显式等待(WebDriverWait)vs隐式等待的区别与最佳实践;模拟用户交互——表单填写、下拉选择、文件上传、多窗口切换。⏰本周节奏:Selenium上手需要环境配置时间,建议周初完成ChromeDriver配置与第一个脚本,周中练习POM模式,周末将POM应用到Assignment。🎯考试关联:POM设计模式的原理与优势是期末论述题考点;元素定位策略的选择依据可能出现在选择题中。🧪Tutorial/Lab:使用Selenium对一个示例Web应用完成注册→登录→搜索→验证结果的端到端自动化测试脚本。📌作业关联:Assignment可能要求提交包含Selenium测试的完整测试架构,POM结构是加分项。⚠️易错点:使用Thread.sleep替代显式等待导致测试不稳定(Flaky Test);XPath过于绝对化导致DOM微调后测试全部失败。
Week 10测试管理、TDD与全课总结
📖核心知识点:测试驱动开发(TDD)红-绿-重构循环——先写失败测试→写最小实现→重构优化;行为驱动开发(BDD)与Given-When-Then模式;缺陷管理生命周期——New→Open→Fixed→Verified→Closed;测试计划与测试报告的工业标准结构;全课知识图谱回顾——黑盒→白盒→变异→集成→自动化的完整测试体系。⏰本周节奏:最后一周以复习整合为主,建议绘制全课思维导图,将10周内容串联成「测试金字塔「体系。🎯考试关联:期末综合题可能要求为一个给定系统设计完整测试策略(选择黑盒/白盒/集成方法并论证),TDD流程是简答题常客。🧪Tutorial/Lab:用TDD方式从零实现一个小型计算器模块,体验「先测试后实现「的开发节奏与心理转变。📌作业关联:Assignment最终提交需包含测试策略选择的论证报告,本周的全课回顾直接支撑报告写作。⚠️易错点:TDD中跳过重构步骤导致代码腐化;将BDD的Given-When-Then与传统测试用例的Arrange-Act-Assert混淆。