TDD之旅

作者: LittleAnt | 来源:发表于2019-08-16 17:50 被阅读0次

    关于TDD我都经历过什么:

    最开始对TDD的理解很表面,只知道TDD就是先写测试,再写实现,由于大家(当然包括我自己)的开发习惯一时间很难改变,TDD并没有真正的在项目里落地,尽管管理者一直大力宣扬TDD的好处。经历过TDD从上而下的推行,最后由于大多数的develop各种原因没有实行起来。。。今年终于有机会领略真正的TDD了,也深刻的理解到了TDD的好处。故事时这样开始的

    TDD开发流程

    进入RR Team两个月了。本Team专业TDD“二十年”哈。 Team里的每一张story卡都是以TDD的方式,由两个developer pair,完成的。一个人写TestCase,一个人写实现(负责把TestCase跑过)。下面就说说我们team的TDD开发工作流程。

    1. tasking:首先拿到story卡,分析需求,拆分成多个tasks,通常每个task会和testcase一一对应,当然要具体需求具体分析。 task的验收标准就是,完成所有的tasks,整个story就算完成了。

    2. 和QA开卡,确定要交付的东西,保证大家上下文一致。

    3. write test case and run failed

    4. write logic code in order to pass test case

    5. pass test case

    6. 重复第3步和第四步,直到完成所有task

    Bug来了:

    当拿到一个bug需要修复时,第一件事情就是写测试或者修改之前的测试。 

    bug原因:逻辑被遗落了,说明时tasking的时候没有考虑全面,少些了某个task或者时测试用例。 这时候首先要做的就是补上这个测试用例,

            * step1: 补测试用例

            * step2: test failed

            * step3: write logic code

            * step4:test passed

    bug原因:现有的 test case不符合业务需求,

            * step1: 修改已有的测试用例

            * step2: test failed

            * step3: write logic code

            * step4:test passed

    TDD的好处

    保证程序健壮性。

    及时反馈(无需启动环境,配置前后端,手动操作页面或者借助工具向服务端发送请求,借助测试框架可以直接运行Test case,省去很多时间)。

    每个测试只关注一件事情,明确小目标,避免了开发过程中由于复杂逻辑的实现,而忽略了最终或者最初的需求。可以总结为以下几点:,

    (https://www.jianshu.com/p/62f16cd4fef3)

    >**降低开发者负担**

    通过明确的流程,让我们一次只关注一个点,思维负担更小。

    >**保护网**

    TDD 的好处是覆盖完全的单元测试,对产品代码提供了一个保护网,让我们可以轻松地 迎接需求变化 或 改善代码的设计 。

    所以如果你的项目需求稳定,一次性做完,后续没有任何改动的话,能享受到 TDD 的好处就比较少了。

    >**提前澄清需求**

    先写测试可以帮助我们去思考需求,并提前澄清需求细节,而不是代码写到一半才发现不明确的需求(自从使用了TDD后代码写到一半才发现这根本不是需求想要的情况基本不会出现,亲身体会)。

    >**快速反馈**

    >有很多人说 TDD 时,我的代码量增加了,所以开发效率降低了(几年前我对此坚信不疑)。但是,如果没有单元测试,你就要手工测试,你要花很多时间去准备数据,启动应用,跳转界面等,反馈是很慢的。准确说,快速反馈是单元测试的好处。

    谁把CI搞红了!!!

    将Test case纳入pipeline。这样当有测试失败时,大家会及时发现。说明新的提交破坏了原有的逻辑(这个逻辑被测试覆盖)。

    相关文章

      网友评论

          本文标题:TDD之旅

          本文链接:https://www.haomeiwen.com/subject/avihpftx.html