有人可以帮我解释Fit Testing吗?

时间:2009-01-12 17:46:27

标签: testing agile fitnesse

所以这一直是我脑海中浮现的一段时间。我已经看到了它的提及,我已经阅读了fitness web page,但我仍然不太了解它。似乎Fitnesse是另一个测试框架,如NUnit或MbUnit或任何其他测试框架,因为您定义了您想要查看的输入和输出,但它似乎旨在测试整个应用程序而不是单元。

如果是这样,它是如何运行的?您是否需要使用挂钩设计您的应用程序以进行适合性测试?它在测试的范围内实际上下降了吗?有人能给我一个很好的例子,说明在何处以及如何使用合适的测试以及有哪些优点/缺点?

5 个答案:

答案 0 :(得分:12)

NUnit / MbUnit和FitNesse之间的区别在于NUnit / MbUnit用于单元测试,而FitNesse用于验收测试。

单元测试测试单个小的代码单元,例如方法,以确保它按程序员的意图执行。例如,您可以使用单元测试来确保阶乘计算方法为一组数字返回正确的结果,包括一些边缘情况。

验收测试旨在测试是否满足高级设计要求。举个例子,如果你正在编写一个吃豆人克隆,其中一个要求是“当上一个级别的最后一个点被吃掉时,新的等级开始”,验收测试将测试是否整个需求是一个整体代码满足 - 不是消耗点的特定代码片段,检查结束条件和加载新级别(尽管该代码将在运行验收测试的过程中执行)。验收测试通常是在不考虑要求的具体实施的情况下编写的。

许多质量保证部门手工执行长验收测试清单,这可能非常耗时。 Fit和FitNesse是帮助自动化验收测试的工具,可以节省大量时间。

Ward Cunningham's wiki有很多关于验收测试的好信息。

答案 1 :(得分:6)

我工作的最后一家公司使用FitNesse取得了一定程度的成功。它并不意味着以与NUnit相同的方式使用,其中测试的程度非常精细。 FitNesse更多地用于“验收测试”,涉及不太精细的“大规模”测试。为了比较这两者,我们假设我们正在编写一个用于处理银行支票的应用程序:

  • 如果我们用NUnit编写单元测试,我们将测试Check对象,Transaction对象,TransactionProcessor工厂的每个单独方法,测试我们的数据访问层的每个方法等。你的测试是非常接近源代码。

  • 如果我们正在编写验收测试,我们可能会设置一天的交易,提示应用程序处理交易,并确保代码生成正确的发票声明和报告。您处于比单元测试更高的级别,通常是在一个有利位置,您可以立即测试所有应用程序业务规则。

单元测试告诉程序员代码是否包含任何缺陷,验收测试告诉业务分析师应用程序满足用户期望。

FitNesse测试用例旨在由没有技术知识的人编写。您仍然需要程序员编写DLL以向FitNesse公开应用程序的内部,但是否则用例应该由非技术人员编写,他们对源代码一无所知(即业务分析师和QA)

我的公司使用FitNesse测试我们的一个“核心”应用程序,这些应用程序恰好是在20年的时间里使用类似COBOL的语言编写的。核心应用程序没有单元测试,几乎不可能用原始语言创建单元测试框架。此外,该语言具有COM绑定,这些绑定将一些公共方法暴露给.NET和Java,这使我们能够在20年内第一次为该应用程序编写自动化测试用例。它不漂亮,但商界人士喜欢它。

答案 2 :(得分:1)

FitNesse基本上是wiki,它存储了所有测试用例。最有可能用于验收测试。在测试第一次开发中,测试用例应该只在需求收集阶段编写,即客户也将被包含在编写测试中,这些测试往往会编写有关验收测试的测试......

因此,如果应用程序满足所有用户要求,则不需要单独的验收测试。

缺点是,当需求发生变化时,测试用例也会发生变化,但当然这并不是什么大问题。

fitnesse也适用于中小型项目。对于大型项目,它可能很笨拙,因为Fitnesse无法导出PDF文件,它只导出excel或worddoc等扩展表。因此它不能用于大型项目是一个缺点。

答案 3 :(得分:0)

从我的观点来看:它几乎不依赖于要测试的应用程序的挂钩。如果这没有开发出一个好的API,它几乎是无用的。不要尝试进行GUI测试。

答案 4 :(得分:0)

它可用于运行回归测试套件。它可用于在发布后检查数据库版本。它可用于测试存储过程。它可用于比较不同的环境。