Tasking

Taking的好处

  1. 梳理业务需求:高效沟通
  2. 进行复杂度估算:独立交付价值

业务需求->Tasking->使用TDD开发

TDD

实践过程中赋予TDD的三层含义

  1. Task-Driven Development
  2. Test-Driven Development
  3. Test-Driven Design

Tasking的不同视角

  1. 面向技术实现的Tasking(根据业务场景的复杂度)
  2. 面向业务需求的Tasking(首先进行)

面向业务需求

面向业务需求的Tasking需要穷举所有业务场景,包括边界条件

面向业务需求的价值

  1. 独立价值交付:具有独立价值交付,每完成一条即可进行交付
  2. 高效沟通:采用业务语言描述列表,有助于开发人员与业务人员更好的沟通

面向技术

基于技术实现的TDD是如何实现的

例:Given 用户名密码When登录 Then 登录成功

  1. 编写LoginController
  2. 集成Identity服务验证用户名、密码
  3. 生成Token并返回

Tasking场景的三个维度

  1. Happy Path //正常状态下
  2. Alternate Path //边界
  3. Sad Path //非法

TDD 实践

测试案例三小步:

  1. 红:保证测试案例没有编译错误,运行后报错 //验证测试案例确实能捕获错误

  2. 绿:修改被测代码到刚好通过 //保证所有被测代码都被测试所覆盖

  3. 重构:整理代码,消除重复 //分离关注点,快速反馈


TDD的价值

  1. 澄清目标:TDD不是“先写测试”,而是“先写需求”,明白自己要实现的目标是什么
  2. 及时反馈:每写完一小步就进行单元测试,可以很快就得到反馈
  3. 减少调试:由于进行了多个单元测试,可以减少90%的调试过程
  4. 优化设计:重构环节就保证了每小段代码的优化
  5. 构建安全网:TDD的测试案例覆盖率很高,修改任何代码,一键就可以对整个系统测试,有问题可以及时发现解决
  6. 提高开发体验:确保每小步都正确,合起来也极少会出现问题

怎样学好 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/
作者
liu shun
发布于
2021年9月16日