写点什么

StoryTeller 与可执行规范-采访 Jeremy D.Miller

  • 2009-09-07
  • 本文字数:2053 字

    阅读完需:约 7 分钟

StoryTeller 是一个开发“可执行规范”的.NET 开源项目,项目的创建者Jeremy D.Miller 在上周宣布 StoryTeller 的预览版。InfoQ 针对 StoryTeller 是什么、与 Fit/FitNesse Cucumber 这些工具有什么不同、以及项目未来的发展采访了 Jeremy。

InfoQ: StoryTeller 是什么?

Jeremy: StoryTeller 是一个可以在.NET 项目中创建“可执行规范”的工具。想象一下,有一天你作为开发人员得到了一份详细的需求文档,而这份文档同时 也能够被业务人员所理解,完全避免了双方在对系统行为理解上的不一致,而且它还能够在持续集成环境中被当作自动化测试来运行。StoryTeller 使这 一切在.NET 环境中成为可能。

InfoQ: 是什么促使你编写 StoryTeller 的?

Jeremy: 我曾经在好几个公司和项目中使用 FitNesse 来创建自动化测试,有非常丰富的经验。我喜欢使用 FitNesse 来编写易于人们阅读的自动化测试,但是我的团队在使用 FitNesse 时常常遇到问题。我原本是 想为 FitNesseDotNet 库创建一个新的编辑器和测试管理工具,但做了一段时间后,放弃了这种方式,并从头开始创建了专门为.NET 打造的全新测 试引擎。一路走来,我认为我比当初设想的做得更好。我希望能有一种工具,可以做 FitNesse 能做到的事,同时还拥有更简洁的测试语言,更方便的机制来 让开发人员编写自动化测试代码,以及更容易与版本控制和持续集成工具整合。

而且坦率地说,开发开源软件的经历让我成为更好的开发人员。

InfoQ:你认为 StoryTeller 和其它类似的工具有什么不同,比如 Fit/FitNesse 和 Cucumber?

Jeremy: 让我澄清一下,StoryTeller 的目的是成为.NET 平台上更好的 Fit/FitNesse,它的大部分灵感都来源于我之前在 FitNesse 上的 经验。StoryTeller 使你能够创建“套件 (Fixture)”类来实现和创建“语法”,以便用英语语法来表达测试用例,在这一点上它与 FitNesse 很相似。它与 FitNesse 的不同是,StoryTeller 使用“映射机制”来显示 html 而不是像 FitNesse 那样解析 html。另一个不同则是工具方面,FitNesse 需要你在 Wiki 中以某种特定格式编写测试,这通常也是抱怨最多的地方;而 StoryTeller 使 用 WPF 编写的客户端程序来编写测试,这可以加快创建测试的速度。

Cucumber 是一个 Ruby 工具,它与 StoryTeller 要解决的问题是一样的,但是机制不一样。你可以使用 Cucumber 和 IronRuby 来为.NET 代码编写可执行规范,但是使用与功能代码相同的语言来编写测试会得到更多的好处。今天你可能使用 Cucumber 和 Ruby 来编写测试,因为 它能创建易于阅读的测试,但是通过 StoryTeller,你的开发人员可以使用 C#来编写这些测试

InfoQ: StoryTeller 只是开发人员的工具么?

Jeremy: 目前,StoryTeller 更倾向于给开发人员使用,因为你需要写代码,但是从长远来看,StoryTeller 将是测试人员和业务伙伴利用自动化验收测试表达需求的工具。我们的(一个)测试人员在很多地方都使用 StoryTeller。

InfoQ: StoryTeller 可以很容易的与 CI 工具集成么?

Jeremy: 当然,这是 StoryTeller 架构的主要目的之一。StoryTeller 中的一切都是“可 xcopy 部署”的。StoryTeller 测试只是存储 在文件系统中的 Xml 文件,工具本身对要测试的二进制文件的位置没有任何假设。对于 CI 构建,StoryTeller 包含一个命令行工具,可以在任何支持 命令行的构建工具中使用。我们使用 JetBrains Team City 来运行我们的 StoryTeller 测试套件,而且已经将测试结果集成到了我们的 Team City 网站。

InfoQ: 看来你已经在 Dovetail 项目中自己先试用 StoryTeller 了,这对于它的发展有多大帮助?

Jeremy: 试用 StoryTeller 是非常重要的。基于我们的使用经验,我消除了性能瓶颈。基于我们第一轮测试的负面反馈,我找到了一些方法来让创建套件 (Fixture) 和语法 (Grammar) 构件更加方便。早些时候,我们发现一些只用于生成测试语法的重复代码,于是我们在自动化测试中消除了这些重复。基于我们使用它的反馈,我经常需要改进 StoryTeller 显示测试结果和错误的方式,以便能更容易找到测试失败的原因。不久前,我投入了很多时间来让 StoryTeller 更好的处理编码错误,以便让开发人员在测试代码不工作时,能够知道到底发生了什么。最近,我们的团队终于加入了一个测试人员。她使用 StoryTeller 的方式和遇到的问题促使我加入最后一些功能,以便让编写测试更加容易。

