TDD测试驱动开发实战工作坊

课程简介

“企业实施敏捷:你想止步于二十四式简易太极拳,还是想深入练内功?” “测试驱动开发,你听说过但是没尝试过?你尝试过但是觉得没用?你觉得有用但是工作中用不起来?”

自2003年Kent Beck发明了测试驱动开发方法(Test-Driven Development,简称TDD)以来,包括谷歌、苹果、微软在内的多家软件开发厂商和组织在各种项目中应用TDD:从Web开发,到企业应用,到嵌入式iPhone和Android开发;语言涵盖 C, C++, Java, C#, Python, Ruby, Php, Objective-C, JavaScript 等等。

大量工程实践和研究表明(http://en.wikipedia.org/wiki/Test-driven_development):采用TDD的开发者更少的使用Debugger,更能保持“小步快跑”的开发节奏,对产品质量的信心更大;同时,虽然TDD要求编写更多的代码,但是开发时间往往更短,大量的单元测试使产品代码的质量更高、设计的可测试性更强,更易实现高内聚低耦合的设计,从而加入新需求和缺陷排查所需的时间更短,项目成本更低。

你也想了解TDD是什么?TDD如何做?TDD能不能用在自己项目中?TDD对开发者有什么样的要求和好处?

根据我们开发、培训和咨询经验,TDD几乎是无法自学的!

TDD是敏捷开发实践中最重要的一招,同时也是最难的一招。为了掌握TDD,除了了解基本的节奏、步骤和原则,还需要大量的练习和观摩,而一个良好的有教师代领和点拨的开端对学习和掌握TDD有非常大的帮助和作用。

本次培训为期2天,采用结对编程的方式组织学员,以“练习-演示-讨论-讲解”为一个单元,由浅入深、循序渐进的方式,每天进行20个左右学习单元,让学员在丰富、密集的练习和互动中建立对TDD的正确认知、学习TDD正确的步骤和方法,在教师的引导和小组讨论中,自己体验、思考、理解、总结TDD对软件的质量、成本、进度的益处。

课程受众

  1. 期望系统化、全面掌握 TDD测试驱动开发 的软件开发团队或开发者;
  2. 已经尝试在企业中推动TDD测试驱动开发,但是困难重重,期望找到解决办法的软件开发团队;
  3. 已经开始尝试使用敏捷和Scrum的开发模式,期望进一步导入TDD测试驱动开发的软件开发团队。
  4. 面向企业软件研发团队包括但不限于系统架构师、设计师、开发人员、测试人员等。

课程优势

  1. 工作坊模式授课,案例分析+沙盘演练
  2. 资深敏捷技术专家授课,深入浅出 ;
  3. 理论+实操演练,以“练习-演示-讨论-讲解” 为一个单元,每天20单元 ;
  4. 可以同时采用多种编程语言进行授课,包括但不限于:Java, C#, C++, Python, Ruby等 ;
  5. 来自成功企业的经过验证的实战经验;

课程大纲

测试驱动开发基础

• 介绍

• 什么是单元测试及TDD?

• TDD的好处

• 单元测试

• xUnit 的原理

• 有选择的编写测试

• 给测试命名

• 满意路径的测试

• 其它路径的测试• TDD

• 为什么编写失败测试?

• TDD 的心跳 – 红, 绿, 重构

• 演进性设计

• 单一责任原则

• 依赖性注入

• 持续集成  在真实项目中使用TDD

• 重构的基础

• 技术债务带来的成本

• “代码味道”简介

• 使用集成开发环境(IDE)中的重构功能

• 应用TDD

• 关于伪码(fakes), 模拟数据(mocks) 及桩( stubs)

• 模拟框架

• 如何测试GUI

• 测试遗留代码

实战演练

单元1: 如何设计一个类

[讲座]类设计:从一个到两个,从多个到包    调整你对面向对象编程的理解

[练习]你认为多态、继承、封装在面向对象编程中应用的比例各是多少?

[讲座]面向对象编程的演变

[讨论]你如何将面向对象编程要素应用到当前项目中的?       用职责描述类功能

[练习]为指定类写职责,并实现它(TDD)

[练习]为它的指定子类写职责,并实现它(TDD)

[讲座]如何定义一个职责,用职责来 指导方法定义,定义职责的模板

[讨论]如何通过单元测试驱动职责的实现

[讲座]职责和函数命名

[讨论]JDK API的函数命名

[讲座]职责和SRP – Single Responsibility Principle 单一责任原则

结对编程
[讨论]如何成功地结对编程
[练习]切换结对,尝试不同的方法结对(乒乓,球和板,等等)

DRY原则
[讨论]重复:软件的“熵”
[练习]设计练习:概率计算
[讨论]如何消灭一个类中的重复
[讲座]DRY:Don’t Repeat Yourself 不要重复你自己
[练习]提高关于概率的设计(利用重构)
[讨论]都消灭了那些重复
[讲座]将单元测试用作回归测试

简单设计
[讲座]什么是简单设计?
[讨论]你是怎么理解简单设计的?
[讨论]你是否曾经应用/破坏过简单设计原则?

单元2:如何重构一个类

重构的循环
[讲座]什么是重构
[讲座]Smells就是问题
[讲座]重构的循环
[讲座]什么时候算做完了?
[讲座]在一个重构之内
[练习]小步前进 – 识别重构常用的步骤
[练习]简单设计 – 如何判断简单,你是怎么理解的

已知的Smells
[重构]Extract Method / Class / Subclass / Introduce
Rename Method
Introduce Assertion
Duplicate Observer Data
Replace Parameter with Method
Preserve Whole Object
Introduce Parameter Object
[讲座&练习]注释
[讲座&练习]长方法
[讲座&练习]大类
[讲座&练习]长参数列表
[练习]测验:Smells和重构
[讲座]Smells和重构

命名
[重构]
[讲座&练习]在名字中嵌入了类型
[讲座&练习]无法达意的名字
[讲座&练习]不一致的名字

不必要的复杂性
[重构]
[讲座&练习]死代码
[讲座&练习]投机未来的可能性
[讲座]成对出现的重构

重复
[重构]
[讲座&练习]神奇数字
[讲座&练习]重复的代码
[讲座&练习]可互换的类有不同的接口

条件逻辑

[重构]

[讲座&练习]空值检测

[讲座&练习]复杂的布尔表达式

[讲座&练习]特殊处理的Case

[讲座&练习]模拟的继承

 单元3: 如何设计类之间的关系

组合 – 正方向观察:把变量行为委托到其它对象

[练习]设计测验:增强现有类的能力

[讨论]类之间的合作

[讲座]面向对象原则:将变化封装起来

[讲座]面向对象原则:针对接口编程,而不是实现

[讲座]面向对象原则:组合优于继承

[模式]策略模式

[讲座]什么是设计模式

[讲座]从模式中理解面向对象    组合 – 反方向观察:为其它对象增加变量行为

[练习]设计测验:如何增加行为而不引入继承

[讨论]设计Smell:组合泛滥

[讲座]面向对象原则:OCP – Open-Close Principle 开闭原则

[模式]装饰器模式

[讲座]装饰器模式的要点    组合 – 包装并延迟对方法的调用

[练习]

[模式]命令模式    

单元4: 如何重构类之间的Smells

描述数据

[讲座&练习]主要的困扰

[讲座&练习]数据类

[讲座&练习]数据块

[讲座&练习]临时字段       继承

[讲座&练习]子类拒绝来自父类的遗产

[讲座&练习]不合适的亲密关系(生成子类)

[讲座&练习]Lazy Class    责任

[讲座&练习]父类嫉妒子类的特性

[讲座&练习]不合适的亲密关系(提取父类)

[讲座&练习]消息链

[讲座&练习]中间人    适应变化

[讲座&练习]不同的变化动机

[讲座&练习]散弹猎枪式的修改

[讲座&练习]平行继承结构

用作公共库的类

[讲座&练习]不完整的库类

回顾与总结

课程安排

授课方式
1. 企业定制内训;
2. 公开课;

联系我们
联系我们,按需定制您的课程
电话:400 696 6280
邮箱:contact@scrumcn.com

 

我们的讲师

联系我们,400 696 6280,获取讲师信息

为什么选择Scrum中文网

关于Scrum中文网

Scrum中文网是全球第一个Scrum中文网站,中国最早的Scrum和敏捷教育及推广机构,也是国际Scrum联盟(ScrumAlliance)官方授权教育机构和大规模敏捷SAFe官方机构SAI在中国的授权合作伙伴。Scrum中文网是中国敏捷教练的摇篮,启蒙和培养了数万名敏捷专业人士,帮助数百家知名企业成功转型敏捷。

Scrum中文网创立于2008年初,由海内外资深Scrum和敏捷顾问团队共同创办,为企业提供权威专业的Scrum敏捷学习平台,以及敏捷转型咨询、教练辅导和培训服务,服务涵盖定制培训、权威认证、体系建立、教练辅导、工具落地等。权威课程包括:官方权威Scrum认证培训课程(CSM,CSPO,CSD,A-CSM等)、大规模敏捷SAFe及LeSS认证培训,以及量身定制的Scrum敏捷开发企业级实训课程培训, 敏捷工程技术实践课程等。

Scrum中文网致力于在短期内为客户解决企业、产品及项目的关键问题,包括交付周期、交付效率、交付质量、交付成本、团队士气等,同时为客户建立长期持续改善的机制。

学员反馈

刘经理日立 PM
阅读更多
了解了SM在项目中到底应该做什么,加深了对敏捷Scrum的理解 ,切切实实打开了思路。
张总福特中国 项目管理
阅读更多
课程高度抽象了平时工作的细节内容,并且找到了很多理论基础和可改进的地方,能很好地指导以后的工作。
黄经理HSBC ScrumMaster
阅读更多
通过游戏和练习很好的理解了scrum的各项理论,以及如何应用,get到很多ScrumMaster实操技巧。老师风趣幽默,学习过程很欢乐。
朱总太平洋保险
阅读更多
培训后修正了很多以前实践中的误区,开拓了思维的广度,有游戏环节互动,老师和同学都很给力,分享了很多不同的观点。
夏总欧姆龙
阅读更多
培训后对工作有借鉴作用,比较肯定的是增量交付的理念。
林经理兴业银行 ScrumMaster
阅读更多
纠正了很多以往错误的scrum错误观念。
问总兴业银行 ScrumMaster
阅读更多
很好的了解SCM工作机制自己成员之间的关系,和常规敏捷开发的区别。
上一篇
下一篇
0
0
小时
0
分钟
0
由Scrum.org主办的 2024中国Scrum大会 8月17日将在上海开幕
0
0
小时
0
分钟
0
预约回电
留下您的手机号,我们会在第一时间联系您。
热线电话:400-696-6280
预约回电
预约成功,我们会尽快联系您。