Есть метод rest-api сервиса перевода некоторой суммы от одного банковского пользователя с заданным балансом другому пользователю по id:

Для тестирования данного API-эндпоинта важно проверить следующие моменты:

Короткий ответ

Что ответить на собеседовании

Для тестирования данного API-эндпоинта важно проверить следующие моменты:

Подробный разбор

Ответ с пояснениями

Условие

Есть метод rest-api сервиса перевода некоторой суммы от одного банковского пользователя с заданным балансом другому пользователю по id:

GET /api/transfer?money={money}&from={uid}&to={uid}

Задача сформировать тесткейсы для этого метода

Пример тесткейса: Вызвать метод с параметрами money=10.10&from=1&to=2; Ожидаемое поведение:

Вызвать метод с параметрами money=10&from=1&to=2; Ожидаемое поведение: status 400 балансбез изменений возврат ошибки недостаточно средств Вызвать метод с параметрами money=100000&from=1&to=2; Ожидаемое поведение: status 200 баланс 1 уменьшится на текущую сумму баланс 2 увеличится на текущую сумму Вызвать метод с параметрами money=-10000&from=1&to=2; Ожидаемое поведение: status 400 балансбез изменений возврат ошибки нельзя перевисти отрицательное значение Вызвать метод с параметрами money=0&from=1&to=2; Ожидаемое поведение: status 400 балансбез изменений возврат ошибки нельзя перевисти нулевое значение Вызвать метод с параметрами money=вавава&from=1&to=2; Ожидаемое поведение: status 400 балансбез изменений возврат ошибки введите корректное значение Вызвать метод с параметрами money=10000&from=1&to=1; Ожидаемое поведение: status 400 балансбез изменений возврат ошибки введите подробно описать ошибку

Ответ

Для тестирования данного API-эндпоинта важно проверить следующие моменты:

  1. Идемпотентность: Заголовок Idempotency-Key обязателен и должен гарантировать, что повторный запрос с тем же ключом не создаст дубликат транзакции.
  2. Авторизация: Проверить, что без корректного токена доступ запрещён.
  3. Валидация входных данных: Проверить корректность UUID, суммы, валюты и других полей.
  4. Логика сохранения шаблона: Если save_as_template true, убедиться, что шаблон действительно сохраняется.
  5. Корректность ответа: Статус, ID транзакции, сумма, валюта, время исполнения и флаг сохранения шаблона должны соответствовать ожиданиям.

Пример автоматизированного теста на псевдокоде:

response = post('/api/v1/transfers/internal', headers={
    'Idempotency-Key': 'uuid-1234',
    'Authorization': 'Bearer valid_token'
}, json={
    'source_account_id': 'valid-uuid-1',
    'destination_account_id': 'valid-uuid-2',
    'amount': 1500.50,
    'currency': 'USD',
    'description': 'payment for rent',
    'save_as_template': True
})
assert response.status_code == 200
assert response.json()['status'] == 'success'
assert response.json()['data']['template_saved'] == True

# Повторный запрос с тем же Idempotency-Key
response_repeat = post(...)
assert response_repeat.json()['transaction_id'] == response.json()['transaction_id']

Также важно проверить обработку ошибок, например, при отсутствии заголовков или неверных данных.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее