当文件夹深度更大时,Fitnesse框架非常慢4 - 为什么?

时间:2009-12-22 11:19:03

标签: java performance testing fitnesse fit-framework

我们目前正在建立fitnesse作为测试工具用户验收测试。到目前为止一切都很好。我们使用的是java版“20091121”。对于深度超过4的文件夹,我们遇到了麻烦。

我们设置了以下文件夹结构:

  

设置

     

的TestSuite

     

content.txt + properties.xml(里面只有“!contents”)

     
    

UseCase2204

         

content.txt + properties.xml(里面只有“!contents”)

         
      

SingleRequest02

             

content.txt + properties.xml(里面只有“!contents”)

             
        

PositiveTest

                 

content.txt + properties.xml(里面只有“!contents”)

                 
          

OneAdultWithChild

                     

这里包含18个灯具表的实际测试的content.txt + properties.xml

        
      
    
  

当我们开始fitnesse并导航到最深的文件夹(“OneAdultWithChild”)时,它需要大约10秒才能显示页面。现在,当我将内容向上移动一个层次结构级别(进入“PositiveTest”)时,页面需要3秒钟才能呈现。当我将测试内容放在第二级(“UseCase2204”)时,它几乎立即显示。

在测试执行期间会发生相同的行为。按下“测试”按钮后,测试需要:

  • 第二级:12秒
  • 第四级:14秒
  • 第五级:40秒! (另外,在“结果捕获”按钮出现之前需要很长时间)

现在,我坚持这个。我们需要这个深度嵌套的结构来对所有测试进行分组。但如果没有解决方案或解决方法,我们就不能使用fitnesse,我将成为推广框架的一个大白痴。在过去,我对fitnesse有积极的结果,但我们没有这些深层嵌套的结构。

4 个答案:

答案 0 :(得分:1)

您是否尝试过与FitNesse的维护人员联系?那应该是你的第一步。这是他们的“获取帮助”链接:http://www.fitnesse.info/help

与此同时,如果可以的话,你可以尝试分析fitnesse。很可能大部分时间都花在一两个地方,并且可以找到合适的解决方法。由于这是一个开源项目,您应该能够快速浏览一下代码。无论如何,如果你想。

更新:只是一个想法,是你在NFS挂载上的测试层次结构吗?你能尝试在“真正的”磁盘上运行吗?

答案 1 :(得分:1)

所以,我们做了一些分析。加载页面的40秒的主要时间(只是加载,而不是运行)花费在以下方法中:

  • fitnesse.wikitext.widgets.WidgetRoot.render
  • fitnesse.wikitext.widgets.WidgetRoot.getVariable
  • fitnesse.wiki.PageData.initializeVariableRoot
  • fitnesse.wikitext.widgets.VariableWidget.doRender

它接口就像varibale替换逻辑+小部件渲染一直在使用:(

特别是fitnesse.wikitext.widgets.VariableWidget中的“private void doRender()”让我感到头疼。有一个评论抱怨复杂性,所有这些都应该重构。

见这里

http://github.com/lvonk/fitnesse/commit/a7242991039970d769db681afa2336285700d421#diff-10

对我来说,此刻看起来像死路一条。我们会将fitnesse用于真正的大项目,这是目前在德国/欧洲正在进行的最大的IT项目之一。但如果这些基本的东西不够快,我不能卖掉它: - /

我仍然希望有人知道修复,否则我将不得不在圣诞节时深入挖掘代码,并试着让它快一点。

我刚注意到git hub上有一个较新的版本(2009-11-25),它已经删除了注释,并且一些代码行也被更改了。我会试一试.....

帮助高度赞赏

欢呼声 烫发

答案 2 :(得分:0)

它可能不是特定的解决方案,但目前正在查看一个Widget渲染问题:http://www.pivotaltracker.com/story/show/2200962

还有一个故事要重做解析器以提高效率和能力,但这是一项重大工作。不确定什么时候开始工作。

答案 3 :(得分:0)

丹,

谢谢你的回答。这就是我在yahoo fitnesse上发布的内容:

我刚从网站上下载了发布版“20100103”并尝试了一下 相同的设置。一个重大改进!我很高兴。现在我可以继续 初步设置,希望能让所有人相信它。

在测试执行期间也可以看到性能提升 - 非常好。一世 看不到顶层测试和嵌套测试之间的任何显着差异。

我希望系统的其余部分以相同的方式运行:)

非常感谢您的快速帮助。我将回来提供更多反馈(或问题 ;-))在初始设置完成后,人们开始使用它 (开发人员和测试人员)。

欢呼声 烫发