测试驱动开发类似于复式记账:
复式记账:每笔交易会写入账本两次
在一组账户中记一笔贷项,然后相应的在另一组账户中记为借项,这些账户最终汇总到收支平衡表文件中,如果差额不为 0,那么就出错了;
测试驱动开发需要每个必要的行为都输入两次:
一次作为测试,另一次作为使测试通过的生产代码;
当测试代码与生产代码一起执行时,失败的测试数为零;
TDD 三规则
TDD 可以描述为以下 3 条简单的规则:
先编写一个因为缺乏生产代码而失败的测试,然后才能编写生产代码;
只允许编写一个刚好失败的测试 – 编译失败也算;
只允许编写刚好能使当前失败测试通过的生产代码;
TDD 的好处:
假设有一个遵循三规则的程序员,该程序员的所有工作内容都在一分钟之前执行并通过全部测试,那么代表着这个程序员一分钟之前所有内容都是可以工作的;
即使出了问题,一分钟以内的故障都是小事一桩,根本不需要动用调试器来寻找问题。
基于 TDD 模式开发程序,不是不会遇到棘手的 bug,而是会降低 bug 的发生率和严重性;
重构是改善代码结构的实践,但并不改变由测试定义的行为;
在不破坏任何测试的情况下对命名、类、函数和表达式进行修改;
在不影响行为的情况下改善系统的结构;
在重构时,测试必须始终保持通过的状态;
编写可用的代码和整洁的代码是两个不同的维度,同时控制很难:
可以先以粗劣的想法草草的使代码工作起来;
然后,一旦代码工作起来了且通过测试,就对其重构;
重构是一个持续的过程,而不是定期执行的过程;
重构不应该出现在时间表上,也不应该出现在项目的计划中;重构是每分钟,每小时软件开发活动中不可分割的一部分。
规则如下:
所有测试通过;
揭示意图;
代码在工作之后还必须具备表现力;
消除重复;
减少元素;
结对可能的模式:
一个是手持键盘和鼠标的驾驶员,一个是眼观六路的导航员;
另一种是,一个人先编写测试,另一位编写实现该测试的业务代码,然后交换来实现;
结对不需要事先安排,根据程序员的喜好来形成或解散搭档;
结对是团队成员之间共享知识并防止形成知识孤岛的最佳方法;
结对不一定是两个人,也被称为“聚众式编程”;
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/S_numb/article/details/121719545
内容来源于网络,如有侵权,请联系作者删除!