TDD和ATDD在开发流程中扮演着关键角色。TDD确保程序一开始就具备可测性,而ATDD则强调团队间的协作。不过,尽管TDD让程序变得可测,ATDD却常被误解,这确实是个问题。
TDD的基础作用
在开发过程中,TDD确保了程序从设计之初就具备可测试性。这种方法促使开发者从测试用例的角度来构思编码。比如,在一个大型项目中,开发团队遵循TDD流程,每次编写一个新功能,都会先编写一个失败的测试用例,以此确保功能的准确实现。许多小型创业公司,例如深圳的一家软件创业公司,也采用TDD来确保产品开发初期的质量。TDD已成为一种广为人知的保障代码质量的方法。
不断重构代码有助于提高代码质量,这是因为随着开发过程中业务逻辑的增多,原有的代码结构需要不断优化。例如,许多互联网应用在经过几个版本迭代后,就需要进行代码重构,这显著增强了代码的易读性和维护性。测试如同一张保护网,它能在代码发生改动时迅速提供反馈,确保开发过程始终在有效的监控之中。
ATDD的概念演变
2002年,KentBeck首次提出ATDD这一概念,他所说的ATDD是指针对应用程序的测试驱动开发。那时的ATDD与如今的定义有所差异。KentBeck当时对ATDD持保留态度,首先,他认为测试装置的配置存在技术难题。试想,在早期开发环境相对简陋的情况下,要搭建复杂的测试装置确实不易。其次,他提出,测试用例的编写责任从开发人员转移到了其他非开发人员,这无疑增加了他们的工作量。原本只需关注业务需求的业务人员,现在还需协助编写测试用例。
然而,时至今日,ATDD已被广泛接受,被视为一种依赖业务客户、开发者和测试人员间交流的合作式开发模式。这种认识的转变,正是开发流程不断适应新需求的表现。
FIT框架解决技术问题
2002年,Ward推出了FIT框架。这个框架至关重要,它能让客户利用Excel制定验收标准实例,并且实现自动化执行。比如,在某个企业的项目里,业务人员可以直接在熟悉的Excel表格中填写验收标准。而开发人员则可以借助这个框架迅速进行测试和验证。这样的做法有效地解决了KentBeck所担心的测试设备技术难题,极大地促进了ATDD的进步。
STDD中的协作模式
STDD把客户、开发者和测试人员提前聚在一起。他们一起商定要实现的具体功能或故事。比如,一家传统企业转型互联网业务,在开发新电商平台时,运用了STDD。通过大家协作,确定了用户登录功能的开发故事。接着,客户和测试人员设定了验证故事有效性的标准,并制作了可执行文档,方便团队任何成员查阅,从而提高了团队信息的透明度。
在STDD的协作模式下,已经证实,即便是在敏捷XP方法中,测试编写职责的转移也并非不可逾越的障碍。这一发现,也为ATDD的发展提供了宝贵的借鉴经验。
ATDD的核心理念
ATDD这个名字虽含“测试”二字,却并不仅限于验收测试。其核心理念强调多方协作,将业务需求具体化,转化为可自动执行的验收测试。以开发在线教育产品为例,业务人员提出课程购买功能需求,开发、测试和业务人员共同合作,将这一需求转化为明确的测试标准,以此推动功能开发,确保开发方向与业务需求相符。这种做法与传统开发仅重视技术实现的思路截然不同。
ATDD相关概念SBE
2011年,GojkoAdzic提出,”测试”这个概念对业务人员来说难以理解。他们通常认为测试与需求工作不相关。在现实情况中,许多业务人员并不乐意参与与测试相关的会议。因此,在GojkoAdzic的书中,他采用了“实例化需求”这个术语,有时也称作SBE。他认为,实例化需求的实践与BDD的核心内容相似,但为了避免混淆,他没有使用BDD这个术语。
大家都在思考,在未来的开发过程中,这种需要多方紧密合作的ATDD开发模式,是会变得越来越普遍,还是会逐渐变得更加简便?期待大家的点赞、转发,更欢迎在评论区展开热烈的讨论。