求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
 
 
全部课程 | 技术学院 | 管理学院 | 嵌入式学院 | 在线学院  
成功案例   品质保证  电话 English
追随技术信仰

随时听讲座
每天看新闻
 
   
成功案例
某轨道交 C/C++设计模式
华为 C++高级编程
丹佛斯 C++高级编程
北大方正 C语言单元测试实践
罗克韦尔 C++单元测试+重
罗克韦尔 C++单元测试+重
中国石油 C++单元测试

相关课程  
C++并发处理+单元测试
C++程序开发
C++高级编程
C/C++开发
C++设计模式
C/C++单元测试
 

单元测试实战训练营     2911 次浏览    1098 次 
   
授课讲师:刘斌--曾任职IBM(中国)资深软件架构师
时间地点:上海、北京、深圳根据报名开班
课程费用:5000元/人(学生5折),详见 公开课学习手册>
企业内训:可以根据企业需求,定制内训,详见 内训学习手册
 
   随着敏捷开发方法的流行,单元测试的思想也在遍地开花,越来越多的开发人员和公司开始学习和接受单元测试,并且已经开始应用在日常的开发工作之中。但是实践之中,却遇到了不少问题和障碍。比如,如何将单元测试思想传播给小组的每一位成员,并让他们心悦诚服的接受,如何坚持这种边写功能边测试的做法并最终养成一种习惯;如何进行高效测试;很多工程师认为我们是想些测试的,但我们在压力下没有足够的时间去写;我们一开始是写单元测试的,但两个星期后我们就没有动力继续下去了,再往后我们就放弃了编写单元测试。在该课程之中,我们将揭开这些问题的背后的原因。本课程不单单是单元测试基本概念的技能讲解,而是把技能和问题的场景结合,关注如何应用单元测试解决问题,尤其关注需要通过经验积累的高级技能。课程中的理论和经验来自于对大量开发人员常犯错误与所遇问题的归纳、分析与总结,有针对性的给出解决方法,课程将重现这些问题的经典案例,通过实例讲解,并对应到学员的实际工作问题,使学员能够把传授的经验和自己的问题结合起来,有效的启发思路、激发兴趣、并掌握解决问题的基本方法。
培训对象:各类 IT/软件企业和研发机构的软件架构师、软件设计师、程序员。对于怀有设计疑问和问题,需要梳理解答的团队和个人,效果最佳。
学员基础:学员学习本课程应具备下列基础知识:
    1) 了解Java/C#/C++语言;
    2) 简单了解XUnit框架的任何一种;熟悉一种开发工具IDE下单元测试环境。
