9

Я бы хотел запустить тесты, которые имитируют пользователей, одновременно изменяя определенные данные для приложения grails.Как выполнить параллельное тестирование модификации для приложения grails

Есть ли какие-либо подключаемые модули/инструменты/механизмы, которые я могу использовать для эффективного использования? Они не обязательно должны быть граалями. Должна быть предусмотрена возможность одновременного запуска нескольких действий.

Я бы предпочел запустить тесты на функциональном уровне (пока я использую Selenium для других тестов), чтобы увидеть результаты с точки зрения пользователя. Конечно, это можно сделать в дополнение к интеграционному тестированию, если вы порекомендуете также выполнить параллельные тесты модификации на уровне интеграции.

+0

Запуск JMeter - это один из инструментов, который вы могли бы использовать, хотя, возможно, и не идеально. – mfloryan

ответ

0

Я думаю, что вы можете запускать (просто) несколько сценариев Selenium сразу или?

Мы тестируем здесь, запуская 20+ скриптов iMacros в то же время, таким образом, имитируя 20+ пользователей в нашем веб-приложении одновременно.

+0

Как вы заставляете их запускаться в одно и то же время (я полагаю, в разных окнах браузера)? –

0

Просто идея: кажется, сложно заставить клиента запускаться одновременно, но могут ли они ждать друг друга перед изменением данных?

Например, клиент продолжает регистрировать свой процесс: «Клиент x access DATA», «Client x editing DATA» в файле. Они также продолжают искать этот файл журнала, чтобы увидеть прогресс других клиентов. Затем не разрешайте клиенту полностью редактировать DATA, пока другой клиент не приступит к редактированию этого DATA.

0

Я нашел Grinder, чтобы стать отличным инструментом для испытаний на тяжелую нагрузку. Запуск нескольких экземпляров, выполняющих одни и те же тесты за один раз, часто может выявить проблемы параллелизма в вашем приложении, которые вы не найдете при обычных тестах.

Если вы хотите сделать это в рамках тестов модулей или встроенных тестов внутри кода, вы всегда можете развернуть несколько потоков в коде и выполнить их задачу, которую вы пытаетесь протестировать.

+0

Как вы пишете тестовые примеры для Grinder? Могу ли я использовать мои тесты на селен? –

+0

Тесты Grinder написаны на Python (Grinder использует Jython, реализацию Java на Python). Однако лучше всего использовать прокси-инструмент, который они предоставляют для захвата всех HTTP-запросов для теста. Поэтому, поскольку вы можете генерировать сценарии из запросов с использованием прокси-сервера, вы можете использовать свои тесты селена для создания скриптов Grinder. – 01001111

0

Вы в первую очередь заинтересованы в нагрузочном тестировании нескольких активных пользователей, в отличие от тех, у кого только есть HttpSession? Тестирование на жестких нагрузках основано на действительно хорошем функционале. однако тестирование. Как организованы и выполнены ваши функциональные тесты сегодня? У Grails есть плагин * для этого тоже, и он, кажется, находится в верхней части Pops на портале плагинов.

Вы пытаетесь проверить, как работает оптимистический механизм блокировки под нагрузкой?

Если прежний вариант использования - это тот, который означает больше, похоже, что вы можете искать JUnitPerf. Вот ->download

*functional-test < 1.2.7> - Функциональное тестирование

+0

Моя цель - проверить ошибки и производительность при выполнении параллельных операций многими пользователями (например, два пользователя, пытающихся изменить одни и те же данные). В настоящее время мои функциональные тесты написаны в Selenium, было бы здорово, если бы я мог их повторно использовать. –

+0

Gotcha. Я проверил часто задаваемые вопросы по Selenium, и многие из них рекомендуют BrowserMob, который является коммерческим сайтом. <<< Да, но для этого требуется много оборудования. Мы рекомендуем вам проверить BrowserMob, который загружает тестирование с помощью реальных браузеров и питается от Selenium. <<< http://wiki.openqa.org/display/SEL/Selenium+Core+FAQ#SeleniumCoreFAQ-IsitpossibletouseSeleniumformultiuserloadtesting%3F – mikesalera

0

WebTest построен на Ant, который обеспечивает parallel task. Возможно, вы сможете использовать это в сочетании с плагином Webtest для параллельного выполнения некоторых действий. Я никогда не пробовал.

0

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

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

2

Я недавно использовал Geb (http://grails.org/plugin/geb/). Это слой поверх WebDriver и Selenium и т. Д. Его очень легко написать сценарий Grails, чтобы действовать как пользователь в вашем приложении, а затем просто запускать несколько экземпляров на разных консолях. Геб использует синтаксис стиля JQuery для размещения вещей в DOM, который очень круто:

import geb.Browser 
import geb.Configuration 

includeTargets << grailsScript("_GrailsInit") 

target(main: "Do stuff as fast as possible") { 

    Configuration cfg = new Configuration(baseUrl: "http://localhost:8080/your_app/") 

    Browser.drive(cfg) { 
     go "user/login" 
     $("#login form").with { 
      email = "[email protected]" 
      password = "secret" 
      _action_Login().click() 
     } 
     ... 
    } 
} 

setDefaultTarget(main) 

Просто поместите свой сценарий в сценарии/YourScript.groovy, а затем вы можете сделать «Grails YourScript», чтобы запустить его. Я отследил некоторые проблемы параллелизма, просто выполнив несколько из них на полной скорости. Вам нужно построить войну и развернуть ее должным образом, так как Grails в режиме dev работает очень медленно и довольно быстро выходит из пространства перменцев.

Смежные вопросы