-99921 火龙果·整理 uml.org.cn 跟我学企业敏捷开发 IThis is the PDF file for the Agile Software Development book contents.It is licensed under the Creative Commons Attribution-Non Commercial-Share Alike 3.0 license.I hope you enjoy it,I hope it helps you learn the software development,and I hope you'11 continuously watch this http://github.com/larrycai/sdcamp,will be happy if you follow my weibo http://weibo.com/larrycaiyu
跟我学企业敏捷开发 1 1 This is the PDF file for the Agile Software Development book contents. It is licensed under the Creative Commons Attribution-Non Commercial-Share Alike 3.0 license. I hope you enjoy it, I hope it helps you learn the software development, and I hope you’ll continuously watch this : http://github.com/larrycai/sdcamp, will be happy if you follow my weibo http://weibo.com/larrycaiyu
火龙果·整理 uml.org.cn 前言 对于一个刚加入企业的人来说,一个急切想知道的问题是:企业的软件开发到底是什 么? 这本小册子就用几十页左右的内容把企业软件开发的方方面面给介绍一下。既然取名 为“跟我学”,就表明它是比较浅显的,很容易通过实践来了解。又由于比较薄,很多知识 点只是入门而已,需要看许多的参考资料才能掌握的。 但同时也不代表里面的东西是很浅薄的,恰恰相反其中的内容应该是最前沿的,最能体 现什么是真正的敏捷开发。 为什么写这本书 我在爱立信研发工作多年,从2001年开始研究软件开发的流程,先是极限编程,后来又 到敏捷。开始在小团队中推动,慢慢地扩大到整个部门,也因此喜欢上了敏捷。后来又参加 了Scrum的培训,认识了很多敏捷社区的朋友,了解到了更多更好的企业软件开发方式。 我也一直战斗在第一线,以写代码为乐趣,有很多亲身经历。同时也在多媒体部创建和 组织了无数次新人的专业培训,不断把我的很多经验传授给他们。因为我相信软件开发中人 是最重要的,我希望新人能够得到专业的培训,以此来快速适应企业的文化并成长。 在敏捷社区的一次讨论中,很多朋友建议我把经验分享出来。我突然意识到这是一个很 不错的建议,虽然我痛恨写作(语文不好一直是我的一个心病),但或许能用这次机会来加 强自己这方面的能力。 而且我是喜欢自由,也喜欢分享的技术爱好者,推崇用开源的技术方式来写技术类的书 籍,希望能推动国内的开源技术书的发展。 不管怎样,我愿意分享我们公司培养新人敏捷开发的方式,期望你们能少走弯路。 *养成好的开发方式。站得高,看得远。不要一开始就纠缠于差的环境。 幸养成团结开放的心态。软件是开放的世界,要勇于共享,不断进步。 总之,特别想用我们的经验来告诉埋头苦干的人,要站在巨人的肩膀上。 特色 这里边讲到的内容我们早已经在爱立信公司实践多次,特别适合刚加入企业的新员工, 来快速地熟悉企业所使用的实践技术。 每一章内容都配备足够的练习,通过练习使员工掌握后面的理论知识,来一步步地了解 软件开发的各个角落。 每章内容都是精心挑选的,难度适当。各章之间都有很好的衔接,也可独自成为一个知 识点,可以独立章节学习,当然更加推荐连续学习
前言 对于一个刚加入企业的人来说,一个急切想知道的问题是:企业的软件开发到底是什 么? 这本小册子就用几十页左右的内容把企业软件开发的方方面面给介绍一下。既然取名 为“跟我学”,就表明它是比较浅显的,很容易通过实践来了解。又由于比较薄,很多知识 点只是入门而已,需要看许多的参考资料才能掌握的。 但同时也不代表里面的东西是很浅薄的,恰恰相反其中的内容应该是最前沿的,最能体 现什么是真正的敏捷开发。 为什么写这本书 我在爱立信研发工作多年,从2001年开始研究软件开发的流程,先是极限编程,后来又 到敏捷。开始在小团队中推动,慢慢地扩大到整个部门,也因此喜欢上了敏捷。后来又参加 了Scrum的培训,认识了很多敏捷社区的朋友,了解到了更多更好的企业软件开发方式。 我也一直战斗在第一线,以写代码为乐趣,有很多亲身经历。同时也在多媒体部创建和 组织了无数次新人的专业培训,不断把我的很多经验传授给他们。因为我相信软件开发中人 是最重要的,我希望新人能够得到专业的培训,以此来快速适应企业的文化并成长。 在敏捷社区的一次讨论中,很多朋友建议我把经验分享出来。我突然意识到这是一个很 不错的建议,虽然我痛恨写作(语文不好一直是我的一个心病),但或许能用这次机会来加 强自己这方面的能力。 而且我是喜欢自由,也喜欢分享的技术爱好者,推崇用开源的技术方式来写技术类的书 籍,希望能推动国内的开源技术书的发展。 不管怎样,我愿意分享我们公司培养新人敏捷开发的方式,期望你们能少走弯路。 * 养成好的开发方式。站得高,看得远。不要一开始就纠缠于差的环境。 * 养成团结开放的心态。软件是开放的世界,要勇于共享,不断进步。 总之,特别想用我们的经验来告诉埋头苦干的人,要站在巨人的肩膀上。 特色 这里边讲到的内容我们早已经在爱立信公司实践多次,特别适合刚加入企业的新员工, 来快速地熟悉企业所使用的实践技术。 每一章内容都配备足够的练习,通过练习使员工掌握后面的理论知识,来一步步地了解 软件开发的各个角落。 每章内容都是精心挑选的,难度适当。各章之间都有很好的衔接,也可独自成为一个知 识点,可以独立章节学习,当然更加推荐连续学习
火龙果·整理 uml.org.cn 本书结构 从第一章到第六章,每章都对应一门2-3小时的课,第七章是单独的一天来实践项目开 发。附录A是如果在企业内部采用本书安排的一个模板。 ◆第一章:敏捷开发和Scrum ◆第二章:版本控制Git和代码审阅Gerrit:使用分布式系统Git与Gerriti系统 ◆第三章:持续集成:使用Jenkins、Maven、Java项目 ·第四章:如何写好Java程序:Java的覆盖率,单元测试,重构,测试驱动开发 *第五章:需求管理和实例化需求Specification by example 幸第六章:用Cucumber来实例化需求 *第七章:项目实践:Game of1ife 适合读者 本书适合所有正在看的人,否则你也不会读到这里。作为作者来说,我认为此书尤其适 合以下读者: 企业新人 进入企业,对如何正确地开发有点朦胧,觉得什么都重要,又看上去什么都不是那么要 紧。入职的导师可能水平也不是很够,项目老是很紧张,需求要不是很清楚;有人抱怨敏捷 是浆糊,又有人说敏捷是必须得。这些很常见的问题,很少在前期了解。 本书希望给你一个比较高的起,点,告诉你优秀的软件开发是怎么做的,它会帮助你建立 一个好的软件开发的价值观。 同时里面会讨论到相关的开发技术,可能你还没用上,这正好可以给你一个比较的机 会。去了解一下各个技术的优缺点,或许你有机会推动你公司的软件开发水平。如果有更好 的技术,别忘了通知一下。 技术经理 作为技术经理,已经在一个企业呆了一段时间了,可能对一切都习以为常;有时候有心 改变,又无从下手。 本书希望给你一些启迪,让你了解企业软件开发可以怎么做,你可以翻阅你喜欢的章 节,照着试试。相信会给你带了一些启发。 同时本书也给你介绍了如何在一个公司做专业的敏捷开发培训,你完全可以基于本书的 内容,裁剪成适合你公司的内容。如果你真得这么做了,我会万分感想,因为这就是我写书 的目的之一。 大学学生 快大学毕业了,也写了不少代码了,熟悉了很多算法、DE用得也甭溜。突然发现找工 作老问有没有经验;或者直接问什么是敏捷开发、持续集成等等。你或许突击了解过这些名 词,但是具体为什么没有切身体会。 本书就是给你介绍一个企业软件开发碰到的方方面面,结合很多的实际例子,让你来通 过实践的机会来体会企业中为什么老是谈到这些东西
本书结构 从第一章到第六章,每章都对应一门2-3小时的课,第七章是单独的一天来实践项目开 发。附录A是如果在企业内部采用本书安排的一个模板。 * 第一章:敏捷开发和Scrum * 第二章:版本控制Git和代码审阅Gerrit:使用分布式系统Git与Gerrit系统 * 第三章:持续集成:使用Jenkins、Maven、Java项目 * 第四章:如何写好Java程序:Java的覆盖率,单元测试,重构,测试驱动开发 * 第五章:需求管理和实例化需求Specification by example * 第六章:用Cucumber来实例化需求 * 第七章:项目实践:Game of life 适合读者 本书适合所有正在看的人,否则你也不会读到这里。作为作者来说,我认为此书尤其适 合以下读者: 企业新人 进入企业,对如何正确地开发有点朦胧,觉得什么都重要,又看上去什么都不是那么要 紧。入职的导师可能水平也不是很够,项目老是很紧张,需求要不是很清楚;有人抱怨敏捷 是浆糊,又有人说敏捷是必须得。这些很常见的问题,很少在前期了解。 本书希望给你一个比较高的起点,告诉你优秀的软件开发是怎么做的,它会帮助你建立 一个好的软件开发的价值观。 同时里面会讨论到相关的开发技术,可能你还没用上,这正好可以给你一个比较的机 会。去了解一下各个技术的优缺点,或许你有机会推动你公司的软件开发水平。如果有更好 的技术,别忘了通知一下。 技术经理 作为技术经理,已经在一个企业呆了一段时间了,可能对一切都习以为常;有时候有心 改变,又无从下手。 本书希望给你一些启迪,让你了解企业软件开发可以怎么做,你可以翻阅你喜欢的章 节,照着试试。相信会给你带了一些启发。 同时本书也给你介绍了如何在一个公司做专业的敏捷开发培训,你完全可以基于本书的 内容,裁剪成适合你公司的内容。如果你真得这么做了,我会万分感想,因为这就是我写书 的目的之一。 大学学生 快大学毕业了,也写了不少代码了,熟悉了很多算法、IDE用得也甭溜。突然发现找工 作老问有没有经验;或者直接问什么是敏捷开发、持续集成等等。你或许突击了解过这些名 词,但是具体为什么没有切身体会。 本书就是给你介绍一个企业软件开发碰到的方方面面,结合很多的实际例子,让你来通 过实践的机会来体会企业中为什么老是谈到这些东西
火龙果·整理 uml.org.cn 退一步说,看完后至少你简历上又多了好几条知识,不过千万不要说掌握,还是说“了 解”或“知道”谦虚一点吧。 最好的方式就是到爱立信上海研发中心多媒体部来做实习生吧,我们会安排最专业的老 师给你上课,有完备的培训材料和环境,保证你了解得更多。 还犹豫什么,找我们吧?当然对技术没追求的就算了。 如何使用本书 这本小册子最好是公司培训的参考手册,一般应该有专业的老师准备好对8-10人的团队 进行指导。 当然你可以照着自学,多看看参考资料,毕竞这是一本软件开发的入门书,高度够了, 深度不够。 几天的学习会很有意思,学完后,你会意识到在企业中你再也不可能什么都会,要抛弃 单兵独斗的想法,要学会团队合作,更要持续地学习提高。而且要有激情,否则什么都学不 到。 如何写作本书的 本书也是用敏捷的方式来写作的,我在Windows(希望早日能用MBA)的Notepad-+编辑 器里用larkdown的文本文件写内容,然后在共享目录的虚拟机中,一个命令生成所有的其他 格式(如PDF、mobi、epub);Git是我使用的版本控制系统。 本地测试通过后,我会提交到GitHub中去,同时架设了持续集成服务器,会对我最新内 容再次检测,自动产生电子书。 这方面有兴趣的朋友可以继续翻看我在写的小书【跟我学开源技术书】https:/ github.com/larrycai/kaiyuanbook. 自从花了一周时间写出第一版后,我就力争持续发布,同时我一直在纠结本书的深度和 广度。 封面 因为自己爱好设计排版,就自己DIY了一下,封面是瑞典南部军港卡尔斯克鲁纳(Karl- skrona)市外面斯图尔克岛(Sturko)的一角,用Windows PowerPointi制作完成
退一步说,看完后至少你简历上又多了好几条知识,不过千万不要说掌握,还是说“了 解”或“知道”谦虚一点吧。 最好的方式就是到爱立信上海研发中心多媒体部来做实习生吧,我们会安排最专业的老 师给你上课,有完备的培训材料和环境,保证你了解得更多。 还犹豫什么,找我们吧?当然对技术没追求的就算了。 如何使用本书 这本小册子最好是公司培训的参考手册,一般应该有专业的老师准备好对8-10人的团队 进行指导。 当然你可以照着自学,多看看参考资料,毕竟这是一本软件开发的入门书,高度够了, 深度不够。 几天的学习会很有意思,学完后,你会意识到在企业中你再也不可能什么都会,要抛弃 单兵独斗的想法,要学会团队合作,更要持续地学习提高。而且要有激情,否则什么都学不 到。 如何写作本书的 本书也是用敏捷的方式来写作的,我在Windows(希望早日能用MBA)的Notepad++编辑 器里用Markdown的文本文件写内容,然后在共享目录的虚拟机中,一个命令生成所有的其他 格式(如PDF、mobi、epub);Git是我使用的版本控制系统。 本地测试通过后,我会提交到GitHub中去,同时架设了持续集成服务器,会对我最新内 容再次检测,自动产生电子书。 这方面有兴趣的朋友可以继续翻看我在写的小书【跟我学开源技术书】 https:// github.com/larrycai/kaiyuanbook。 自从花了一周时间写出第一版后,我就力争持续发布,同时我一直在纠结本书的深度和 广度。 封面 因为自己爱好设计排版,就自己DIY了一下,封面是瑞典南部军港卡尔斯克鲁纳(Karlskrona)市外面斯图尔克岛(Sturko)的一角,用Windows PowerPoint制作完成
-999%1 火龙果·整理 uml.org.cn 版本变化 下面是每次的版本变化清单,你也可以自己在Github上查看:https:/github.com/ larrycai/sdcamp/compare/v1.0.0...v1.2.0 2012年2月14日-1.2.0 一个比较完备的发行版,60页左右。 *加强了书的格式,解决了中文字体显示的问题,加上了色彩,加上了图书推荐页。 ◆加强了书的格式,前言和致谢挪到了目录前,附录区别于正常章节。 幸补全了Git、持续集成、实例化需求、Cucumberi章节。 2012年1月12日-1.0.0 第一次正式发布,40页左右,开始内部培训使用,包含完整的章节,但有些章节内容不 完整
版本变化 下面是每次的版本变化清单,你也可以自己在Github上查看:https://github.com/ larrycai/sdcamp/compare/v1.0.0...v1.2.0 2012年2月14日–1.2.0 一个比较完备的发行版,60页左右。 * 加强了书的格式,解决了中文字体显示的问题,加上了色彩,加上了图书推荐页。 * 加强了书的格式,前言和致谢挪到了目录前,附录区别于正常章节。 * 补全了Git、持续集成、实例化需求、Cucumber章节。 2012年1月12日–1.0.0 第一次正式发布,40页左右,开始内部培训使用,包含完整的章节,但有些章节内容不 完整
-99娱%1 火龙果·整理 uml.org.cn 致谢 首先应该感谢上海爱立信研发中心允许我把这些内部培训资料分享给大家。 特别感谢许晓斌(@juvenxu)在结构、方向和细节处给了我很多的建议。 特别感谢徐毅(@徐毅-Kaveri)给我写书的动力,也期待他的测试新书早日面世。 感谢李任、王艳、晁立山、梅一、姜信宝、卢绮闽对本书做了早期的审阅。 非常感谢北京的李小波从一开始就用开源的方式对文字细节进行不断地校对
致谢 首先应该感谢上海爱立信研发中心允许我把这些内部培训资料分享给大家。 特别感谢许晓斌(@juvenxu)在结构、方向和细节处给了我很多的建议。 特别感谢徐毅(@徐毅-Kaveri)给我写书的动力,也期待他的测试新书早日面世。 感谢李任、王艳、晁立山、梅一、姜信宝、卢绮闽对本书做了早期的审阅。 非常感谢北京的李小波从一开始就用开源的方式对文字细节进行不断地校对
-999%1 火龙果·整理 uml.org.cn 目录 前言 i 版本变化 致谢 目录 1敏捷开发和Scrum 1 1.1工作环境.· 1.2简单历史。.。.. 1 1.2.1敏捷流派 2 1.3 Scrum基本知识·. 1.3.1基本角色 3 1.3.2框架过程 1.3.3常用的实践 的 1.4相关知识 1.5课后练习···· 4 1.6小结....·. 4 1.7参考阅读..... 4 2版本控制Git和代码审阅Gerrit 2.1工作环境 2.2什么是Git 5 2.2.1集中式和分布式 2.3Git基本用法 6 2.3.1安装 6 2.3.2配置Git o 2.3.3建立本地Git仓库 > 2.3.4第一个提交:···· 2.3.5Git分支(Branch)和合并(Merge) 7 2.3.6Git变基(Rebase)# 6 2.3.7Git标记(Tag)# 8 2.4Git远程仓库连接····· 8 2.4.1在Gerrit中注册 9 2.4.2Git克隆(c1one) 9 2.4.3Git推送/拉(Push/Pu11)············· 9
目录 前言 i 版本变化 v 致谢 vii 目录 ix 1 敏捷开发和Scrum 1 1.1 工作环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 简单历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2.1 敏捷流派 . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Scrum 基本知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3.1 基本角色 . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3.2 框架过程 . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.3 常用的实践 . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 相关知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5 课后练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.6 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.7 参考阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 版本控制Git和代码审阅Gerrit 5 2.1 工作环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 什么是Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.1 集中式和分布式 . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Git基本用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3.1 安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3.2 配置 Git . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3.3 建立本地 Git 仓库 . . . . . . . . . . . . . . . . . . . . . . 7 2.3.4 第一个提交 . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.5 Git分支(Branch)和合并(Merge) . . . . . . . . . . . . . . 7 2.3.6 Git变基(Rebase)### . . . . . . . . . . . . . . . . . . . . 8 2.3.7 Git标记(Tag)### . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Git远程仓库连接 . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4.1 在Gerrit中注册 . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.2 Git克隆(Clone) . . . . . . . . . . . . . . . . . . . . . . 9 2.4.3 Git推送/拉(Push/Pull) . . . . . . . . . . . . . . . . . . . . 9
-999% 火龙果·整理 uml.org.cn 2.5Git的良好使用习惯 。 10 2.5.1提交注释的质量 10 2.6常用的工作模式·· 10 2.6.1本地特性分支 10 2.7代码审阅和Gerrit. 11 2.8Git的缺点 11 2.9相关知识.··. 11 2.9.1几种协议 12 2.10课后练习····· 12 2.11小结.···· 12 2.12参考阅读.···. 12 3持续集成 13 3.1环境准备.. 13 3.2持续集成流程... 13 3.3 Maven...:··. 14 3.3.1安装Maven.... 14 3.3.2 Maven仓库管理器:Nexus x 3.3.3第一个maven命令 15 3.3.4体会两层缓存 16 3.4持续集成服务器:Jenkins 16 3.4.1安装 16 3.4.2安装Git插件 16 3.4.3系统配置Naven 16 3.4.4设置构建任务 16 3.5如何实施持续集成. 3.6相关知识 17 3.7课后练习 17 3.8小结.... 18 3.9参考阅读.. 18 4如何写好别ava程序 19 4.1环境准备.··.. 19 4.2代码风格和编程规范 20 4.3安全代码..。.. 20 4.4单元测试.··. 20 4.5代码覆盖率 20 4.6重构.····· 20 4.7测试驱动开发TDD···· 21 4.7.1测试驱动开发的步骤 21 4.7.2单元测试就是文档 22 4.7.3单元测试也要重构 22 4.8测试模拟(Mock) 22 4.9课后练习···· 22 4.10参考阅读..·. 22
2.5 Git的良好使用习惯 . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5.1 提交注释的质量 . . . . . . . . . . . . . . . . . . . . . . . 10 2.6 常用的工作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6.1 本地特性分支 . . . . . . . . . . . . . . . . . . . . . . . . 10 2.7 代码审阅和Gerrit . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.8 Git的缺点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.9 相关知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.9.1 几种协议 . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.10 课后练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.11 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.12 参考阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3 持续集成 13 3.1 环境准备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 持续集成流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3 Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3.1 安装Maven . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3.2 Maven仓库管理器:Nexus . . . . . . . . . . . . . . . . . . . 14 3.3.3 第一个maven命令 . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.4 体会两层缓存 . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4 持续集成服务器:Jenkins . . . . . . . . . . . . . . . . . . . . . . 16 3.4.1 安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4.2 安装Git插件 . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4.3 系统配置Maven . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4.4 设置构建任务 . . . . . . . . . . . . . . . . . . . . . . . . 16 3.5 如何实施持续集成 . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.6 相关知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.7 课后练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.8 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.9 参考阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4 如何写好Java程序 19 4.1 环境准备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2 代码风格和编程规范 . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3 安全代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.4 单元测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.5 代码覆盖率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.6 重构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.7 测试驱动开发 TDD . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.7.1 测试驱动开发的步骤 . . . . . . . . . . . . . . . . . . . . . 21 4.7.2 单元测试就是文档 . . . . . . . . . . . . . . . . . . . . . . 22 4.7.3 单元测试也要重构 . . . . . . . . . . . . . . . . . . . . . . 22 4.8 测试模拟(Mock) . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.9 课后练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.10 参考阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
火龙果·整理 uml.org.cn 5需求管理和实例化需求 25 5.1环境准备 25 5.2需求的困惑· 25 5.2.1测试人员的工作文档 26 5.3用实例化来解决需求的问题 26 5.3.1主要过程模式 2 5.3.2网上书店一个例子 27 5.3.3常见问题 29 5.4如何实施.........。... 30 5.4.1循序渐进和现有流程的结合 30 5.4.2贴在墙上 31 5.5相关知识..·.·.·. 31 5.6课后练习···· 31 5.7小结..····· 吧 5.8参考阅读······ 31 6用Cucumber来实例化需求 33 6.1环境准备...... 男 6.2 Cucumber简介 33 6.3安装······· 34 6.4运行Cucumber..·. 34 6.5业务层:Gherkini语言 35 6.6驱动层·· 36 6.7常用的目录结构···· 36 6.8继续网上书店的例子···· 9 69常见问颗.....」 37 6.9.1我们的系统没有接口能够被这么(或容易)测试得? 37 6.9.2 Cucumber用起来了,也自动化了,但是没人看? 37 6.10相关知识............. 37 6.11课后练习..... 37 6.12小结····· 38 6.13参考阅读.·· 38 7项目实践:Game of life 39 71常见问题...。........ 39 7.l.1过度承诺(over commit)# 39 7.1.2没有团队精神 4 39 7.1.3缺少计划和工作方式的制定 39 72小结。·。········ 40 附录A培训示例模板 41 A.1时间安排.··· 41 A.2培训的材料···· 41 A.3培训负责人准备工作 。 41 A.4反馈.········ 42
5 需求管理和实例化需求 25 5.1 环境准备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2 需求的困惑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2.1 测试人员的工作文档 . . . . . . . . . . . . . . . . . . . . . 26 5.3 用实例化来解决需求的问题 . . . . . . . . . . . . . . . . . . . . . . 26 5.3.1 主要过程模式 . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3.2 网上书店一个例子 . . . . . . . . . . . . . . . . . . . . . . 27 5.3.3 常见问题 . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.4 如何实施 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.4.1 循序渐进和现有流程的结合 . . . . . . . . . . . . . . . . . . 30 5.4.2 贴在墙上 . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.5 相关知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.6 课后练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.7 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.8 参考阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6 用Cucumber来实例化需求 33 6.1 环境准备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.2 Cucumber 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.3 安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.4 运行Cucumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.5 业务层:Gherkin语言 . . . . . . . . . . . . . . . . . . . . . . . . 35 6.6 驱动层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.7 常用的目录结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.8 继续网上书店的例子 . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.9 常见问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.9.1 我们的系统没有接口能够被这么(或容易)测试得? . . . . . . . 37 6.9.2 Cucumber用起来了,也自动化了,但是没人看? . . . . . . . . . 37 6.10 相关知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.11 课后练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.12 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.13 参考阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 7 项目实践:Game of life 39 7.1 常见问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 7.1.1 过度承诺(over commit)### . . . . . . . . . . . . . . . . . 39 7.1.2 没有团队精神 . . . . . . . . . . . . . . . . . . . . . . . . 39 7.1.3 缺少计划和工作方式的制定 . . . . . . . . . . . . . . . . . . 39 7.2 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 附录 A 培训示例模板 41 A.1 时间安排 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 A.2 培训的材料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 A.3 培训负责人准备工作 . . . . . . . . . . . . . . . . . . . . . . . . . 41 A.4 反馈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
-99% 火龙果·整理 uml.org.cn 附录B企业版本控制的改革:走向Gt 43 B.1了解最新技术-分布式版本控制(DVCS)#··········· 43 B2尝试在日常中使用分布式版本控制·················· 43 B3宣扬和推广分布式版本控制····················· 44 B4详细研究版本迁移························· 44 B.5开始在小范围实施···· 44 B.6推广、并引入Gerrit做代码审查··············· 45 45
附录 B 企业版本控制的改革:走向Git 43 B.1 了解最新技术-分布式版本控制(DVCS)## . . . . . . . . . . . . . . . 43 B.2 尝试在日常中使用分布式版本控制 . . . . . . . . . . . . . . . . . . . 43 B.3 宣扬和推广分布式版本控制 . . . . . . . . . . . . . . . . . . . . . . 44 B.4 详细研究版本迁移 . . . . . . . . . . . . . . . . . . . . . . . . . . 44 B.5 开始在小范围实施 . . . . . . . . . . . . . . . . . . . . . . . . . . 44 B.6 推广、并引入Gerrit做代码审查 . . . . . . . . . . . . . . . . . . . . 45 B.7 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45