所以这一直是我脑海中浮现的一段时间.我已经看到了它的提及,我已经阅读了健身网页,但我还是不太了解它.似乎Fitnesse是另一个测试框架,如NUnit或MbUnit或任何其他测试框架,因为您定义了您想要查看的输入和输出,但它似乎旨在测试整个应用程序而不是单元.
如果是这样,它是如何运行的?您是否需要使用挂钩设计您的应用程序以进行适合性测试?它的测试范围究竟在哪里下降?有人能给我一个很好的例子,说明在何处以及如何使用合适的测试以及有哪些优点/缺点?
NUnit/MbUnit和FitNesse之间的区别在于NUnit/MbUnit用于单元测试,而FitNesse用于验收测试.
单元测试测试单个小的代码单元,例如方法,以确保它按程序员的意图执行.例如,您可以使用单元测试来确保阶乘计算方法为一组数字返回正确的结果,包括一些边缘情况.
验收测试旨在测试是否满足高级设计要求.举个例子,如果你正在编写一个吃豆人克隆,其中一个要求是"当上一个级别的最后一个点被吃掉时,新的等级开始",验收测试将测试是否整个需求是一个整体代码满足 - 不是消耗点的特定代码片段,检查结束条件和加载新级别(尽管该代码将在运行验收测试的过程中执行).验收测试通常是在不考虑要求的具体实施的情况下编写的.
许多QA部门手工执行长验收测试列表,这可能非常耗时.Fit和FitNesse是帮助自动化验收测试的工具,可以节省大量时间.
关于Ward Cunningham维基的验收测试有很多很好的信息.
我工作的最后一家公司使用FitNesse取得了一定程度的成功.它并不意味着以与NUnit相同的方式使用,其中测试的程度非常精细.FitNesse更多地用于"验收测试",涉及不太精细的"大规模"测试.为了比较这两者,我们假设我们正在编写一个应用程序来处理银行的支票:
如果我们用NUnit编写单元测试,我们将测试Check对象,Transaction对象,TransactionProcessor工厂的每个单独方法,测试我们的数据访问层的每个方法等.你的测试非常接近源代码.
如果我们正在编写验收测试,我们可能会设置一天的交易,提示应用程序处理交易,并确保代码生成正确的发票声明和报告.您处于比单元测试更高的级别,通常是在一个有利位置,您可以立即测试所有应用程序业务规则.
单元测试告诉程序员代码是否包含任何缺陷,验收测试告诉业务分析师应用程序满足用户期望.
FitNesse测试用例旨在由没有技术知识的人编写.您仍然需要程序员编写DLL以向FitNesse公开应用程序的内部,但是否则用例应该由非技术人员编写,他们对源代码一无所知(即业务分析师和QA) .
我的公司使用FitNesse来测试我们的一个"核心"应用程序,这些应用程序恰好是在20年的时间里使用类似COBOL的语言编写的.核心应用程序没有单元测试,几乎不可能用原始语言创建单元测试框架.此外,该语言具有COM绑定,这些绑定将一些公共方法暴露给.NET和Java,这使我们能够在20年内第一次为该应用程序编写自动化测试用例.它不漂亮,但商界人士喜欢它.