Разработать тестовую среду для проверки ответов Soap WS с REST WS? - PullRequest
0 голосов
/ 13 октября 2018

У меня есть требование для разработки тестовой среды с использованием Cucumber.

Требования:

  1. Существует Soap WS, уже разработанный для существующего проекта несколько лет назад
  2. Существует новый REST ws, разработанный для того же проекта

Я должен проверить ответы от SOAP WS с ответами REST WS и проверить, одинаковы ли они или нет, с помощью файла функций (огурец)?

в основном нужно проверить, равны ли значения полей в Soap и REST.

как написать сценарий и как сопоставить эти поля в SOAP ws с REST ws?

Я очень плохо знаком с BDD и огурцом.подробные ответы очень ценятся

1 Ответ

0 голосов
/ 15 октября 2018

Как создать сценарий

В BDD мы создаем сценарий с контекстами, событиями и результатами.

Контекст - это состояние, в котором начинается сценарий,Таким образом, в вашем случае у вас есть две службы, и, возможно, что-то созданное в этих службах может изменить ответы.Они становятся вашими "данными".

Допустим, ваши службы работают с данными пользователя.(Адаптируйте их соответственно для любой информации, имеющей значение для вашего сценария.)

Given the REST service has a user 'Chandra Prakash'
And the SOAP service has a user 'Chandra Prakash'

В большинстве случаев в BDD в каждом сценарии происходит только одно событие.Хотя может быть два события, если есть взаимодействие или что-то вроде времени, и я думаю, что это тоже имеет значение.Поэтому мы обращаемся к обоим службам, и события становятся вашим «Когда».

When we ask the REST service for all users with family name 'Prakash'
And we ask the SOAP service for all users with family name 'Prakash'

И последний бит - это результат, в котором мы смотрим, получили ли мы значение, которое для нас важно.

Then both services should have found a user 'Chandra Prakash'.

Эти строки вместе становятся сценарием в вашем файле объектов.

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

Подключение сценария к автоматизации

Большинство примеров Cucumber, которыевы обнаружите, что будете использовать что-то вроде Selenium для автоматизации веб-страницы, но у вас этого нет.Вместо UI у вас есть API .Вы получаете примеры того, как одна система использует другую систему.

Ваша автоматизация будет настраивать данные в Givens, а затем вызывать службу REST или службу SOAP в зависимости от ситуации в Whens.

Если вы изучите учебник Cucumber , а затем будете использовать их методы для подключения сценария к двум сервисам, вы получите то, что вам нужно.

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

Сценарии и критерии принятия

В общем, я хотел бы спросить: «Можете ли вы датьмне пример?Итак, можете ли вы привести пример того, что делают сервис REST и сервис SOAP?Если ответ представляет интерес для деловых и нетехнических людей, вы можете записать этот пример.Попытайтесь использовать конкретные детали, как я сделал здесь с пользователем и его именем, вместо того, чтобы быть обобщенными, как

Given the REST service has a user with a particular family name
When we ask the REST service for users with that family name
Then it should retrieve them

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

Огурец против простого кода

Есть одна небольшая проблема, которую я вижу.

Этозвучит так, как будто то, что вы делаете, может быть техническим интеграционным тестом , а не примером поведения систем.Если это так, и нет заинтересованного в сценарии нетехнического участника, то Cucumber может быть излишним.Достаточно создать что-то в рамках уровня модуля для вашего языка (например, JUnit для Java и т. Д.).Обычно я создаю небольшой DSL, например:

    GivenThePetshop.IsRunning();
    WhenTheAccessories.AreSelected("Rubber bone", "Dog Collar (Large)");
    ThenTheBasket.ShouldContain("Rubber bone", 1.50);
    ThenTheBasket.ShouldContain("Dog Collar (Large)", 10.00)
    ThenTheBasket.ShouldHaveTotal(11.50);

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

Вот несколько аргументов, которые я бы использовал против Cucumber в этом случае:

  • Реорганизовать простой английский язык сложнее, чем код
  • . Он вводит еще один уровень абстракции, усложняя понимание кода.
  • . Это еще одна основа для изучения
  • .настроить его в системах CI и т. д.

Если вы не можете отодвинуться назад, использование огурца не станет концом света.

Поговорите!

Лучший способ получить примеры - это спросить кого-нибудь: «Можете ли вы дать мне пример?»Поэтому я найду человека, который лучше всех знает бизнес-процессы, и задам его.

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

И вот, пожалуйста!Если вам нужна помощь, которую не может предоставить StackOverflow, есть списки рассылки для BDD и Cucumber , а также множество примеров.

...