- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Fit/FitNesse 代替 xUnit 风格的集成测试有什么意义?在我看来,它的语法非常奇怪且非常不清楚。
真的只是为了让产品负责人编写测试吗?他们不会!这对他们来说太复杂了。那么为什么每个人都应该 Fit/FitNesse 呢?
更新那么它完全适合仅用于业务规则测试吗?
最佳答案
重点是与非程序员(通常甚至是完全非技术人员,例如业务应用程序的潜在用户)合作,研究应用程序应该做什么,然后将其投入测试。虽然进行测试对他们来说确实太复杂了,但他们应该能够讨论填写的示例数据表,例如单词。最棒的是,与传统规范不同,这些文档与您的应用程序一起存在,因为自动化测试迫使您更新它们。
参见Introduction To Fit和 Fit Workflow作者:James Shore,如果需要,请点击链接查看其余文档。
<小时/>更新:取决于您所说的业务规则是什么意思? ;-) 有些人会非常狭隘地理解它(例如业务规则引擎等),而其他人则非常广泛。
在我看来,Fit 是一个工具,允许您在文档中写下业务(如在领域中)用例以及丰富的实际示例,最终用户或领域专家(在某些领域)可以理解、验证这些用例并讨论。同时,这些示例是机器可读的形式,因此它们可以用于驱动自动化测试,您既不需要完全自己编写文档,也不需要要求他们这样做。相反,它是仔细讨论和讨论的产物,反射(reflect)了双方对应用程序将要做什么的理解不断加深。随着您的进步,示例会变得更加丰富,并且解决了更多的极端情况。
重要的是应用程序将做什么,而不是如何做。这是功能规范的一种形式。因此它相当广泛,并不是真正按模块组织的,而是按使用场景组织的。
来自示例的测试将从业务角度来看重要的方面测试应用程序的外部行为。是的,您可以称之为业务规则。但让我们看一下迭戈·扬西奇的信用评分示例,只是稍作改动。如果适合文档的一部分是 1) 列出属性及其分数,然后 2) 提供客户数据并检查结果,那么实际的业务规则是:评分表(属性及其分数)或计算每个客户分数的应用程序逻辑(根据评分表)?哪些是经过测试的?
Fit/FitNesse 测试似乎更适合验收测试。其他测试(当您不关心与客户、用户、领域专家等的合作时,您只想自动化测试)可能会更容易以更传统的方式编写和维护。 xUnit 非常适合单元测试和 API 测试。每个 Web 框架都应该在其修改-构建-测试-部署周期中集成一些用于 Web 应用程序/服务测试的工具,例如。 django 有它的小测试客户端。您有很多选择。
并且您始终可以编写自己的工具(或者最好调整一些现有工具)以更好地适应(双关语)您感兴趣的特定领域中的某些测试。
<小时/>还有一个普遍的想法。通常(并非总是!!!)更好地以某种形式的明确定义的数据对您的测试、“业务规则”和任何东西进行编码,并由一些简单的通用代码片段进行解释。然后很容易以其他方式使用数据:生成文档、迁移到新的测试框架、将应用程序移植到新的环境/编程语言、用于检查与某些外部规则或其他系统的一致性(只需发挥您的想象力)。从代码中提取此类信息要困难得多,例如。简单的硬编码单元测试或业务规则。
Fit 将测试用例存储为数据。由于其用途,采用非常具体的格式,但仍然如此。您的特定领域测试可能使用不同的格式,例如简单的 CSV、JSON 或 YAML。
关于fitnesse - 为什么选择健身/健身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/598863/
我一直在尝试通过健身套件设置页面为数据库连接参数设置环境变量属性。我已经通过在单个测试页面上设置环境变量来对此进行了测试,当我这样做时,它确实在我的 fixture API 中得到了解决。但是当我将它
以前在我的 Fitnesse 装置中,我使用以下命令指定了预期的 WCF 异常: exception[FaultException] 从那时起,我将 WCF 服务转换为返回强类型的 FaultCont
在fitnesse.NET代码中是否有获取当前测试名称的API?我的 fixture 类继承了 fitlibrary.SequenceFixture。 最佳答案 您可以使用变量 ${PAGE_NAME
通过命令行运行 Fitnesse 测试时,我收到 ClassNotFound 异常 由 Java.lang.ClassNotFoundException:fitnesse.runner.testRun
我正在使用 Fitnesse 来测试我们项目的 API,并且我为每个接口(interface)创建了场景表,因此我们可以通过调用场景将请求发送到任何地方。现在我们需要基于随机循环计数来循环执行场景。
我想在 FitNesse 变量中存储以下字符串: !*< comment {{{ 和 }}} *! 不幸的是,它们包含大括号“{}”的事实对于 FitNesse 中的变量声明是有问题的,因为我必须这样
我在根级别有一个设置页面,工作正常。但是,当我在 FitNesse 中添加子维基时,我想在子维基级别放置一个设置页面。这会被包含在内,但根级别的 SetUp 不会包含在内。 例如,具有以下结构: Fo
我想在 FitNesse 变量中存储以下字符串: !*< comment {{{ 和 }}} *! 不幸的是,它们包含大括号“{}”的事实对于 FitNesse 中的变量声明是有问题的,因为我必须这样
我有一个测试套件,测试顺序如下: Suite1---A B C 如何更改测试用例的顺序? 我尝试过重构,但没有帮助。 最佳答案 看起来这不可能... Remembe
我有一个返回业务对象列表的 Fitnesse RowFixture。该对象有一个字段,它是一个代表 0 和 1 之间百分比的浮点数。业务对象的使用者将是来自设计者的网页或报告,因此百分比的格式将取决于
我正在为 Web 应用程序编写 Fitnesse 测试。测试项目之一是下拉框,其值由当前日期决定,格式为DD/MM/YYYY。 我认为在 Fitnesse 套件中使用 !today 变量可能是一种设置
我已经使用 Eclipse 使用某些方法实现了 Web 服务。 然后我把它导出到一个WAR文件,这个文件是要和Tomcat一起使用的。 然后我使用 wsimport 为我的网络服务创建“ stub ”
我正在尝试使用即 !|Execute|select * from abc| 在 DBfit 中获取 sql 查询输出,但不知道它将如何在 DBfit 中显示。 最佳答案 我认为您正在寻找 Inspec
我尝试通过 FitNesse 测试代码后收到错误“无法调用构造函数”。我该怎么做才能解决这个问题? 我已按照“https://www.softwaretestinghelp.com/getting-s
我问是因为我在 Google 中找到的所有示例都与 Fitnesse 教程中的相同:对内存中的列表或数组的非常简单的查询,而不是真正的数据库。 是的,Fixtures 永远不必处理这个问题,但是如果我
我希望能够将预先格式化的文本(即包含换行符)放入FitNesse灯具表的单个单元格中。有没有一种方法可以操纵FitNesse Wiki标记来做到这一点? 最佳答案 用 !- -!获取多行表格单元格,使
我正在使用 FitNesse 来测试 Web 服务响应,并使用 check 来比较预期响应与实际响应。 在某些情况下,检查失败,我无法看出导致检查失败的预期与实际之间的差异。 这是它在特定实例(许多类
运行健身测试时,我看到它被忽略(未运行)。我不明白为什么。下面是代码: #!include .ActionDefinitions !path C:\Users\rdixit\Documents\Vis
我已经阅读了 fitnesse 用户指南。但我似乎很难理解,因为我想测试一个网络服务。 问题如下我有一个请求 xml 文件和响应 xml 文件。在请求文件中,我有 userid 和 logon id
我刚刚继承了一个旧的 Java 代码库(大约 10 - 15 岁)。它没有任何自动化测试范围,或者至少当代世界知道它。首先,我打算围绕它编写一些 Fitnesse 脚本。 我知道 Concordion
我是一名优秀的程序员,十分优秀!