使用Fit/FitNesse而不是xUnit风格的集成测试有什么意义?在我看来,它的语法非常奇怪且不够清晰。
难道使用它只是为了让产品负责人编写测试吗?他们不会!对于他们来说太复杂了。那么为什么应该使用 Fit/FitNesse 呢?
更新 所以它只适用于业务规则测试吗?
使用Fit/FitNesse而不是xUnit风格的集成测试有什么意义?在我看来,它的语法非常奇怪且不够清晰。
难道使用它只是为了让产品负责人编写测试吗?他们不会!对于他们来说太复杂了。那么为什么应该使用 Fit/FitNesse 呢?
更新 所以它只适用于业务规则测试吗?
更新: 取决于你所说的业务规则是什么?;-) 有些人会理解得非常狭隘(比如在业务规则引擎中等),而另一些人则非常广泛。
在我看来,Fit 是一个工具,它允许您在文档中编写业务(作为领域)用例,并提供丰富的现实示例,最终用户或领域专家(在某些领域)可以理解、验证和讨论。同时,这些示例以机器可读形式存在,因此可以用于驱动自动化测试。您既不需要完全自己编写文档,也不需要要求他们这样做。相反,它是协作和讨论的产物,反映了对应用程序将要做的内容的日益增长的理解,双方都能参与其中。随着进展,示例变得更加丰富,更多的边角用例被解决。
重要的是应用程序将要做什么,而不是如何做。它是一种功能规格说明书。因此,它相当广泛,而不是按模块组织。
从示例中得出的测试将测试应用程序在业务角度上重要的外部行为。是的,你可以称之为业务规则。但是让我们看看迭戈·詹西克(Diego Jancic)关于信用评分的例子,只是有点变化。如果 Fit 文档的一部分是 1)列出属性及其得分,然后 2)提供客户数据并检查结果,那么实际的业务规则是哪些:得分表(属性及其得分)还是计算每个客户的分数的应用程序逻辑(基于得分表)?哪些被测试了?
Fit/FitNesse测试似乎更适合验收测试。其他测试(当您不关心与客户、用户、领域专家等的合作,只想自动化测试时)可能会更容易以更传统的方式编写和维护。xUnit非常适合单元测试和API测试。每个Web框架都应该有一些用于Web应用/服务测试的工具,集成在其修改-构建-测试-部署周期中,例如Django有其小型测试客户端。您有很多选择。还有一个普遍的想法。通常(不总是!)更好的方法是将测试、"业务规则"以及几乎任何内容编码为某种形式的明确定义数据,由一些简单、通用的代码解释。这样就可以轻松地以其他方式使用数据:生成文档、迁移到新的测试框架、将应用程序移植到新的环境/编程语言、用于检查符合某些外部规则或其他系统(只需发挥想象力)。从代码中提取此类信息要困难得多,例如简单的硬编码单元测试或业务规则。
Fit将测试用例存储为数据。由于其预期使用方式,它具有非常特定的格式,但仍然如此。您的领域特定测试可能会使用不同的格式,如简单的CSV、JSON或YAML。
有助于减少回归和错误测试中的冗余。建立可管理的测试用例库。就像建立一次,永久使用。
在QA和开发团队合作期间,它非常有用:QA可以向开发人员展示失败测试的结果,开发人员将轻松帮助解决环境问题,并理解重现错误的步骤。它适用于UI甚至API测试。