InfoQ: 未来 StoryTeller 将会如何发展?

Jeremy: 最近可能不会有太大的进展。我希望能够从早期的使用者那里得到反馈。目前,StoryTeller 主要是面对开发人员,你至 少需要在编写测试之前,将套件 (Fixture) 的骨架代码写出来 -我是有意这么做的,因为 Dovetail 团队在很长时间里都只有开发人员,因此 StoryTeller 是为我的团队优化的。今后,我将为测试人员和业务 人员提供某种方式,使他们能够不依赖于开发人员来编写测试,这样就可以在开发之前写出可执行的规范了。

InfoQ: 感谢 Jeremy,更多信息和源代码请登陆 StoryTeller 项目主页

查看英文原文: StoryTeller and Executable Specifications - Interview with Jeremy D. Miller

2009-09-07 21:37839
用户头像

发布了 63 篇内容, 共 22.2 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

【TcaplusDB】祝大家端午安康!

TcaplusDB

【TcaplusDB知识库】批量复制游戏区

TcaplusDB

vue-表单输入绑定

小恺

6月月更

【TcaplusDB知识库】TcaplusDB限制条件介绍

TcaplusDB

融云 x 川航: 为民航通信安上“即时之翼”

融云 RongCloud

Curve 进入 CNCF Sandbox,完善统一云原生开源存储拼图

网易数帆

开源 分布式 云原生 存储 cncf

大数据平台迁移实践 | Apache DolphinScheduler 在当贝大数据环境中的应用

Apache DolphinScheduler

Apache 大数据 开源 DolphinScheduler workflow

【TcaplusDB知识库】TDR表GOSDK示例代码-查询数据

TcaplusDB

@开发者 云端一条生产线,让软件开发更敏捷、更安全

华为云开发者联盟

云计算 敏捷 华为云 devcloud

华为云重磅发布:“乐高式”自动驾驶研发开放平台,携手伙伴共建生态

华为云开发者联盟

自动驾驶 云计算 华为云

要想自助洗车加盟赚钱记住这几点

自助洗车加盟

自助洗车加盟 自助洗车品牌

自助洗车市场悄然兴起你准备好了吗

自助洗车加盟

自助洗车 自助洗车加盟

【世界海洋日】TcaplusDB号召你一同保护海洋生物多样性

TcaplusDB

自助洗车机洗车怎么收费和付费

自助洗车加盟

自助洗车加盟 自助洗车收费 自助洗车付费

瀑布式项目管理软件测评!

PingCode

阿里云 MSE 基于 Apache APISIX 的全链路灰度方案实践

API7.ai 技术团队

阿里云 MSE APISIX 网关 全链路灰度

共享自助洗车机让你告别传统洗车

自助洗车加盟

共享自助洗车 自助洗车加盟

SRE,了解一下?35+岁程序员新选择

华为云开发者联盟

SRE 华为云

测试进阶必备,这5款http接口自动化测试工具不要太香~

伤心的辣条

Python 程序人生 软件测试 自动化测试 接口自动化测试

【TcaplusDB知识库】查看tcapdir目录服务器

TcaplusDB

开启全方位安全巡检

观测云

如何系统地学习 C++ 语言?太全面了!

Jackpop

FutureTask

周杰伦本人

6月月更

使用 Amazon EC2 降低 DeepRacer 的训练成本 DeepRacer-for-cloud 的实践操作

亚马逊云科技 (Amazon Web Services)

Amazon EC2 EC2

【TcaplusDB知识库】TcaplusDB技术支持介绍

TcaplusDB

【TcaplusDB知识库】查看业务密码

TcaplusDB

24H共享便民自助洗车加盟怎么样

自助洗车加盟

共享自助洗车 自助洗车加盟 24小时自助洗车 便民自助洗车

JDK7 HashMap如何实现?

源字节1号

软件开发 前端开发 后端开发 小程序开发

API 网关 Apache APISIX 助力雪球双活架构演进

API7.ai 技术团队

zookeeper 投资 网关 APISIX APISIX Summit

“互联网+”大学生创新创业大赛来了,欢迎报名龙蜥社区赛题!

OpenAnolis小助手

开源 操作系统 互联网+ 龙蜥社区 大学生创新创业大赛

【TcaplusDB知识库】修改业务修改集群cluster

TcaplusDB

StoryTeller与可执行规范-采访Jeremy D.Miller_.NET_Jon Arild Tørresdal_InfoQ精选文章