单元测试实战培训课程
培训对象:
各类 IT/软件企业和研发机构的软件架构师、软件设计师、程序员。对于怀有设计疑问和问题,需要梳理解答的团队和个人,效果最佳。
学员基础:
学员学习本课程应具备下列基础知识:
1) 了解Java/C#/C++语言;
2) 简单了解XUnit框架的任何一种;熟悉一种开发工具IDE下单元测试环境。
培训大纲:
单元测试基础
|
· 内容一:理解单元测试
o 理解单元测试 第一个单元测试
o 单元测试框架提供了什么功能
o 好的测试是什么样子的
o 为什么要写单元测试,为什么不写单元测试
o 为什么要写"好"的单元测试
o 分析真实项目,如何做单元测试, 已经相关问题
|
理解单元测试框架—XUnit工具
|
· 内容一:理解单元测试XUnit 框架—(以Junit为案例介绍,其他简单介绍)
o Junit设计目标
o 安装和使用JUnit
o 探索JUnit核心
o 参数化测试
o 测试异常
o 超时测试
o 引入Hamcrest匹配器
o JUnit的测试运行器
o 用Suite来组合测试
o Junit与IDE,Ant,Maven集成运行
o JUnit与持续集成工具结合
o 通过案例分析,Junit的最佳实践
|
单元测试设计
|
· 内容一:构思单元测试
o 单元测试模型的设计
o 单元测试用例设计
o 为系统运行起来而设
o 为正向测试而设计
o 为逆向测试而设计用例
o 为满足特殊需求而设计用例
o 为代码覆盖而设计用例
o 通过案例分析单元测试编程前的测试用例的设计
· 内容二:单元测试设计—黑盒测试
o 单元测试黑盒设计
o 等价类设计法
o 边界值分析法
o 判定表(决策表)驱动化
o 状态转移测试设计
o 结对测试
o 分类树设计方法
o 用例/场景测试
o 动态分析法
o 通过大量案例分析,如何应用各种黑盒测试设计技术,进行设计单元测试
· 内容三:单元测试设计-白盒测试
o 单元测试白盒设计
o 标识单元测试点
o 语句覆盖
o 判定覆盖
o 基本路径测试法
o 域测试法
o 符号测试法
o Z路径覆盖
o 程序变异
o 白盒测试综合策略
o 最少测试用例数计算
o 测试覆盖准则
o 通过大量案例分析,如何应用各种白盒测试设计技术,进行设计单元测试
· 内容四:单元测试点之测试技术选择
o 单元测试点之断言标准设计
o 单元测试点之测试数据设计
o 单元测试点集成测试场景设计
o 基于设计模式实现代码的单元测试设计(创建、结构与行为)
|
单元测试覆盖
|
· 内容一:逻辑覆盖
o 实施逻辑覆盖的原因
o 语句覆盖
o 判定覆盖
o 条件覆盖
o 条件判定组合覆盖
o 多条件覆盖
o 修正条件判定覆盖
o 结合案例分析,逻辑覆盖的度量
· 内容二:统计测试覆盖--(以Junit为案例分析)
o 使用clover为junit单元测试做覆盖率分析
o 使用Cobertura统计JUnit测试覆盖率
o 结合案例分析,通过测试覆盖率工具,分析覆盖率
|
单元测试之中如何解耦依赖
|
· 内容一:利用Stub打破依赖关系
o 利用Stub打破依赖关系 使用Stub的例子
o 重构设计以使依赖可被注入
o 分析真实项目,如何使用Stub
· 内容二:通过Mock对象测试交互
o 使用Mock的例子
o 对比基于状态的测试和基于交互的测试
o 分析真实项目,如何使用Mock, 以及相关问题
· 内容三:用好Mock与Stub
o Mock与Stub的区别
o 同时使用Mock和Stub
o 每个测试只使用一个Mock
o 改进代码设计,利于应用Mock和Stub
o Mock和Stub的局限性
o 结合多个案例项目进行分析,什么时间使用Mock ,什么时间使用Stub, 如何权衡
|
增强设计与代码的可测试性
|
· 内容一:设计和代码的可测试性
o 抽取接口,容许替换底层实现
o 在被测类中注入桩对象
o What’s testable design?
o Modular design
o SOLID design principles
o Modular design in context
o Test-driving toward modular design
o Testability issues
o Can’t instantiate a class
o Can’t invoke a method
o Can’t observe the outcome
o Can’t substitute a collaborator
o Can’t override a method
o Guidelines for testable design
o Avoid complex private methods
o Avoid final methods
o Avoid static methods
o Use new with care
o Avoid logic in constructors
o Avoid the Singleton
o Favor composition over inheritance
o Wrap external libraries
o Avoid service lookups
o 结合多个大型案例项目进行分析,如何通过重构代码,实现可测试性
|
编写好的单元测试
|
· 内容一:好的单元测试测试标准-A-TRIP
o 单元测试的自动化-Automatic
o 单元测试彻底的-Thorough
o 单元测试可重复-Repeatable
o 单元测试独立的-Independent
o 单元测试专业的-Professional
o 通过案例分析,分析好的单元测试标准
· 内容二:如何编写好的单元测试测试
o 单元测试中的坏味道
o 如何编写容易被看懂的模式
o 如何编写容易维护的模式
o 如何编写信得过的模式
o 重构单元测试,改进代码设计
o 结合多个案例项目进行分析,分析什么是好的单元测试
|
TDD测试驱动开发基础
|
· 内容一:好的单元测试测试标准-A-TRIP
o TDD的节奏
o TDD的两个原则和TDD的目标
o TDD与行为驱动开发(Behaviour Driven Development)
o TDD与验收测试驱动开发(Acceptance Test Driven Development)
o 识别代码中的坏味道
o 重构工具及使用
o 常用重构技巧
o 重构与预先设计的区别
o 通过案例分析,TDD的最佳实践技巧,重构的技巧,坏味道等
|
历史遗留系统如何编写单元测试
|
· 内容一:遗留系统代码环境下如何编写单元测试
o 从哪里开始添加单元测试
o 确定抉择策略1-容易优先测类的优缺点
o 确定抉择策略2-困难优先测类的优缺点
o 遗留代码改动准则
o 重构前写集成测试
o 遗留代码整洁测试的常用工具
o 童子军原则
o 为第三方代码做学习测试
o 复杂遗留系统之中,如何增加单元测试以及遇到的问题
o 通过真实案例分析,在遗留系统的的难度和最佳实践
|
单元测试组织和管理
|
· 内容一:组织和管理测试
o 通过自动构建脚本运行测试
o 将测试与代码做同源版本管理
o 根据速度和类型为测试分类
o 创建和维护项目的测试辅助设施
o 结合我们研发中心, 如何做单元测试管理, 已经如何组织,以及遇到的问题
|
在研发团队如何引入单元测试
|
· 内容一:将测试引入到你的组织中
o 如何成功在组织中引入单元测试
o 为什么在组织中引入单元测试的努力会失败
o 如何将测试集成到开发流程中 - 敏捷测试流程
o 常见的疑惑和解答?
o 通过多个研发中心咨询经验,分析单元测试引入的方式和最佳实践
|
|
如果您想学习本课程,请
预约报名
如果没找到合适的课程或有特殊培训需求,请
订制培训
除培训外,同时提供相关技术咨询与技术支持服务,有需求请发需求表到邮箱soft@info-soft.cn,或致电4007991916
技术服务需求表下载请点击
服务优势:
丰富专家资源,精准匹配相关行业,相关项目技术精英,面向用户实际需求,针对性培训或咨询,互动式交流,案例教学,精品小班,实际工程项目经验分享,快捷高效,节省时间与金钱,少走弯路与错路。
专家力量:
中国科学院相关研究所高级研究人员
西门子,TI,vmware,MSC,Ansys,MDI,Mentor, candence,Altium,Atmel 、Freescale,达索,华为等
大型公司高级工程师,项目经理,技术支持专家
中科信软培训中心,资深专家或讲师
大多名牌大学,硕士以上学历,相关学历背景专业,理论素养高
多年实际项目实践,大型复杂项目实战案例分享,热情,乐于技术分享
针对客户实际需要,真实案例演示,互动式沟通,学有所值