Fit与 Fitnesse FIT : Framework for Integrated Test 的简称, 不要被其名称欺骗了, FIT实际上提供了一种非常方便的“验收测试”,属于软件工程V模型中很“高级”的测试,主要针对用户需求的。 FITNESSE: 是一个可以使用 FIT 的 WIKI,是FIT的wiki界面。关于FIT和FIENESSE,可从以下连接开始学习: 1、About Testing 2、http://fit.c2.com/ 3、http://www.fitnesse.org/
另外可以从下面的两个链接来试用,获得对FIT和FITNESSE的感性认识: 1、What and How Talk 2、Tow Minutes Example
The
Framework for Integrated Test for C/C++
1、http://ceefit.woldrich.com/index.jsp 2、http://www.fitnesse.org/FitServers.CppFit.CppTestTools
一、 Fit: Framework for Integrated Test
优秀的软件需要协作和沟通,在开发过程中,客户如何才能知道他们的程序员如何正确处理了事情呢?而程序员又如何知道客户究竟想的是什么呢?测试人员如何才能知道什么是正确的而什么又是错误的?让这些小组能有效和精确地交流应该是团队创建伟大软件的一个目标。 FIT就是一个用于增强交流和协作的工具。FIT创建了一个在客户和程序员之间的反馈循环。FIT让客户和测试人员可以使用诸如Microsoft Office之类的工具来给出程序应当如何表现的例子——而无需成为直接编码的程序员。FIT自动针对实际的程序检测那些例子,这样就在业务世界和软件工程世界之间建立了一个简单而且有效的桥梁。 有了FIT,客户可以通过将他们的主题相关的专业知识和想象引入实际的工作中,给开发过程直接提供更多的指导。客户所获得的更多关于目前产品开发中正在发生的东西的可见性,能让他们随时控制项目避免偏离目标。
FIT如何工作
FIT通过读取由类似MicrosoftWord之类的工具生成的HTML文件中的表格来进行工作。每一个表格通过一个程序员写的“装置”来进行解释。装置将通过运行实际的程序来检测表格中的例子。 在这个例子中,团队要建立一个产品用于计算职工的薪水。团队已经一起创建了一个包含一些如何计算小时薪水例子的FIT文档。
表格包含了例子。第一行告诉了FIT如何读取表格。第二行给出了例子的头,剩下的行给出了例子。例如,在第一个表格中的例子说:“如果某人工作了40个工时同时没有休息时,那么就付给$20每小时的薪水,然后他的总薪水是$800。” (虽然这个例子只使用了一个简单的表格格式来展示计算的结果,其实还有很多不同的表格格式可以使用。)
![Image Image]() FIT自动针对软件检验表格中的例子。在我们这个例子中,对前两个测试案例,软件给出了正确的解,所以FIT把表格单元标示为绿色。在最后一个测试案例中,软件给出了错误的解,所以FIT把这个表格单元标记为红色。这个软件说职员的总薪酬是$1,040,而期望的值是$1,360。 为了能让FIT能使用这个表格工作,团队的程序员创建了一个“设备”来告诉FIT如何和他们的软件交流。情况类似下面:
![Image Image]() 这个例子是用Java写的,实际上用C/C++也是可以的。程序员使用了一个ColumnFixture来将表格中的列映射到装置中的变量和方法上。前三列,提供了信息,对应于装置中的变量。最后一列,包含期望的值,对应于装置中的Pay()方法。要计算答案,程序员使用他们程序中的WeeklyTimesheet类。
结论
FIT给予了客户和程序员一个关于软件的精确交流的方法。客户所给的具体的例子让程序员能深刻理解将要构建的产品。程序员的对于装置的工作和软件可以让客户给出不同的例子进行试验来获取对于软件如何真正工作更深入的了解。这样通过一起工作,整个团队可以学会更多关于产品的内容并产生更好的结果。
二、Fitnesse
感受FitNesse最直接的方式就是下载并运行fitnesse,然后按照“A step by step example to create an run a simple acceptance test”的说明创建并运行一个验收测试。只要你的机器已经安装了JDK,的确可以在5分钟内就体会到FIT的妙处。
现在,让我们来看看FitNesse在wiki应用方面有什么特点。在FitNesse的网站提到“FitNesse is an HTML and wiki "front-end" to Fit”,具体执行验收测试的是FIT Server,FIT Server的输入借口为带表格的HTML文档。当我们点击“test”连接提交一个验收测试的时候,FitNesse将网页发送到FIT Server;FIT Server读取网页中的表格,调用相应的测试程序;然后将结果返回给FitNesse。
FitNesse之所以能够成为FIT Server的前端,是因为它充分利用了wiki编写表格的方便性。象FIT Server这样直接以HTML文件为接口的应用并不多见,所以FitNesse的方法不具备普遍性。但是它仍然说明了Wiki应用需要获得成功,就必须充分利用wiki本身极易操作的特性。
在FitNesse中,还有与一般wiki不同的地方。在一般的wiki所有的页面都是平等的,是完全的平面结构,例如百科全书中所有的条目都是平等的,它们之间的关系只是体现在内容中的连接。然后作为一个测试工具,FitNesse常常要同时管理多个项目的测试用例,为了避免命名冲突和便于管理,就会有将测试用例按照项目进行分组的需要。FitNesse通过SubWiki提供了的层次化wikipage模型,在FitNesse中wikipage的名字为“parent.child.grandchild”的形式,就类似于文件目录。在涉及到对wikipage进行管理后,wikpage的层次化命名模型就会随之产生。
另外FitNesse中还有一个比较特别的功能,那就是页面重构(Refactor),一个wikipage可能被许多页面引用,如果要更改这个wikipage的名字,所有这些页面得引用都必须更改。页面重构为这类需求提供了帮助,不过经试用,效率较低。
参照原文网址
1:http://flyisland.blogbus.com/logs/2004/11/518832.html
2:http://www.nirvanastudio.org/2006/04/
|