# README

极客学院 实战营 · 程序员练功房 · 中国极限编程实践者社群

## 极限编程，测试驱动开发

我们清晰地看到，在中国的 IT 行业，已经有一批打着“敏捷”大旗、却回避敏捷最核心的开发技术实践的“[中华田园敏捷](https://www.zhihu.com/question/328042540)”实践者和传播者。有鉴于此，我们认为，有必要旗帜鲜明地重申敏捷软件开发的一些最为根本的原理：

* 缺少**可重构性**的软件，不可能快速响应变化。
* 没有高覆盖率、快速运行的**单元测试**，重构就不可能落地。
* **测试驱动开发**是获得高质量单元测试集的唯一有效方法。
* 建立在充分覆盖且运行快速的自动化测试基础上的**持续集成**是迭代式开发的必要条件。

> 摘自 [eXtremeProgramming.cn](http://www.extremeprogramming.cn/content/about-us.html)，**极限编程**是唯一将开发技术实践提到核心地位、并围绕开发技术实践构建起完整软件交付流程的敏捷方法论。

## 实战营基本信息

### 实战营介绍

前端测试驱动开发（TDD）实战训练营，通过 21 天的极限编程冒险之旅，掌握测试驱动开发核心实践，进阶前端技能，提高开发效率。

### 教练简介

JimmyLv 吕靖

中国极限编程实践者社群 高级教练

前 **Thought**Works 咨询师，资深开发工程师，Tech Lead，全栈工程师，偏爱前端，熟悉 Web 开发（React/Vue）、小程序等技术，熟练掌握测试驱动开发（TDD）、重构、持续集成等极限编程开发实践。曾服务于澳洲某大型金融保险企业与品牌电商解决方案公司，承担架构设计、团队管理、企业内训、敏捷流程改进等职责。「在成长的同时帮助他人成长，在学习的同时帮助他人学习」，活跃于 [GitHub](https://github.com/JimmyLv) 开源社区，开源项目《React 学习之道》翻译组织者。同时特别乐于分享：[博客](https://blog.jimmylv.info/)，[演讲](https://lecture.jimmylv.info/) 和 [知乎专栏](https://www.zhihu.com/people/JimmyLv)，研发和主讲过多项技术系列课程和工作坊。

Leizeng 曾磊

中国极限编程实践者社群 高级教练

前 Thoughtwork 高级咨询师，高级架构师，敏捷教练，前端专家，DevOps 专家，熟练掌握 TDD，结对编程，重构等极限编程实践。热爱开源社区，开源文化拥护者。曾服务于澳洲大型保险公司，承担技术管理，技术培训和技术咨询，敏捷教练，架构设计，敏捷交付管理等职责。目前在纳斯达克上市公司宝尊电商，任职高级架构师。

### 学习简介

在学习这门课程之后，你会掌握什么样的编程技能呢？

* 以终为始：每次编码明确需求目标，明晰用户行为验收路径；
* 任务分解：实例化需求产出测试用例，框定需求范围减少浪费；
* 自动化测试：让机器给予你最及时的反馈，提供功能回归保障；
* 持续重构：调整程序代码改善软件的质量、性能，快速响应变化。

## 课程内容

* [总-课程目标](https://jimmylv.gitbook.io/tdd-frontend/01-goal)
* [总-课程安排](https://jimmylv.gitbook.io/tdd-frontend/02-course)

## 五大实战项目

### [第一题：FizzBuzz 数字游戏](https://jimmylv.gitbook.io/tdd-frontend/coding/00-project-fizzbuzz)

目的：认识和理解 TDD 流程

### [第二题：MarsRover 火星车](https://jimmylv.gitbook.io/tdd-frontend/coding/01-marsrover)

目的：TDD Cycle 各环节的进阶学习

### [第三题：CommentBox 留言板](https://jimmylv.gitbook.io/tdd-frontend/coding/00-project-commentbox)

目的：组件级别的测试基础与要点

### [第四题：Bookshelf 魔术书架](https://github.com/JimmyLv/tdd-frontend/tree/6d1581e7e9c297c64c4a5a877307e1d9738381bf/articles/bookshelf/01-bookshelf.md)

目的：组件拆分，API 集成基础

### [第五题：ShoppingCart 购物车](https://jimmylv.gitbook.io/tdd-frontend/coding/01-project-shoppingcart)

目的：综合应用，测试驱动开发（TDD）工程实践
