Платформа Fitnesse очень медленная, когда глубина папки больше 4 - почему? - PullRequest
2 голосов
/ 22 декабря 2009

В настоящее время мы проводим фитнес-тестирование как приемочное тестирование. Пока все хорошо. мы используем версию Java "20091121". У нас проблемы с папками глубже 4.

Мы настроили следующую структуру папок:

SetUp

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

здесь content.txt + properties.xml для фактического теста, содержащего 18 таблиц фикстур

Когда мы начинаем фитнес и переходим к самой глубокой папке («OneAdultWithChild»), до отображения страницы требуется около 10 секунд. Теперь, когда я перемещаю контент на один уровень иерархии (в «PositiveTest»), страница отрисовывается за 3 секунды. Когда я помещаю тестовое содержимое на второй уровень («UseCase2204»), оно почти мгновенно отображается.

То же самое происходит во время выполнения теста. После нажатия кнопки «тест» тесты берут:

  • второй уровень: 12 секунд
  • четвертый уровень: 14 секунд
  • пятый уровень: 40 секунд! (плюс, пока не появится кнопка «Результат получен»)

Теперь я застрял с этим. Нам нужна эта глубоко вложенная структура для группировки всех тестов. Но если нет решения или обходного пути, мы не можем использовать фитнес, и я буду большим идиотом для продвижения фреймворка. В прошлом у меня были положительные результаты с фитнесом, но у нас не было этих глубоко вложенных структур.

Ответы [ 4 ]

1 голос
/ 22 декабря 2009

Итак, мы сделали некоторое профилирование. Основное время из 40 секунд на загрузку страницы (только загрузка, а не запуск) тратится на следующие методы:

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

он выглядит как логика замены varibale + визуализация виджета все время используется: (

особенно «private void doRender ()» в fitnesse.wikitext.widgets.VariableWidget вызывает у меня головную боль. есть комментарий с жалобой на сложность и необходимость реорганизации всего этого.

см. Здесь

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

для меня это похоже на тупик на данный момент. мы бы использовали fitnesse для действительно крупного проекта, одного из крупнейших ИТ-проектов, которые в настоящее время осуществляются в Германии / Европе. но я не могу продать это, если такие базовые вещи не работают достаточно быстро: - /

Я все еще надеюсь, что кто-то знает исправление, иначе мне придется копаться в коде на Рождество и попытаться сделать его немного быстрее.

Я только что заметил, что на git hub есть более новая версия (2009-11-25), которая избавилась от комментариев, и некоторые строки кода также были изменены. я попробую .....

помощь высоко ценится

веселит Marcel

1 голос
/ 22 декабря 2009

Вы пытались связаться с сопровождающим (ями) FitNesse по этому поводу? Это должно быть вашим первым курсом действий. Вот их ссылка «Получить помощь»: http://www.fitnesse.info/help.

Тем временем, если вы можете, вы можете попробовать профилирование. Вполне возможно, что большую часть этого времени проводят в одном или двух местах, и можно найти подходящий обходной путь. Поскольку это проект с открытым исходным кодом, вы должны иметь возможность быстро просмотреть код. Если хочешь, так или иначе.

Обновление: Просто мысль, ваша тестовая иерархия на монтировании NFS? Не могли бы вы попробовать запустить его на "реальном" диске?

0 голосов
/ 19 января 2010

дан

спасибо за ваш ответ. вот что я написал в группе по фитнесу Yahoo:

привет

Я только что скачал релиз «20100103» с сайта и попробовал с та же настройка. серьезное улучшение! Я очень рад этому. теперь я могу продолжить с начальной настройкой и, надеюсь, убедить всех в этом.

улучшение производительности также видно во время выполнения теста - очень хорошо. я больше не вижу существенной разницы между тестами верхнего уровня и вложенными тестами.

Я надеюсь, что остальная часть системы ведет себя так же:)

Большое спасибо за быструю помощь. я вернусь с большим количеством отзывов (или проблем ;-)) после того, как начальная установка сделана, и люди начинают работать с этим (разработчики и тестеры).

веселит Marcel

0 голосов
/ 15 января 2010

Возможно, это не конкретное решение, но есть исправление для одной проблемы рендеринга виджетов, которая в настоящее время рассматривается: http://www.pivotaltracker.com/story/show/2200962

Существует также история о том, как переделать парсер, чтобы он был более эффективным и эффективным, но это значительное усилие. Не уверен, когда над этим начнется работа.

...