0

Я работаю над проектом, в котором мы держим одну вики-платформу в синхронизации с контентом другого. То, как мы это делаем, - это редактирование документа на «Wiki A», который передает поток данных, который преобразует данные из формата «Wiki A» в формат «Wiki B» и отправляет эти данные в «Wiki B» для импорта.Автоматизированные интеграционные тесты, охватывающие несколько сервисов

У меня есть 3 компонента.

  • 'Wiki A', которая находится в PHP
  • Сервис
  • перевода, который является рубин на рельсах обслуживание
  • 'Wiki B', который находится в Java

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

  1. Редактировать страницу на 'вики A'
  2. испытаний, что он начинает из потока данных
  3. Test, что TranslationService преобразованы данные
  4. испытаний, что импорт 'Wiki B' преобразованные данные

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

Я смотрю на это правильно? Я слишком амбициозен, чтобы попытаться создать единую сквозную систему тестирования, охватывающую несколько продуктов?

+1

Вам нужно будет быть более конкретным. Тем не менее, тесты Selenium не являются хрупкими, как таковые, но они часто плохо реализуются тестировщиками, которые либо неопытны, либо вынуждены работать с труднодоступными для тестирования сайтами во многих браузерах. Огурец - это просто абстракция: его правила все еще должны выполняться разработчиком/тестером, и это все равно можно сделать хорошо или плохо. Также современный Selenium не является инструментом записи - это больше не поддерживается. –

+0

Какие особенности я должен упомянуть? –

+0

Ну, более конкретный и сфокусированный ваш вопрос, тем больше вы получите авторитетные, а не самоуверенные и/или очень высокоуровневые ответы. –

ответ

1

Можно написать сквозные тесты, охватывающие несколько продуктов, написанных на разных языках, до тех пор, пока продукты обеспечивают какой-то надлежащий интерфейс. В идеале это интерфейс обмена сообщениями (например, Http REST). Я бы предложил использовать интерфейс Wiki напрямую, а не получать доступ к пользовательскому интерфейсу через браузер.

Я предполагаю, что «Wiki A» предоставляет такой интерфейс для добавления и изменения содержимого. Ваш интеграционный тест в первую очередь использует этот интерфейс для изменения некоторых данных и запуска всего процесса. Затем вам нужно убедиться, что изменение содержимого было обработано. Вы можете сделать это, проверив изменение в «Wiki B». Также в идеале «Wiki B» предлагает какой-то интерфейс для получения некоторого контента. Таким образом, ваш тест должен использовать интерфейсы обмена сообщениями «Wiki A» и «Wiki B».

1) Trigger 'Wiki A' change 
2) Verify content on 'Wiki B' 

Возможно, вам нужно подождать некоторое время между шагами 1 и 2 для перевода и импорта. Вы можете написать такие интеграционные тесты, полностью автоматизированные с помощью тестовых рамок, таких как Citrus (http://citrusframework.org)

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