任何使用可执行要求的人吗?

时间:2020-03-05 18:40:00  来源:igfitidea点击:

以我对它们的有限经验,已证明可执行需求(即将所有需求指定为损坏的自动化测试)非常成功。我从事的一个项目中,我们非常重视创建高级自动化测试,该测试利用了给定用例/用户故事的所有功能。让我感到非常惊奇的是,在我们开始这种实践之后,开发变得如此容易。编写测试后,实现功能变得非常容易,并且我们能够对系统进行重大的体系结构更改,并充满信心,使世界上所有工作仍与昨天一样。

我们遇到的最大问题是,用于管理这些类型的测试的工具不是很好。我们使用了Fitnessit相当多,因此我现在讨厌Fit框架。

我想知道1)是否有其他人有使用这种测试驱动的需求定义进行开发的经验,以及2)大家都使用了哪些工具来促进这一工作。

解决方案

回答

我的经验仅限于个人项目,并且发现了与我们提到的相同的优势。我推荐http://metacpan.org/pod/Test::Simple::Tutorial,这是我尝试基于测试的开发的灵感。 Perl测试模块似乎非常有用且灵活,尽管我没有什么可比拟的。

我还认为测试对于项目的维护期至关重要。如果我们有良好的测试开始,那么它将节省大量时间和以后的错误。我希望我在当前项目中投入了更多的工作进行测试。

回答

我发现使用合同是一种很好的方法。元编程合同通常比我们描述的集成测试的类型低,但是两者肯定不是互斥的。我发现合同可帮助保持文档,实施和测试的所有同步-这是TDD的主要问题(不是非TDD中不是问题)。

回答

我还使用的主要工具是FitNesse。我已经在多家公司使用过,效果非常好。我们确实有成千上万的测试用例,而且我们在组织和使用它们的方式上必须非常严格。

我尝试了其他一些工具,包括编写自己的DSL(特定于域的语言)和使用RSpec之类的工具。我非常喜欢RSpec,但肯定比起企业版,它更像是一种开发人员工具。

我知道Rick Mugridge一直在开发一个名为ZiBreve(http://www.zibreve.com/visit.php?page=index)的工具,该工具应该具有更强大的重构支持。我自己没有使用过,但是我认识Rick,并且已经和他交谈了好几次。我知道在Agile 2008上已经讨论过一些不同的方法来处理Fitnesse测试。

除此之外,我还没有看到很多好的工具。甚至WinRunner之类的工具也适合进行QA类型测试,但是对于企业需求的探索性测试而言,FitNesse或者自定义DSL似乎是当前的选择。

回答

我已经试过Fitnesse及其非常糟糕的功能(尤其是与SVN集成)。
我们公司还开发了具有Fit引擎的类似开源工具:FitPro

我使用的另一个出色工具是Concordion。它具有html格式的唯一缺点要求

回答

我们可能想看一下机器人框架(http://robotframework.org)。它类似于FIT,但希望可以更轻松地集成到不同的测试工具,版本控制和持续集成中。测试数据中不同的抽象级别也使维护数据变得更加容易,并且当单独的测试数据编辑器变得更加成熟时,维护变得更加容易。快速入门指南介绍了该框架的最重要功能,并且还充当了可执行演示。

回答

我必须使用,测试和设置fitnesse以及它的竞争对手之一GreenPepper才能用于我的工作,我能说的是:

GreenPepper是一个confluence插件(confluence是atlassian的企业Wiki),在"企业"级别的工具中具有许多我们需要的东西,几乎不需要甚至不需要其他工作:

  • 更好的用户友好性-丰富的文本-Wiki语法(使非技术人员更容易使用)
  • 它与许多开发工具很好地集成在一起:Eclipse,VB,maven2和Nant插件,我进行了最多的测试,并感到非常满意。
  • 用户和访问权限由合流管理,也就是说,这很好并且可以利用likin数据库(根据工作地点可能是强制性的)
  • 可能需要或者可能不需要的许多其他功能:ssl支持,远程执行(将wiki安装在unix上,如果正在处理C#项目则在Windows上执行或者反向)
  • 看起来更好:D

GreenPepper的主要缺点是:配置相当困难且文档很差(尽管他们似乎正在努力并且他们在论坛上回答得非常快),而且它不是免费的,我们必须为Confluence和GreenPepper付出代价可能加起来很多。

我认为Fitnesse非常基础,很容易设置,很有效,但仅此而已,我们可以使用开源社区开发的一些Fitnesse插件,甚至可以使用一些Fit插件,例如Eclipse插件(构建skeletton来自fitnesse测试文件中的夹具,前提是它以.fit扩展名,非常有用)。集成不是很理想,认证和访问权限管理很差,但是它是免费的,而且如果我们需要某些东西,则可以做到这一点,因为它是开源的。