TDD周期是测试,代码,重构,(重复)然后发货。 TDD意味着由测试驱动的开发,特别是意味着理解需求,然后在开发或编写代码之前先编写测试。
我的自然倾向是支持TDD的哲学偏见;我想确信有其他方法现在比TDD更好或甚至更好,所以我问过这个问题。还有其他一些问题表明TDD昂贵,难以实施,提出了挑战......同意,但有什么好的选择呢?
完全可接受的方法的优秀示例有哪些不使用/需要/需要测试驱动开发?
我可以想到很多不是TDD的方法,但可能比它们的价值更麻烦...它不是道德判断,只是它们的成本高于它们的价值......以下是只是作为学习练习可能正常的事情的例子,但我发现在严肃的制作中不接受的方法,而不是TDD可能包括:
答案 0 :(得分:4)
洁净室软件工程是一种方法,一方面听起来非常僵硬,静态,“不敏捷”,几乎与TDD的相反,但在另一方面它实际上非常相似。例如,它是高度迭代的,就像所有敏捷方法一样。与TDD一样,您首先编写规范,但与TDD不同,规范采用正确性的数学证明形式而不是可执行测试。
TDD周期
洁净室循环
我将测试放在括号中,因为它们通常是(半)自动生成的。因此,虽然它们是开发周期的一部分,但它们并不是程序员必须完成的工作的一部分。
据我所知,Cleanroom的性能指标与TDD非常相似,这让我相信TDD的真实值实际上并不在测试部分,它在思考部分。执行一个实验很有意思,你可以用一个简单的秒表替换TDD的“红色”部分,它可以锁定键盘30秒,然后你就可以编写一个新的方法。
答案 1 :(得分:2)
有些情况下自动测试不相关或无法实施:
我想说有很多案例无法用自动脚本来完成这项工作 - 大多数需要人类技能的人类反应和质量评估。
没有自动测试是完全有效的。
答案 2 :(得分:1)
这实际上运作得很好。没有等待需求完成,QA正在进行早期构建,利益相关者从头到尾都在解决问题(因为QA / dev没有足够的信息可供他们使用)。唯一的另一面是没有重构。但是,嘿,如果用户感到高兴并且产品在短短3个月内就用完了,从而节省了大量资金,重构/ SOLID原则无关紧要......但只有当原始开发人员不在时,维护才会成为一种痛苦。颈部。