应用单元测试和重构改进软件质量
|
时间
|
课程内容
|
第
一
单
元
|
持续交付
-
软件研发交付面临的挑战
-
持续交付的研发流程
-
使用高质量的单元测试提高开发期质量的反馈
-
应用CI进行每日构建以频繁地交付可工作的软件
-
基本脚本的自动化部署缩短系统部署时间
-
自动化的回归功能测试加速UAT测试
单元测试概述
-
什么叫单元测试?
-
为什么要做单元测试
-
单元测试实施流程
-
单元测试代码的编写规范
-
单元测试策略
-
单元测试用例设计
-
单元测试覆盖率分析
-
单元测试报告模板
基于单元测试的开发习惯
-
开发过程是否需要单元测试
-
是先代码开发,还是先单元测试
-
进行Debug是否可以替代单元测试
-
什么时间展开单元测试
-
单元测试的粒度(函数级别吗?)
-
单元测试与代码开发的时间比例关系
-
XP中的TDD实施过程
TDD-测试驱动开发
-
TDD开发优势、价值
-
TDD开发过程
-
TDD开发模式
-
TDD实践过程的问题、难点解决方案
单元测试代码结构
-
实现代码结构与单元测试代码结构对比
-
单元测试代码结构的可复用性
-
单元调用接口替身代码结构
-
集成单元测试代码结构
实现代码结构分析
-
实现代码语句分析
-
实现代分支、循环分析
-
实现代码路径分析
-
实现代码条件分析
-
标识测试点
单元测试用例设计
-
单元测试点之测试技术选择
-
单元测试点之断言标准设计
-
单元测试点之测试数据设计
-
单元测试点集成测试场景设计
-
基于设计模式实现代码的单元测试设计(创建、结构与行为)
应用单元测试框架实践单元测试
-
单元测试框架概述
-
编译单元测试框架源代码
-
使用断言编写单元测试用例
-
使用Fixture机制灵活支持单元测试
-
使用参数化批量定义单元测试用例
-
使用运行参数控制测试用例执行
-
使用工具生成单元测试覆盖率报告
|
第
二
单
元
|
多种技术平台编程语言单元测试实战
-
使用JSUnit、JSMock实践Javascript单元测试
-
Java语言单元测试实践:
-
使用JUnit/TestNG框架实施Java代码的单元测试
-
使用MockIto框架实施隔离测试
-
使用Spring Test API实践Spring框架单元测试
-
使用DBUnit框架实施基于数据库的单元测试
-
C#语言单元测试实践
-
使用MSTest实施C#代码的单元测试
-
使用RhinoMock框架实施隔离测试
-
C++语言单元测试实践
-
使用Google Test框架实施C++代码的单元测试
-
使用Google Mock框架实施隔离测试
-
C语言单元测试实践:使用Cmockery框架
-
使用SQLUnit实践数据库存储过程单元测试
案例:使用单元测试框架进行单元测试案例实践
单元测试效率(缩短单元测试时间)
-
测试的全面性与测试效率
-
函数级别单元测试与测试效率
-
简单且可运行实现代码的测试效率
-
将单元测试代码集成到CI过程中
使用Mock实现测试隔离
-
Mock对象的设计和应用原则
-
如何编写Mock和Stub
-
使用Mock框架实现测试隔离
-
Mock和Stub的最佳实践
单元测试最佳实践经验
-
根据架构设计分析单元测试策略
-
基于软件需求、技术设计单元测试用例
-
自动化回归单元测试用例
-
生成、分析单元测试覆盖率报告
Test Review技巧
-
如何Review已有单元测试代码
-
分析单元测试覆盖率报告以发现问题
-
分类测试问题以实现单元测试的可读性和可维护性
-
案例分析开源项目的单元测试方案
遗留代码的单元测试导入与改进
-
设计解耦分离解决方案
-
测试已有代码的方法和策略
-
通过重新设计改进代码可测性
-
针对不可测代码的解决方案
|
第
三
单
元
|
静态测试
-
静态测试的目的
-
静态测试的原则
-
静态测试实战
-
案例:使用CheckStyle,PMD,Findbugs进行校验代码规则 , 发现重复代码,检查代码注释率
实现代码质量的度量
-
代码质量的度量
-
Chidamber & Kemerer度量,
-
Depth of Inheritance Tree(DIT)
-
Number of Childre(NOC)
-
Response for a Class(RFC)
-
Afferent/Efferent Couplings(CA/CE)
-
Lack of cohesion in methods(LCOM)
-
业界其他度量标准
Code review
-
Code review的原则
-
Code review前期准备
-
Code review的代码量
-
Code review的缺陷检查表
-
Code review实战
-
案例:使用Eclipse插件执行Code review活动
代码覆盖率分析
-
代码覆盖率的意义
-
代码覆盖率工具介绍
-
代码覆盖率实战
-
代码覆盖率分析
-
案例:使用 CodePro进行覆盖测试
使用重构提高代码可测试性
面向对象设计原理与原则
-
开-闭原则(Open-Closed Principle)
-
里氏代换原则(Liskov Substitution Principle)
-
依赖倒换原则(Dependence Inversion Principle)
-
接口隔离原则(Interface Segregation Principle)
-
合成、聚合复用原则(Composite Aggregate Reuse Principle)
-
迪米特法则(Law of Demeter)
重构实践
-
分析并初步重构一个案例
-
重构原则
-
代码的坏味道
-
构筑测试体系
-
重构工具
-
优秀程序结构的风格
-
如何观察代码
-
重构名录
-
重新组织函数与属性
-
重新组织对象关系
-
简化表达式
-
组织继承体系
-
如何让重构成为习惯
-
重构案例实践与分析
-
重构工具
-
案例:使用Eclipse/VS.NET工具进行重构实战
|
第
四
单
元
|
使用重构提高代码可测试性
重构到模式
-
设计模式概述
-
设计模式历史,描述,分类,应用
-
使用模式的预先设计
-
过度使用设计模式后果分析
-
通过重构实现、趋向和去除滥用模式
-
代码的坏味道:过度设计、设计不足
-
构筑测试体系
-
演进式设计
案例---重点介绍重构基本类型依赖和对应模式
-
通过案例学习以下重构到模式手段
-
以State取代状态改变条件语句
-
以Strategy取代条件逻辑
-
以Composite取代隐含树
-
以Interpreter取代隐式语言
-
转移装饰功能到Decorator
-
用Builder封装Composite
案例---重点介绍重构代码重复和对应模式
-
通过案例学习以下重构到模式手段
-
构造Template Method
-
以Composite取代一/多之分
-
引入Null Object
-
用Adapter统一接口
-
用Fatory Method引入多态创建
案例---重点介绍重构代码过长/过大的类/方法和对应模式
-
转移聚集操作到Vistor
-
以Strategy取代条件逻辑
-
以Command取代条件调度程序
-
转移聚集操作到Collecting Parameter
案例---重点介绍条件逻辑过度复杂和对应模式
-
以Strategy取代条件逻辑
-
以State取代状态改变条件语句
-
转移装饰功能到Decorator
-
引入Null Object
-
以Command替换条件调度程序
-
转移聚集操作到Visitor
-
|