Best practice теста полного цикла бизнесс процесса с rest api, эквайрингом и вебхуками?

Появилась проблема на старом legacy проекте. При внесении изменений в коде или дополнительного функционала отвалилась/изменилось одно из звений бизнесс-процесса.

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

Как лучше реализовать такой тест? Какие существуют подходящие инструменты и практики?

Опишу конкретней по этапам что происходит в системе. Каждый этап надо протестировать и убедиться что все идет как задумано.
1. Некое клиентское приложение через rest api создает заказ и получает ссылку для оплаты.
1.1. В зависимости от типа клиента, выбираем нужную услугу с подходящими тарифами\комиссиями и обращаемся к нужному эквайрингу (их может быть несколько, они могут переключаться, может быть монета, сбер и т.п.).
1.2. Создаем ордер, получаем ссылку от эквайринга.
2. Клиент производит оплату на странице эквайринга. Видимо тут надо реализовать с помощью функционального теста.
3. Мы получаем запрос от экваринга с подтверждением об оплате. При этом от экваринга могут слаться и другие типы запросов (пинги, статусы, ошибки), их надо все фильтровать и проверять какие из них являются подтверждением оплаты, а какие мусорными.
3.1. Проверяем подпись. Подпись связана с id ордера и id клиента.
4. Отмечаем ордер оплаченным. Убеждаемся что система приняла и начала обработку операции с помощью проверки подстатусов.
5. Шлем свой вебхук другому клиентскому веб-приложению.
5.1. Формируем свою подпись.
5.2. Стороннее клиентское приложение сопоставляет ответ с созданным заказом, проверяет подпись, убеждается что он существует и дает успешный ответ.

Надо обязательно в тесте учесть чтоб каждый этап шел последовательно. Чтоб не было дублей. Чтоб вебхуки на пятом этапе не отправлялись без подтверждения оплаты.

Таким же примерно образом существует процесс обработки ошибочных оплат (во время оплаты произошла ошибка у экваринга) и возвратов.

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

Из-за того что у меня мало опыта решил задать вопрос на этом ресурсе. Как лучше решить эту проблему? Что читать, в какую сторону двигаться? Может есть какие-то примеры.

Какой тип тестирования применить? Возможно совместить несколько (модульный и функциональный)?
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы