TDD系列4-企业如何落地TDD

    认识TDD了,也做过技术实践,感受到了TDD的作用和价值,那在企业中如何让TDD落地实施呢?笔者在此分享下实践经验。

把握核心价值不偏离

    TDD核心价值是通过先编写测试代码,后编写让测试通过的功能代码,使代码简洁可用和高质量,能快速响应变化,并加速开发过程。如何理解这些核心价值:
代码简洁可用:测试代码是目标,功能代码只需要让目标通过即可,不需要各种假设应对代码,假设的都在测试代码中。因此代码是没有多余的,而且随时可用。
代码高质量:TDD下的功能代码相比于传统模式,Bug更少,因此代码质量更高。
能快速响应变化:当变化发生时,直接重构即可,测试代码就是安全阀,测试人员都不需要过多介入,因此是快速相应变化。而传统模式下,程序员担心问题就多,特别是复杂业务或人员变更,重构都需要很大勇气和较多的时间预留,因此说不上能快速响应变化。
加速开发过程:仅从第一道编写功能代码来说,TDD确实增加了代码量,拖慢了开发速度。但就整个项目过程来看,相比于传统模式下反复改Bug+反复测试,整体开发过程是加速了,更不用说在整个软件生命周期中,应对需求变更、人员变更、Bug修改等各种情况,TDD会节省大量的后期工作量。
    参与人员应当围绕核心价值去实践、去体会与去改进;否则,就容易形式大于内容,就像敏捷开发热潮下,大多数团队最后只学了个晨会和看板了。

基本原则

    小步快跑,范围适度。

落地前提

1、上级支持:上级(最好副总级别或以上)要了解TDD的价值,愿意持续(在TDD价值显现前至少6个月)支持。
2、落地负责人对TDD兴趣大,强烈认同TDD的作用和价值,启动阶段亲自参与实践。
3、启动阶段参与落地的同事需技术好,技术兴趣浓厚,内驱力强,强烈的求知欲。
4、需认识到可能碰到的困难,并做好对应措施。
如果能满足以上4点,可以启动TDD落地实践;如果不满足,则先当成个人爱好学习和践行就可以了。

启动阶段

1、确定参与落地实践人员,人员不要多,2-3人即可。在落地项目前,大家需要学习TDD并有一定的练手。
2、选定落地项目:项目时间有1个月或以上,人均任务不能超级紧(如需996模式才能完成的项目就不要想了)。
3、落地目标-功能范围:功能不要多,几个核心功能即可(核心功能特点:功能相对复杂、使用频度高、数据容错性低,如商城的订单计算就是典型的核心功能)。
4、落地目标-架构分布:从架构角度确定在哪些地方实施TDD。以层式架构来说,可选择控制层、服务层、数据层均实现,也可只选择服务层、数据层来实现。
5、落地目标-技术标准:服务层外部调用是否mock(不mock如何解决);数据层哪些要TDD,哪些不TDD。该标准可以在开始是全面实现,在落地中可以裁剪,核心是落地小组要达成一致,需调整时要沟通。
6、落地实践:
6.1:需求分析:分析实践功能需求:业务流程、业务规则、功能数据、关联功能与关联数据等。
6.2:设计接口:从表现层分析,从控制层概设,从服务层开始详细设计接口。
6.3:实现接口:编写一个用例测试代码-编写功能代码-运行使通过,如此反复直到覆盖功能全部情况。此处最大问题是关联服务是否需要mock。选择建议是:权衡mock好处与代价(mock最大好处是使代码独立;最大难处是mock的数量和mock对象的稳定性)。在熟悉的架构中,功能调用的下层实现(如服务层调用数据层)不mock,外部复杂的mock,外部不复杂的不mock。
7、记录与调整:记录过程情况,特别是碰到问题及解决方式。根据项目情况及时调整落地实践,包括技术、项目进度、人员变化等,尽量保持项目目标和TDD落地目标两个都达成。
8、总结:根据过程记录进行总结,并由此制定相关TDD的实践规则;准备好案例,用于推广培训。

推广阶段

    经过1-2项目的落地实践总结,通常可以进入推广阶段。
1、推广原则:小步快跑,逐步推广。最好先推广到落地实践的团队,再推广到其它团队。切忌一下推广面太大。
2、推广步骤
2.1 推广培训:提高参与人员TDD的认识,展示落地实践过程与效果,激发参与人员的兴趣。
2.2 技术支持:全力支持和及时帮助很重要,让参与人员尽快渡过开始适应期。前行的实践人员在一定时期内可作为专职支持人员,快速解决大家碰到各种问题。
2.3 总结提升:吸取各个团队经验,总结提升后再传播到其他团队,直至形成成熟的组织级TDD研发模式。

    任何技术都存在落地的难题,TDD也一样,不能因为过程中碰到困难就动摇。办法总比问题多,只要我们积极面对,大家群策群力,相信很快就能克服这些磨折,只要坚持,终将享受到TDD甜蜜的果实。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐享技术

每一个打赏,都是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值