В каратэ, как мы можем совместно работать вместе с BA для автоматизации бизнес-сценариев
Используя Каратэ, мы смогли выполнить большую часть валидаций для веб-сервисов, мы смогли успешно интегрировать Каратэ с веб-драйвером Selenium и делать утверждения БД с использованием классов Java. Для БД мы вернули наборы результатов в виде списка, конвертировав каждую строку в хэш-карту, и Карате приняло ее как массив json Таким образом, проверки стали простыми. Большинство потребностей для нас на стороне QA были достигнуты с помощью каратэ.
Тем не менее, сегодня, когда мы представились, перед большим сообществом один из ведущих разработчиков задал вопрос. Он является экспертом в JBehave, BDD, jsonpath, java, веб-сервисах и т. Д. Мы также чувствовали, что его вопрос действительно актуален в зависимости от нашего контекста. однако, подход каратэ отличается, и он может не работать в соответствии с нашими знаниями.
В нашем контексте нам нужно заставить БА писать BDD с учетом их бизнес-сценариев, используя бизнес-термины, и QA/Dev может позже преобразовать их в сценарии. (Подход, который мы обычно используем, используя огурец + селен / будьте уверены, и т. Д.). Например, если у меня есть файл функций и 10 сценариев, люди со стороны бизнеса не поймут детали проверок, увидев шаги в каратэ / или, другими словами, простой английский текст будет для них немного более понятным. Нам нужен этот подход, потому что мы пытаемся реализовать изменения процесса с самого уровня истории.
Не могли бы вы поделиться своими мыслями?
1 ответ
Краткий ответ: каратэ не для BDD.
Я написал подробный пост в блоге об этом здесь: Да, каратэ не правда BDD
Внимательно прочитайте его и поделитесь с теми, кто выиграет. Да, каратэ крадет синтаксис BDD у Cucumber, но затем идет в другом направлении.
Вы можете быть в состоянии использовать Каратэ за кулисами как определения шага Cucumber через API Java. Или, если вы хотите использовать что-то вроде REST-гарантированной, полной мощности для вас.
Мое личное мнение, пожалуйста, не надо. Вы будете тратить время на это:
- Обеспечение того, что "BA friendly" корнишон действительно "простой английский" и находится на правильном уровне абстракции (в зависимости от того, кого вы спрашиваете). Будьте готовы к бесконечным спорам о том, содержат ли ваши сценарии Cucumber "специфичные для реализации" детали или нет.
- На самом деле получить ваши BA, чтобы написать корнишон или по крайней мере сотрудничать с командой разработчиков, чтобы написать их. Кстати, именно это сотрудничество является самой большой ценностью, которую вы получаете от BDD, а не автоматизация спецификации в качестве исполняемых тестов. Так что, если вы действительно можете это сделать (получая время и опыт Gherkin от ваших BA-ов), хорошо - поздравляем! Не многие команды могут это осуществить.
- Конечно, корнишон - это лишь верхушка айсберга, вам нужно пойти и написать все определения шагов. Вы бы видели эту часть документации по каратэ, которая описывает различия между каратэ и огурцом.
- У меня есть сильная точка зрения, что BDD имеет очень небольшое (и, возможно, отрицательное) значение для тестов API. Большая разница между тестом пользовательского интерфейса (лицом к лицу) и тестом API (лицом к машине) заключается в том, что существует четкий "контракт", который вы кодируете. Этот контракт лучше всего выражать в технических терминах (JSON / схема) вместо преднамеренной абстракции, в которую вас заставляет BDD. Конечный пользователь или потребитель API, как правило, другой программист! Да, нужно думать об API как о продукте, но BDD просто заходит слишком далеко. И особенно когда речь идет о микросервисах, вы редко сталкиваетесь с тем, что делает что-то более сложное, чем простое "CRUD".
- Задайте себе этот вопрос - ожидаете ли вы, что ваши БА продолжат читать "Огурец" после этапа определения требований проекта? Имейте в виду, что BDD должен практиковаться до написания одной строки кода. Если корнишон выполнил свою задачу по налаживанию сотрудничества, общего понимания и примеров - просто переведите его в обычные автоматизированные тесты и не оглядывайтесь назад!
РЕДАКТИРОВАТЬ: Посмотрите на второй пример здесь, чтобы увидеть, что происходит, когда вы используете Cucumber для проверки того, что должно быть простым модульным или интеграционным тестом.
Надеюсь, это поможет:)