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

### 学习简介

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

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

## 课程内容

* [总-课程目标](/tdd-frontend/01-goal.md)
* [总-课程安排](/tdd-frontend/02-course.md)

## 五大实战项目

### [第一题：FizzBuzz 数字游戏](/tdd-frontend/coding/00-project-fizzbuzz.md)

目的：认识和理解 TDD 流程

### [第二题：MarsRover 火星车](/tdd-frontend/coding/01-marsrover.md)

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

### [第三题：CommentBox 留言板](/tdd-frontend/coding/00-project-commentbox.md)

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

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

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

### [第五题：ShoppingCart 购物车](/tdd-frontend/coding/01-project-shoppingcart.md)

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://jimmylv.gitbook.io/tdd-frontend/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
