Я пытаюсь применить методы BDD в своей организации. Я работаю в банке, где еженощное пакетное задание представляет собой огромный мультисистемный поток оркестровки, в котором выполняются пакетные задания и передаются данные друг другу.
Во время наших тестов интерактивные онлайн-тесты, вероятно, составляют только 40-50% тестовых сценариев, в то время как остальные встроены в пакетное задание. Например, сценарий тестирования может быть следующим:
- Учитывая, что на моем сберегательном счете по состоянию на 22:00 оставалось 100 долларов США.
- Когда ночная партия запускается в 23:00
- Затем в 3 часа ночи после завершения пакетного прогона я должен вернуться и увидеть, что у меня есть дополнительные начисленные проценты в размере 0,001 доллара.
- И в главной книге банка должна быть дополнительная запись для начисленных процентов в размере 0,001 доллара США.
Как видите, это чрезвычайно асинхронный сценарий. Если бы я использовал Cucumber для его запуска, я, вероятно, мог бы создать определение шага, чтобы вставить баланс в 100 долларов в учетную запись к 22:00, но было бы нереально использовать Cucumber для запуска пакета в 23:00, поскольку пакетные задания обычно выполняется операторами, использующими свои собственные инструменты планирования, такие как Control-M. И если Cucumber затем подождет и послушает несколько часов, прежде чем проверить начисленные проценты, я не уверен, у меня будет тайм-аут или нет.
Это всего лишь один сценарий. Пакетные запуски очень дороги для банка, и мы всегда стараемся использовать как можно больше сценариев, чтобы использовать один пакетный запуск. У нас также есть сценарии старения, когда нам нужно запустить 6 месяцев пакетной обработки, чтобы просто проверить, верны ли окончательные проценты в конце срока фиксированного депозита (я определенно не могу заставить Cucumber ждать и слушать так долго, не так ли?)
Мой вопрос: есть ли какой-нибудь пример, когда методы BDD применялись к таким сценариям больших пакетов, как эти? Как к этому подойти?
Отредактируйте, чтобы объяснить, почему я не нацелен на выполнение изолированных тестовых сценариев, в которых я контролирую:
Мы выполняем изолированные сценарии на одном из уровней тестирования (в моем банке мы называем это системным тестом), и BDD действительно работает в этом контексте. Но в конечном итоге нам нужно выйти на уровень тестирования, на котором есть вся сквозная среда, обычно в SIT. В этой среде это критерий для параллельного запуска нескольких тестовых сценариев, ни один из которых не имеет полного контроля над средой. В зависимости от объема проекта в этой среде может работать до 200 приложений. Таким образом, клиентские каналы, такие как интернет-банк, будут запускать сценарии транзакций, а в базовой банковской системе будут выполняться такие сценарии, как расчет процентов, автоматические переводы и т. Д. Также будут сценарии бухгалтерского учета, в которых система главной книги консолидирует и уравновешивает все счета в среде. Для выполнения ручного тестирования в этой среде часто требуется не менее 30-50 человек, выполняющих транзакции и проверяющих результаты.
Я пытаюсь найти способ использовать структуру BDD для автоматизации выполнения тестов и сбора результатов, чтобы нам не приходилось вручную отслеживать их все в среде.