单元测试及重构工作坊

课程简介

“软件产品新功能越来越难加入?”  “代码越来越难懂,越来越难修改?”  “写这个模块的工程师离职了,文档又不全,里面的逻辑很乱,但是没人敢修改?”  “产品功能都开发不完,哪有时间写单元测试?”  “一个函数100行算什么,我们还有500行,1000行的!”

作为项目经理/开发主管、开发或者测试人员,是否经常听到这样的声音、惊讶和问题? 是否大家都认可代码的质量差,但都无计可施、无能为力? 是否老板拍定了交付日期,开发团队除非拼命加班,否则无论如何也赶不上?

如何上述情况出现了一项,那么可以肯定的说:您的项目内部质量出现了问题。 怎么办? 内部出现了问题,就需要重构;想成功的重构,需要完备的单元测试。 您也许听过什么是重构,什么是单元测试,更有可能曾经尝试过重构和单元测试,但是: 要么:“我们的代码很乱,无法重构”; 要么:“我们的代码复杂,无法做单元测试”;

也许你小范围的尝试了,觉得不错,但是是否能应用在产品代码还心存疑惑; 甚至也许您已经很成功的使用了重构和单元测试,但是觉得对人要求太高,怎么推广到整个团队表示担心。

本课程为期两天,课程除了为您深入剖析什么是重构、什么是单元测试、单元测试和重构对人的要求是什么、带来哪些好处,对产品的会带来哪些影响,更重要的是帮助团队全面掌握如何做重构和单元测试的技巧。

课程采用结对编程的方式组织学员,以“练习-演示-讨论-讲解”为一个单元,由浅入深,循序渐进的方式,每天进行大量的学习单元(20个左右),让学员在丰富、密集的练习和互动中建立对重构和单元测试的认知、学习重构和单元测试正确的步骤和方法,在资深专家的引导和小组讨论中,自己体验、思考、理解,总结重构和单元测试对软件内部质量提升价值。

课程受众

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

课程优势

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

课程大纲

第一天 重构

1. 识别代码中的坏味道     – 用团队中的产品代码做例子分析所出现的坏味道     – 结对讨论和分析     – 总结、讲解、概要分析所有种类的坏味道(21种)     – 结对讨论和分析

2.正确认识和对待坏味道

3.为什么需要重构?    – 重构的考虑、成本、粒度、频率和方式

4.学习重构的原则和步骤

5.学习正确的重构步骤

6. 练习小规模重构 – 如何重构一个类

实践环节:     重构的循环

[讲座]识别类内的坏味道

[讲座]重构的循环

[讲座]什么时候算做完了?

[讲座]在一个重构之内

[练习]小步前进 – 识别重构常用的步骤  [

练习]简单设计 – 如何判断简单,你是怎么理解的

已知的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

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

练习较大规模重构 – 多个类之间的重构

描述数据

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

[讲座&练习]数据类

[讲座&练习]数据块

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

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

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

[讲座&练习]Lazy Class

责任

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

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

[讲座&练习]消息链

[讲座&练习]中间人

适应变化

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

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

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

用作公共库的类

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

第二天 单元测试

单元测试入门:

[演示] 用JUnit 4进行单元测试 – 初步掌握用 JUnit 4 进行单元测试的能力

[练习] 如何按业务价值导向进行单元测试设计

树立正确的单元测试认识、概念和思路

Fixture组织

单测的力度

如何划分单元测试

[讨论&分析] 为什么不写单元测试

[讨论&分析] 谁该对(外部/内部)质量负责

[讲座] 什么不是单元测试

[讲座] 什么是单元测试

[讲座] 项目中单元测试策略

怎么写单元测试

[讲座] 单元测试结构

[讲座] 单元测试内容

[练习] 如何组织测试数据

[讨论&分析] 边界条件

[练习] 如何用Mock辅助边界条件测试    单元测试重构

[讨论&分析] 识别单元测试中的坏味道

[练习] 重构单元测试    单元测试和构建流水线(build pipeline)

[讨论&分析] 单元测试在构建流水线中的位置和作用

[讲座&练习] 用Buildr做Java 项目构建

[讲座&练习] 用Rake做Ruby 项目构建

[讲座&练习] 用 Jenkins/Hudson 做持续集成

最后总结

课程安排

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

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

 

我们的讲师

周辉庆 Edward Zhou

Scrum中文网资深敏捷教练,SPC,CSP-SM,CSP-PO,CSM,CSPO,PMP。

周老师是拥有近20年技术实战和项目管理经验的资深敏捷教练和顶级技术专家。对技术保持着强烈的兴趣与爱好,喜欢接触各种新技术新方法。擅长技术规划、项目管理、成本控制,和提供完善的技术解决方案。擅长辅导多类型的团队,软件团队,硬件团队,业务团队等。

专注于提升团队各种技术实践 TDD, CI/CD, 自动化验收 等能力,训练符合Scrum要求的能力全栈型团队。通过BDD行为驱动开发实践,有效支撑大规模多团队的敏捷转型。

具有丰富的TDD,持续集成、ATDD,自动化测试、重构、结对编程、演进式设计,DDD Event Sourcing/CQRS 理论知识与实操经验,对技术的追求和风趣的工作风格使得他受到开发团队的喜爱,对团队成员有很强的亲和力,通过结对工作的方式令他们的各项能力得到提升,使他们能够很快的体会到敏捷方法与技术实践所带来的挑战和乐趣。

擅长激活软硬件团队, 提升团队的专业能力、开心指数、以及追求卓越的心。成功帮助过多家软硬件结合的企业1000人以上的团队实施敏捷并取得业务上的良好表现。

曾服务过的客户有上汽集团,太平保险,锐捷智慧教室,锐捷网络,万科泊寓,迈达斯智能,深圳载途科技,上海仙豆智能机器人等。

 

为什么选择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
预约回电
预约成功,我们会尽快联系您。