Why Fit/FitNesse?

24

使用Fit/FitNesse而不是xUnit风格的集成测试有什么意义?在我看来,它的语法非常奇怪且不够清晰。

难道使用它只是为了让产品负责人编写测试吗?他们不会!对于他们来说太复杂了。那么为什么应该使用 Fit/FitNesse 呢?

更新 所以它只适用于业务规则测试吗?

4个回答

20
整个重点是与非程序员一起工作,甚至是像商业应用程序的潜在用户这样完全非技术性的人,讨论应用程序应该做什么,然后将其放入测试中。虽然使测试工作变得太复杂了,但他们应该能够讨论填写在例如Word中的示例数据表。而且很棒的是,与传统规范不同,这些文档随着您的应用程序而存在,因为自动化测试会强制您更新它们。
请参见James Shore的Introduction To FitFit Workflow,并按照链接查看其余文档。

更新: 取决于你所说的业务规则是什么?;-) 有些人会理解得非常狭隘(比如在业务规则引擎中等),而另一些人则非常广泛。

在我看来,Fit 是一个工具,它允许您在文档中编写业务(作为领域)用例,并提供丰富的现实示例,最终用户或领域专家(在某些领域)可以理解、验证和讨论。同时,这些示例以机器可读形式存在,因此可以用于驱动自动化测试。您既不需要完全自己编写文档,也不需要要求他们这样做。相反,它是协作和讨论的产物,反映了对应用程序将要做的内容的日益增长的理解,双方都能参与其中。随着进展,示例变得更加丰富,更多的边角用例被解决。

重要的是应用程序将要做什么,而不是如何做。它是一种功能规格说明书。因此,它相当广泛,而不是按模块组织。

从示例中得出的测试将测试应用程序在业务角度上重要的外部行为。是的,你可以称之为业务规则。但是让我们看看迭戈·詹西克(Diego Jancic)关于信用评分的例子,只是有点变化。如果 Fit 文档的一部分是 1)列出属性及其得分,然后 2)提供客户数据并检查结果,那么实际的业务规则是哪些:得分表(属性及其得分)还是计算每个客户的分数的应用程序逻辑(基于得分表)?哪些被测试了?

Fit/FitNesse测试似乎更适合验收测试。其他测试(当您不关心与客户、用户、领域专家等的合作,只想自动化测试时)可能会更容易以更传统的方式编写和维护。xUnit非常适合单元测试和API测试。每个Web框架都应该有一些用于Web应用/服务测试的工具,集成在其修改-构建-测试-部署周期中,例如Django有其小型测试客户端。您有很多选择。
您总是可以编写自己的工具(或最好调整现有工具),以更好地适应您特定领域的某些测试。

还有一个普遍的想法。通常(不总是!)更好的方法是将测试、"业务规则"以及几乎任何内容编码为某种形式的明确定义数据,由一些简单、通用的代码解释。这样就可以轻松地以其他方式使用数据:生成文档、迁移到新的测试框架、将应用程序移植到新的环境/编程语言、用于检查符合某些外部规则或其他系统(只需发挥想象力)。从代码中提取此类信息要困难得多,例如简单的硬编码单元测试或业务规则。

Fit将测试用例存储为数据。由于其预期使用方式,它具有非常特定的格式,但仍然如此。您的领域特定测试可能会使用不同的格式,如简单的CSV、JSON或YAML。


链接已失效。Gojko Adzic的文章已经404错误。 - Lei Yang
@LeiYang 感谢您指出死链接。看起来作者删除了这篇文章。我已经删除了整个侧边栏提示。 - Tomek Szpakowicz

4
这里的思路是,你(程序员)定义了一个易于理解的格式,比如Excel表格。然后,产品负责人输入那些非业内人士难以理解的信息...你只需通过运行Fit验证您的代码是否符合PO的期望。 xUnit中使用的方式可用于为程序员提供易于理解或简单信息的输入。 如果您需要在xUnit测试中输入很多具有多个字段的奇怪示例,那么阅读起来将变得困难。
想象一种情况,您需要根据年龄、婚姻状况、子女数量、工资、活动等因素来决定是否向客户发放贷款。 作为程序员,你无法编写这些信息;而风险经理也无法编写xUnit测试。

1

有助于减少回归和错误测试中的冗余。建立可管理的测试用例库。就像建立一次,永久使用。


0

在QA和开发团队合作期间,它非常有用:QA可以向开发人员展示失败测试的结果,开发人员将轻松帮助解决环境问题,并理解重现错误的步骤。它适用于UI甚至API测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接