Wil*_*ler 27 .net unit-testing functional-testing testdrivendesign
我最近听说过单元测试的功能测试.
我知道单元测试从最原子的形式测试给定代码片段的每种可能性.但功能测试怎么样?
这听起来像只测试代码是否有效,但它是否像单元测试一样可靠?
我被告知有两个关于这个问题的学校.某些人更喜欢单元测试,其他人更喜欢功能测试.
有没有什么好的资源,链接,书籍,任何参考文献或者你们中的任何一个能够解释和完善我的主题的人?
谢谢!
jas*_*son 26
单元测试与功能测试不是一个xor,而是一个and.单元测试是关于单独测试单元的,而功能测试是关于在整合中测试整体(所有单元是否一起正常工作?).
两者都是良好软件工程实践的必要组成部分.
Tru*_*ill 25
杰森的回答是正确的.不同类型的测试具有不同的目的,并且可以分层以获得最佳结果(良好的设计,满足规范,减少缺陷).
这些类别之间存在一些重叠; 例如,单元测试可以指定行为.
还有其他人; 比大多数人更关心,请参阅软件测试.
人们错过的一点是单元测试是孤立地测试代码片段.例如,良好的单元测试不会影响数据库.这有两个好处:它使测试运行得很快,因此你会更频繁地运行它们,它会迫使你编写松散耦合的类(更好的设计).
你问了资源; 我推荐Roy Osherove的书"用.NET中的例子进行单元测试的艺术".虽然没有一本书是完美的,但这本书给出了许多关于编写好测试的优秀指导.
编辑:对于针对现有软件编写测试,没有什么比Michael Feathers的" 有效使用遗留代码 "一书更好.
RHS*_*ger 11
单元测试测试您的代码单元(方法等),以确保它们按照您的期望执行.
功能测试测试您的系统设计,以确保碎片正确交互.如果你编写一个带有int和int的命令并返回一个字符串并完全测试它,你可以确定它是有效的.但是,如果您没有进行系统测试,您可能永远不会注意到其余代码认为它可以接受null,但它不能.
两种类型的测试都很重要.
编辑:为gbjbaanb所说的添加略有不同的视图:
以上所有内容都很有用,但它们并不相互排斥.你应该做大部分时间,但你花在每个部分上的时间取决于你从中得到的结果,就是这样.如果您的代码太模块化而无法轻松进行单元测试,那么请花费精力进行功能测试.如果你正在编写一个小型组件库,花时间对它们进行单元测试,如果你正在为军用导弹编写控制系统,你肯定应该对它们进行现场验收测试(即使失败也很有趣:))