说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

什么叫做基于测试驱动?不明白

编辑:说三道四文库 发布时间:2018-06-22 09:33
HTML文档下载 WORD文档下载 PDF文档下载
xp中地基于测试驱动地精髓在什么地方?
xp强调代码就是设计,是不是说明代码地迭代将会非常地高。是不是有点原型法地味道?
在《最后期限一书》中提到,尽可能推迟你地编码,让设计占到项目地绝大部分时间。
请问xp有没有方法学经过验证能够保证设计地完备性?
自己顶一下先。

期待高手出现
测试驱动TDD,考虑的是在你完成一项你要作的工作前,你必须知道你作的工作究竟是什么,并且你要有方法去验证你究竟作了什么,而没有作什么。也就是你要首先对你目标作出一个明白无误的检验指标,并且这个指标必须可以得到真实的验证。这就好像你说我以作一个漂亮的插图,可是你怎么认定那个图片到底漂亮还是不漂亮呢?
而XP强调尽快的去编码,就是对设计的最大重视。XP首先认为,设计工作是一个复杂的工作,也是一个容易犯错误的工作。对设计的正确性必须得到证实,而证实的最后方法就是去实现它们。如果你不去实现,就很难发现那些隐秘的错误。而且我觉得即使你去实现了,在你没有做到完备的检测的时候,错误一样不是很容易暴露。而完备的测试是不可能的。而XP在代码共享,结对编程,特别是用重构这个强大武器的支持,需要你尽早的去验证你的设计。也就是说你不需要什么方法学上的验证,你需要让那些代码去验证它所反映的设计。
Test Driven Development:先写好项目的测试案例、脚本、甚至代码,然后开发项目。

譬如需要开发一个类,里面有二十个方法。在开发之前,首先写好这二十个方法的测试代码,然后再开始开发这些方法。在开发过程中需要不断运行这些测试代码,以保证这些方法确实能够提供所需要的结果。

当开发结束的时候,测试也就结束了。
就好像你说我以作一个漂亮的插图,可是你怎么认定那个图片到底漂亮还是不漂亮呢?
很漂亮的文字,设计是很复杂的问题,测试标准也是。

始终不能摆脱需求的笼罩,项目是为需求而做,也就是说设计工作必须围绕需求展开, 而jeffyan77(jeffyan77)提到的似乎是是先找到测试方法,然后确定设计(不知道我是不是误读) ,“对设计的正确性必须得到证实”在我看来只不过是解决“一种结构上的可行性”,(对应于up当中的可行性分析)。
“如果你不去实现,就很难发现那些隐秘的错误”这句话也是我对设计先行的质疑,《最后期限》中提到的:“事实上90%的错误来源于设计,而测试这些代码有占用项目相当的时间,因此要想大规模缩短交付时间,唯一的办法就是完善设计,尽可能的推迟编码”,在他的例子中,设计几乎占用了80%的时间。他们好像更倾向于宏观的设计(相信没有不可能完成的技术细节),而xp强调的编码--测试,在这种演化的工程中,是谁又起的引导作用?还是需求吗?


首先要明确,xp所说的测试,是一种验证行为。这种行为本身就是一种设计。这种设计是为需求而作的。他从反面理解和约束正常的设计所对于需求的偏差。也就是说,正常的设计+测试设计才能更好的让你的总体设计贴近需求。
另一方面,每种理论都有其条件和假说。“最后期限”讲的是稳定的需求、成熟的技术;而agile则侧重变化的需求和不断进步的技术。所以会产生看似相反的两种观点。仔细品一下,其实并没有什么冲突。最后的期限所讲的类似于RUP的工程方法同样也倡导测试现行,起码在编程开发之前。他们都是以需求为基础,这里把测试看成设计的一个部分,是为了更紧密地说明不能通过测试的功能一个也不要加,不能通过测试的代码一行业不要加。
第三,测试驱动(简单的说就是测试先行),可以促进你直接关注接口,降低耦合。
可见,xp是如此的紧扣需求。这就使编码变成了有意图的工作。设计指导编码,测试用例约束编码。xp强调的简单设计,小步快跑,所以测试显得更为重要。

最后,不要只看一点,xp的14条原则要统一起来看,他们不是相互割裂和孤立的。
建议阅读《敏捷软件开发 原则、模式与实践》。绝对的好书!
需求永远是第一位的。当你在XP中确定一个需求的同时,就要求客户对这个需求写出测试案例。
测试先行不只是让你找到测试方法,而是要实际先去做好测试的准备。比如在你写一个类的时候,你只是先写出这个类的界面。然后你不要去实现它,而是先去写这个类的单元测试。写好这些测试,你先运行一下它们。如果你得到的测试结果都是没有通过,那么好你就作对了。然后你就要具体的实现那些类,实现以后你在运行那些测试。测试的结果如果有错误,那么就说明的编码有错误。除掉BUG,继续测试。最后当你的所有测试都通过了,那么你的类就写好了。这只是测试先行在编码时候的体现,其实测试先行的思想在XP无处不在,无时不在。
而在XP中其实需求就是测试,添加需求就意味着添加新的测试,修改需求也意味着测试在修改。
恩,完全同意ozzzzzz对于xp中测试过程的描述。
其实测试就和设计一样,也就是说把测试无缝的融合到设计当中(在编程之前),使测试避免停留在技术性的代码测试上,而focus在需求和模块接口这样的关键点上。xp要实现简单设计的目的,就要用测试先行来消除简单设计所带来的可能性的大的偏差。通过测试方案的制定,就把编程变成了有意图的实现需求。可见,xp中设计和测试密不可分。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