Tasking
Taking的好处
- 梳理业务需求:高效沟通
- 进行复杂度估算:独立交付价值
业务需求->Tasking->使用TDD开发
TDD
实践过程中赋予TDD的三层含义
- Task-Driven Development
- Test-Driven Development
- Test-Driven Design
Tasking的不同视角
- 面向技术实现的Tasking(根据业务场景的复杂度)
- 面向业务需求的Tasking(首先进行)
面向业务需求
面向业务需求的Tasking需要穷举所有业务场景,包括边界条件
面向业务需求的价值
- 独立价值交付:具有独立价值交付,每完成一条即可进行交付
- 高效沟通:采用业务语言描述列表,有助于开发人员与业务人员更好的沟通
面向技术
基于技术实现的TDD是如何实现的
例:Given 用户名密码When登录 Then 登录成功
- 编写LoginController
- 集成Identity服务验证用户名、密码
- 生成Token并返回
Tasking场景的三个维度
- Happy Path //正常状态下
- Alternate Path //边界
- Sad Path //非法
TDD 实践
测试案例三小步:
红:保证测试案例没有编译错误,运行后报错 //验证测试案例确实能捕获错误
绿:修改被测代码到刚好通过 //保证所有被测代码都被测试所覆盖
重构:整理代码,消除重复 //分离关注点,快速反馈
TDD的价值
- 澄清目标:TDD不是“先写测试”,而是“先写需求”,明白自己要实现的目标是什么
- 及时反馈:每写完一小步就进行单元测试,可以很快就得到反馈
- 减少调试:由于进行了多个单元测试,可以减少90%的调试过程
- 优化设计:重构环节就保证了每小段代码的优化
- 构建安全网:TDD的测试案例覆盖率很高,修改任何代码,一键就可以对整个系统测试,有问题可以及时发现解决
- 提高开发体验:确保每小步都正确,合起来也极少会出现问题
怎样学好 TDD
遵循 守、破、离
Pair的方式
线下结对编程
线上通过Zoom以Navigator-Observer的形式
线上通过Zoom以Ping-Pong的形式
沟通产生统一Task,异步完成
重构时常用的快捷键
- 重命名文件、方法、属性等(rename):SHIFT+F6
- 提取当前选择为变量(extract variable):CTRL+ALT+V
- 提取当前选择为属性(extract field):CTRL+ALT+F
- 提取当前选择为常量(extract constant):CTRL+ALT+C
- 提取当前选择为方法(extract method):CTRL+ALT+M
- 提取当前选择为方法参数(extract parameter):CTRL+ALT+P
- 重构类、方法(change signarture):CTRL+F6
- 提取代码块至if、try等结构中(surround with):CTRL+ALT+T
- 创建模块文件等(new):CTRL+ALT+N
- 创建测试用例(test):CTRL+SHIFT+T
- 重构菜单(refactor for this):CTRL+T
Tasking
https://l1ushun.github.io/2021/09/16/tasking/