Применяете BDD-тестирование к пакетным сценариям?

Я пытаюсь применить методы BDD в своей организации. Я работаю в банке, где еженощное пакетное задание представляет собой огромный мультисистемный поток оркестровки, в котором выполняются пакетные задания и передаются данные друг другу.

Во время наших тестов интерактивные онлайн-тесты, вероятно, составляют только 40-50% тестовых сценариев, в то время как остальные встроены в пакетное задание. Например, сценарий тестирования может быть следующим:

  1. Учитывая, что на моем сберегательном счете по состоянию на 22:00 оставалось 100 долларов США.
  2. Когда ночная партия запускается в 23:00
  3. Затем в 3 часа ночи после завершения пакетного прогона я должен вернуться и увидеть, что у меня есть дополнительные начисленные проценты в размере 0,001 доллара.
  4. И в главной книге банка должна быть дополнительная запись для начисленных процентов в размере 0,001 доллара США.

Как видите, это чрезвычайно асинхронный сценарий. Если бы я использовал Cucumber для его запуска, я, вероятно, мог бы создать определение шага, чтобы вставить баланс в 100 долларов в учетную запись к 22:00, но было бы нереально использовать Cucumber для запуска пакета в 23:00, поскольку пакетные задания обычно выполняется операторами, использующими свои собственные инструменты планирования, такие как Control-M. И если Cucumber затем подождет и послушает несколько часов, прежде чем проверить начисленные проценты, я не уверен, у меня будет тайм-аут или нет.

Это всего лишь один сценарий. Пакетные запуски очень дороги для банка, и мы всегда стараемся использовать как можно больше сценариев, чтобы использовать один пакетный запуск. У нас также есть сценарии старения, когда нам нужно запустить 6 месяцев пакетной обработки, чтобы просто проверить, верны ли окончательные проценты в конце срока фиксированного депозита (я определенно не могу заставить Cucumber ждать и слушать так долго, не так ли?)

Мой вопрос: есть ли какой-нибудь пример, когда методы BDD применялись к таким сценариям больших пакетов, как эти? Как к этому подойти?

Отредактируйте, чтобы объяснить, почему я не нацелен на выполнение изолированных тестовых сценариев, в которых я контролирую:

Мы выполняем изолированные сценарии на одном из уровней тестирования (в моем банке мы называем это системным тестом), и BDD действительно работает в этом контексте. Но в конечном итоге нам нужно выйти на уровень тестирования, на котором есть вся сквозная среда, обычно в SIT. В этой среде это критерий для параллельного запуска нескольких тестовых сценариев, ни один из которых не имеет полного контроля над средой. В зависимости от объема проекта в этой среде может работать до 200 приложений. Таким образом, клиентские каналы, такие как интернет-банк, будут запускать сценарии транзакций, а в базовой банковской системе будут выполняться такие сценарии, как расчет процентов, автоматические переводы и т. Д. Также будут сценарии бухгалтерского учета, в которых система главной книги консолидирует и уравновешивает все счета в среде. Для выполнения ручного тестирования в этой среде часто требуется не менее 30-50 человек, выполняющих транзакции и проверяющих результаты.

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


person feicipet    schedule 12.05.2016    source источник


Ответы (2)


Мне кажется, что вы не контролируете исполнение сценария.

Совершенно очевидно, что ждать пару часов перед подтверждением результата - не лучшая идея.

Можно ли извлечь только ту часть пакета, которая интересна в этом сценарии? Если это возможно, то я бы не ожидал, что время выполнения составит 4-6 часов.

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

К сожалению, быстрого решения не существует. Вы должны иметь возможность проверять небольшие части системы, чтобы проверять их быстро и надежно. И неважно, используете ли вы Cucumber или любой другой инструмент для проверки, все инструменты будут иметь одну и ту же проблему.

person Thomas Sundberg    schedule 12.05.2016
comment
Привет, я объяснил, почему я не описываю сценарий, который можно запускать изолированно. Но для этого потребовалось слишком много слов, и поэтому я добавил их к основному вопросу. Спасибо! - person feicipet; 12.05.2016

Один из подходов, который вы могли бы рассмотреть, - создать процесс отчетности, который запрашивает результаты каждого пакетного запуска. Затем он сохранит интересующие вас результаты (то есть результаты ваших тестов) в базе данных анализа тестов.

Я предполагаю, что каждый запуск партии имеет уникальный идентификатор. Этот идентификатор будет использоваться в качестве ключа для результатов теста.

Вот пример того, как это может работать:

  • Мы знаем, когда закончены запуски партии (скажем, в 4 часа ночи). Мы планируем запуск задания по созданию отчетов после завершения пакетного запуска (скажем, в 5 утра), которое анализирует тестовые учетные записи.
  • Отчетное задание просматривает Счет X и Счет Y. Оно записывает сумму денег на их счету в таблице вместе с уникальным идентификатором для выполнения партии. Эта информация хранится в базе данных результатов тестирования.
  • Отдельный процесс сопоставляет сценарии тестирования с результатами тестирования. Он знает, что тестовый сценарий 29 был привязан к пакетному запуску ZZ20, и поэтому ищет в базе данных результатов тестирования анализ из пакетного запуска ZZ20.
  • Утром инженер-испытатель проверяет результаты пробега. Они видят, что тестовый сценарий 29 провалился, поскольку на счете X было всего 100 фунтов стерлингов, а не ожидаемые 100,001 фунта стерлингов.

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

person Barnaby Golden    schedule 12.05.2016