我目前正在开展一个项目,在那里我使用NUnit进行单元测试,使用Moq进行模拟,使用MSpec编写规范并使用WebAii测试UI.
虽然我总体上享受了这方面的经验,并且充分了解了测试的内容和方法,但我还是想知道这四种工具是否有点落伍.
单元测试是否有点荒谬?有可能过头了吗?在你看来,什么是合理的测试和什么是不必要的细节?
编辑:
要清楚,我所写的测试数量并不是因为我正在使用的工具的广度.四个似乎很多,但如果其他人使用这种阵容效果良好,我想听听它.
Spo*_*ike 29
一些开源软件项目确实使用了几个测试框架.如果项目的开发人员不想推出他们自己的模拟,常见的设置是使用模拟框架的单元测试框架.
您可以快速完成单元测试"过度杀伤",您可能已经达到了它.一般来说,有几种方法可以过度测试,这会破坏TDD,BDD,ADD以及您使用的任何驱动方法的目的.这是其中之一:
当您开始编写其他类型的测试时,就会达到单元测试过度杀伤,就好像它们是单元测试一样.这应该通过使用模拟框架(测试仅隔离到一个类的交互)和规范框架(测试功能和指定的需求)来修复.许多开发人员之间存在混淆,他们似乎认为以同样的方式处理所有不同类型的测试是一个好主意,这会导致一些肮脏的混合.
尽管TDD专注于单元测试,但您仍然会发现自己正在编写功能,集成和性能测试.但是,您必须提醒自己,它们的范围与单元测试有很大不同.这就是为什么有许多测试工具可用,因为有不同类型的测试.使用许多测试框架没有任何问题,并且大多数测试框架彼此兼容.
所以写单元测试时有一对夫妇的甜蜜点考虑编写测试时:
unit test dirty hybrids integration test
--------- ------------- ----------------
* isolated * using many classes
* well defined | * tests a larger feature
* repeatable | * tests a data set
|
| | |
| | |
v v v
O <-----------------------------------------------------> O
^ ^ ^
| | |
sweet spot world full of pain sweet spot
Run Code Online (Sandbox Code Playgroud)
单元测试很容易编写,你想写很多.但是如果你编写一个具有太多依赖关系的测试,一旦需求开始改变,你将会得到很多工作.当代码在具有太多依赖关系的单元测试中断时,您必须检查许多类的代码而不是一个且只有一个类.这意味着您必须检查其所有依赖关系,以查看问题所在,这在TDD意义上违背了单元测试的目的.在一个大型项目中,这将是非常耗时的.
这个故事的寓意是,不要将单元测试与集成测试混淆.因为简单地说:它们是不同的.这并不是说其他类型的测试很糟糕,但是应该将它们视为规范或健全性检查.仅仅因为测试中断,它们可能不是代码错误的指示.例如:
唯一要记住的是以易于区分和发现的方式组织测试.
有时候通常可以省略测试用例,因为通过手动烟雾测试进行验证更容易,并且不需要花费很多时间.在这种意义上的手动烟雾测试是您启动应用程序以自行测试功能或未编码您的东西的其他人的操作.也就是说,如果您要编写的自动化测试是以下所有内容:
...然后将其编写并作为手动测试用例进行测试.如果测试用例需要几天的时间来编写,手动测试烟雾只需要一分钟,这是不值得的.
| 归档时间: |
|
| 查看次数: |
1592 次 |
| 最近记录: |