Open cuixiaorui opened 4 years ago
角色互换很重要。
写代码只是让测试通过
写测试 = 设置游戏关卡
写代码 = 闯关
当测试通过的时候 = 闯关成功
闯关成功的时候感觉太爽了
这一般是指产品经理给的需求,一个特别大的需求,也可以称为开发任务。
由大需求转变为一个个验收条件(一般可以问 BA 或者产品经理来确认)着一步的重点在于沟通!!!
而整理出来的一个个验收条件就可以作为我们写程序的最外层的测试。这里称为 BDD 或者叫 ATDD(叫啥不重要)
用大白话来讲,就是说你这个功能怎么叫做完?那必须满足一个个条件,那么这一个个条件就是验收测试。
这时候就需要先想,怎么才能搞定这个验收测试,分为几步才能搞定。
举例:
把大象放到冰箱:
着一步十分关键,也称为 tasking ,这个拆分的思想将会一直伴随着我们整个 TDD 过程
通过上一步的拆分,我们可以知道要做哪一步才能满足验收测试了。着时候就可以着手写单元测试了。这里还有一个重要的点在于,如果我们在写单元测试的时候发现当前的这个步骤太大,那么我们是可以递归的进行在 tasking 的!!!这个理解很重要很重要!!!
当我们通过不断的递归,完成所有的小问题后,那么最外围的测试自然就搞定了。最终的 ATDD 测试通过就算任务完成
大需求 = 验收测试1 + 验收测试2 + 验收测试3
验收测试1 = A + B + C
A = D + E + F
B = Q + W + E
C = x + y + z
这个过程无限递归,直到任务完成
任务拆分,分而治之
。。。。没法搞上来 TODO
递归不断的把大问题分解成小问题,用分而治之的思想来解决最终的大问题,这个思路在算法上就有所体现,在 TDD 上也是一样。
其实 tasking 就是分而治之的思想体现。
理解了任务拆分
理解了递归
整个思路就算通了
剩下的无非是如何测试的问题,选择什么工具来测试
行为驱动开发(BDD):定义系统的行为是主要工作,而对系统行为的描述则变成了测试标准
TDD 怎么实施
自底而上分析
如果你一开始,就去碰 Unit Test , 跪 - 噶嘣脆
为了Unit Test , 你需要 TDD 的套路,问题就变成 测试用例 有哪些,边界在哪,从哪来?
要得到适当的测试用例 (测试用例不是越多好), 你就需要验收标准, 验收标准从哪里?
要 验收标准 ,就需要 用户故事
举个例子:
把大象放进冰箱 (验收标准 BDD)
如何满足呢
拆分步骤
单测就是基于这个拆分步骤形成
接着对 1.2.3 步骤一一加单测即可
如果步骤 1.2.3.还是太大 那可以递归进行拆分
感想
写 TDD 和我们在生活里去完成一件事情一样。
首先,我们需要先确定要完成的事情是什么(目标) --> 验收标准
接着,我们把目标拆分成小步可测量的行动 --> unit test
然后,把小步可测量的行动完成 --> 通过测试
最终,我们完成了我们的目标
这一套思想看来不管是放在编程中,还是在日常的学习中都是相同的,而且其原理都是一样的。