Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing TDD:单元测试焦点_Unit Testing_Testing_Tdd - Fatal编程技术网

Unit testing TDD:单元测试焦点

Unit testing TDD:单元测试焦点,unit-testing,testing,tdd,Unit Testing,Testing,Tdd,TDD是否可以面向不同于单元测试的另一种测试?(BDD)将TDD的思想应用于集成测试和功能测试级别。从技术上讲,TDD是一种做事的方式,而不仅仅是单元测试,理论上它应该驱动所有的开发过程 理论上,其原理是测试驱动开发,对于更复杂的场景,如系统间的集成,您应该定义集成测试,然后编写代码以通过这些集成测试(即使测试不是自动化的) 虽然这在TDD的某些解释下是可能的,但我认为TDD的要点是在任何生产代码之前编写测试。考虑到这一点,您将不会有一个大型系统来编写集成或功能测试,因此测试必须在单元级进行。当

TDD是否可以面向不同于单元测试的另一种测试?

(BDD)将TDD的思想应用于集成测试和功能测试级别。

从技术上讲,TDD是一种做事的方式,而不仅仅是单元测试,理论上它应该驱动所有的开发过程


理论上,其原理是测试驱动开发,对于更复杂的场景,如系统间的集成,您应该定义集成测试,然后编写代码以通过这些集成测试(即使测试不是自动化的)

虽然这在TDD的某些解释下是可能的,但我认为TDD的要点是在任何生产代码之前编写测试。考虑到这一点,您将不会有一个大型系统来编写集成或功能测试,因此测试必须在单元级进行。

当然可以。TDD依赖于自动化测试,这是一个与“类型”测试正交的问题。

TDD的红绿重构周期应该很快,非常快。快速反馈让你保持最佳状态。我见过一些TDD的方法,这些方法需要一个完整的故事,将其表示为一个测试,然后驱动开发通过那个(大型ish)测试。它名义上是TDD(或者BDD),但我觉得它不对。小步骤,即单元测试,是我学习TDD的方式,是我对它的看法,也是它对我最有效的方式。

如果你专注于想法,而不是技术实现,那么答案是肯定的。我想说的是,如果您暂时忘记了单元测试,并且在编写实现之前,首先关注编写测试的想法,以便实现比系统级更清晰的设计

想象一下,你有一些要求。基于此,您编写了用户验收测试—捕获功能的高级测试。下一步您开始开发-您已经有了UAT测试形式的用例。您确切地知道所期望的是什么,因此更容易实现所需的功能

另一个例子是基于scrum的项目。在计划会议中,您讨论/创建/拥有稍后在sprint期间开发的用户故事。这些用户故事实际上可以是UAT测试


无论如何,我认为TDD是预先指定设计的方式,而不是应用程序测试周期/阶段/方法。TDD被视为单元测试同义词的原因是单元测试尽可能接近开发人员。它们似乎是开发人员表达类/方法功能设计的自然方式。

当然!TDD根本不需要单元测试。不幸的是,这似乎是一个常见的误解


作为一个具体的例子,我完全通过集成测试来驱动我的开源模拟库(用于Java)的开发。我不会为内部类编写单独的单元测试。相反,对于每个新特性或增强,我首先添加一个失败的验收(集成)测试,然后更改或添加到现有的生产代码,直到测试通过。对于最终的重构步骤,这是纯粹的TDD,即使没有编写单元测试。

多亏了我完全没有意识到这种开发:)我以前是这样想的。。我再也不想了:P你从哪里得到这个主意的?这是一个很好的观点…:)无论如何,我们可以使用功能测试开发软件吗?我想我们可以。你怎么想?嗯,是的,我不认为“提高一个档次”和只测试功能需求有什么主要问题。您可能最终很难对系统进行同样良好的测试。例如,一个由两个单元组成的系统,其中每个单元需要四个单元测试,可能需要十六个功能测试来达到相同的覆盖水平。增加组件的数量,所需的功能级别测试将爆炸,以确保涵盖所有案例。我想我是说,如果你想要TDD建议的出色的测试覆盖率,你可能需要单元测试。同意Calmh,这最终可能会导致我们找到一个与单元测试密切相关的TDD,以提高效率。非常感谢:)在开发人员编写代码的同时,我编写测试用例作为对规范的解释。如果我在他们完成代码之前完成了测试文档,我会给他们文档供他们试用。这与TDD具有相同的效果;在QA之前发现并修复了大量的bug。我们甚至发现了规范的错误解释,并为自己节省了一些昂贵的后期重写。这是并行进行的,而不是先进行测试,但根据我的经验,我会说,是的,可以将TDD的形式与其他类型的测试一起使用。我从来没有听说过可信的“TDD解释”,它说单元测试是唯一要编写的测试类型。有链接吗?谢谢回答Carl。是的,根据经验,单元测试可以工作得更好。BDD可能是个胖子:P再次感谢。SD