授课方式: 定制课程 + 案例讲解 + 小组讨论,60%案例讲解,40%实践演练
培训内容: 2天
  单元测试基础
  • 内容一:理解单元测试
    • 理解单元测试 第一个单元测试
    • 单元测试框架提供了什么功能
    • 好的测试是什么样子的
    • 为什么要写单元测试,为什么不写单元测试
    • 为什么要写"好"的单元测试
    • 分析真实项目,如何做单元测试, 已经相关问题
  理解单元测试框架—XUnit工具
  • 内容一:理解单元测试XUnit 框架—(以Junit为案例介绍,其他简单介绍)
    • Junit设计目标
    • 安装和使用JUnit
    • 探索JUnit核心
    • 参数化测试
    • 测试异常
    • 超时测试
    • 引入Hamcrest匹配器
    • JUnit的测试运行器
    • 用Suite来组合测试
    • Junit与IDE,Ant,Maven集成运行
    • JUnit与持续集成工具结合
    • 通过案例分析,Junit的最佳实践
 单元测试设计
  • 内容一:构思单元测试
    • 单元测试模型的设计
    • 单元测试用例设计
    • 为系统运行起来而设
    • 为正向测试而设计
    • 为逆向测试而设计用例
    • 为满足特殊需求而设计用例
    • 为代码覆盖而设计用例
    • 通过案例分析单元测试编程前的测试用例的设计
  • 内容二:单元测试设计—黑盒测试
    • 单元测试黑盒设计
    • 等价类设计法
    • 边界值分析法
    • 判定表(决策表)驱动化
    • 状态转移测试设计
    • 结对测试
    • 分类树设计方法
    • 用例/场景测试
    • 动态分析法
    • 通过大量案例分析,如何应用各种黑盒测试设计技术,进行设计单元测试
  • 内容三:单元测试设计-白盒测试
    • 单元测试白盒设计
    • 标识单元测试点
    • 语句覆盖
    • 判定覆盖
    • 基本路径测试法
    • 域测试法
    • 符号测试法
    • Z路径覆盖
    • 程序变异
    • 白盒测试综合策略
    • 最少测试用例数计算
    • 测试覆盖准则
    • 通过大量案例分析,如何应用各种白盒测试设计技术,进行设计单元测试
  • 内容四:单元测试点之测试技术选择
    • 单元测试点之断言标准设计
    • 单元测试点之测试数据设计
    • 单元测试点集成测试场景设计
    • 基于设计模式实现代码的单元测试设计(创建、结构与行为)
  单元测试覆盖
  • 内容一:逻辑覆盖
    • 实施逻辑覆盖的原因
    • 语句覆盖
    • 判定覆盖
    • 条件覆盖
    • 条件判定组合覆盖
    • 多条件覆盖
    • 修正条件判定覆盖
    • 结合案例分析,逻辑覆盖的度量
  • 内容二:统计测试覆盖--(以Junit为案例分析)
    • 使用clover为junit单元测试做覆盖率分析
    • 使用Cobertura统计JUnit测试覆盖率
    • 结合案例分析,通过测试覆盖率工具,分析覆盖率
 单元测试之中如何解耦依赖
  • 内容一:利用Stub打破依赖关系
    • 利用Stub打破依赖关系 使用Stub的例子
    • 重构设计以使依赖可被注入
    • 分析真实项目,如何使用Stub
  • 内容二:通过Mock对象测试交互
    • 使用Mock的例子
    • 对比基于状态的测试和基于交互的测试
    • 分析真实项目,如何使用Mock, 以及相关问题
  • 内容三:用好Mock与Stub
    • Mock与Stub的区别
    • 同时使用Mock和Stub
    • 每个测试只使用一个Mock
    • 改进代码设计,利于应用Mock和Stub
    • Mock和Stub的局限性
    • 结合多个案例项目进行分析,什么时间使用Mock ,什么时间使用Stub, 如何权衡
 增强设计与代码的可测试性
  • 内容一:设计和代码的可测试性
    • 抽取接口,容许替换底层实现
    • 在被测类中注入桩对象
    • What’s testable design?
    • Modular design
    • SOLID design principles
    • Modular design in context
    • Test-driving toward modular design
    • Testability issues
    • Can’t instantiate a class
    • Can’t invoke a method
    • Can’t observe the outcome
    • Can’t substitute a collaborator
    • Can’t override a method
    • Guidelines for testable design
    • Avoid complex private methods
    • Avoid final methods
    • Avoid static methods
    • Use new with care
    • Avoid logic in constructors
    • Avoid the Singleton
    • Favor composition over inheritance
    • Wrap external libraries
    • Avoid service lookups
    • 结合多个大型案例项目进行分析,如何通过重构代码,实现可测试性
  编写好的单元测试
  • 内容一:好的单元测试测试标准-A-TRIP
    • 单元测试的自动化-Automatic
    • 单元测试彻底的-Thorough
    • 单元测试可重复-Repeatable
    • 单元测试独立的-Independent
    • 单元测试专业的-Professional
    • 通过案例分析,分析好的单元测试标准
  • 内容二:如何编写好的单元测试测试
    • 单元测试中的坏味道
    • 如何编写容易被看懂的模式
    • 如何编写容易维护的模式
    • 如何编写信得过的模式
    • 重构单元测试,改进代码设计
    • 结合多个案例项目进行分析,分析什么是好的单元测试
 TDD测试驱动开发基础
  • 内容一:好的单元测试测试标准-A-TRIP
    • TDD的节奏
    • TDD的两个原则和TDD的目标
    • TDD与行为驱动开发(Behaviour Driven Development)
    • TDD与验收测试驱动开发(Acceptance Test Driven Development)
    • 识别代码中的坏味道
    • 重构工具及使用
    • 常用重构技巧
    • 重构与预先设计的区别
    • 通过案例分析,TDD的最佳实践技巧,重构的技巧,坏味道等
  历史遗留系统如何编写单元测试
  • 内容一:遗留系统代码环境下如何编写单元测试
    • 从哪里开始添加单元测试
    • 确定抉择策略1-容易优先测类的优缺点
    • 确定抉择策略2-困难优先测类的优缺点
    • 遗留代码改动准则
    • 重构前写集成测试
    • 遗留代码整洁测试的常用工具
    • 童子军原则
    • 为第三方代码做学习测试
    • 复杂遗留系统之中,如何增加单元测试以及遇到的问题
    • 通过真实案例分析,在遗留系统的的难度和最佳实践
 单元测试组织和管理
  • 内容一:组织和管理测试
    • 通过自动构建脚本运行测试
    • 将测试与代码做同源版本管理
    • 根据速度和类型为测试分类
    • 创建和维护项目的测试辅助设施
    • 结合我们研发中心, 如何做单元测试管理, 已经如何组织,以及遇到的问题
  在研发团队如何引入单元测试
  • 内容一:将测试引入到你的组织中
    • 如何成功在组织中引入单元测试
    • 为什么在组织中引入单元测试的努力会失败
    • 如何将测试集成到开发流程中 - 敏捷测试流程
    • 常见的疑惑和解答?
    • 通过多个研发中心咨询经验,分析单元测试引入的方式和最佳实践
2911 次浏览   1098 次
其他人还看了课程
重构复杂遗留系统的最佳实践  3367 次浏览
代码整洁之道-态度、技艺与习惯  6765 次浏览
高质高效嵌入式软件开发  405 次浏览
如何编写高质量代码  3661 次浏览
代码质量标准与评审方法  4890 次浏览
高质高效嵌入式软件开发  154 次浏览
定制内训



最新活动计划
MBSE(基于模型的系统工程)4-18[北京]
自然语言处理(NLP) 4-25[北京]
基于 UML 和EA进行分析设计 4-29[北京]
以用户为中心的软件界面设计 5-16[北京]
DoDAF规范、模型与实例 5-23[北京]
信息架构建模(基于UML+EA)5-29[北京]