Каково соотношение фронтенд- и бэкенд-тестирования в вашем текущем проекте?

Ответ

В текущем проекте распределение задач по тестированию примерно 60% бэкенд и 40% фронтенд.

Бэкенд-фокус (60%):

  • API-тестирование: REST и GraphQL эндпоинты (валидация статус-кодов, схем ответов, бизнес-логики).
  • Интеграционное тестирование: Проверка взаимодействия с внешними сервисами и БД.
  • Пример API-теста на Python (pytest + requests):
    def test_create_order():
        payload = {"product_id": 123}
        response = requests.post("https://api.example.com/orders", json=payload)
        assert response.status_code == 201
        assert "order_id" in response.json()

Фронтенд-фокус (40%):

  • E2E-тестирование: Автоматизация ключевых пользовательских сценариев с помощью Cypress.
  • Кросс-браузерное и кросс-платформенное тестирование.
  • Валидация согласованности данных: Проверка, что фронтенд корректно отображает данные, полученные от бэкенд-API.

Ответ 18+ 🔞

А, слушай, вот тебе наша реальность, как она есть, без прикрас. Сидим тут, тестируем, а распределение задач — просто пиздец какой показательный, блядь.

Так, смотри, в основном, овердохуища работы, аж 60%, у нас на бэкенд. Ну, понятное дело, там вся соль-то и сидит, вся эта кухня, которую юзер не видит, но без которой всё накрывается медным тазом.

Бэкенд-то наш, сука, главный по тарелочкам (60%):

  • API-тестирование: Вот эти все ваши REST'ы и GraphQL'ы, блядь. Сидишь, долбишь эндпоинты, проверяешь, не отдаёт ли сервер вместо «200 OK» какую-нибудь хуйню вроде «500 Internal Server Error». Схемы ответов валидируешь, чтобы не прилетело поле "price": "десять рублей" вместо числа, бизнес-логику ловишь за жопу — чтобы скидка применялась, а не хуй с горы.
  • Интеграционное тестирование: А это вообще отдельная песня, ёпта. Проверяешь, как наш сервис общается с другими сервисами и с этой, блядь, базой данных. Чтобы если внешний платёжный грохнулся, у нас не заказы в никуда улетали, а вменяемая ошибка была.
  • Вот, смотри, как это выглядит в коде, простейший пример, но суть ясна:
def test_create_order():
    payload = {"product_id": 123}
    response = requests.post("https://api.example.com/orders", json=payload)
    assert response.status_code == 201
    assert "order_id" in response.json()

Видишь? Отправили запрос — проверили, что статус 201 (создано), а не 404 или ещё какая хуйня. И что в ответе есть order_id. Всё, казалось бы, просто, но если это не работает — пиши пропало.

А теперь фронтенд, наш красавчик (40%):

  • E2E-тестирование: Вот тут включается Cypress, наш верный пёс. Пишем сценарии: «юзер зашёл, тыкнул сюда, ввёл данные, нажал купить — и всё сработало». Автоматизируем эту мартышлюшку, чтобы не кликать вручную каждый раз, ебать мои старые костыли.
  • Кросс-браузерное и кросс-платформенное: Чтобы в Хроме работало, в Фаерфоксе работало, и на телефоне у тёти Зины тоже, блядь, работало. Иначе — волнение ебать, терпения ноль ебать.
  • Валидация согласованности данных: Это самое важное, ёпта! Проверяем, что то, что отдал бэкенд (допустим, цена товара 100 рублей), фронтенд именно так и отобразил, а не подменил на «100$» или ещё какую пиздопроебибну. Чтобы не было такого: сервер говорит одно, а на экране — совсем другое, хуй в пальто.

Вот такая, блядь, арифметика. Шестьдесят на сорок. Бэкенд — это фундамент, его надо долбить и проверять со всех сторон. А фронтенд — это лицо, которое должно этот фундамент правильно показывать. И если где-то проёбываемся — пользователь получает, в лучшем случае, недоумение, а в худшем — чистый пиздец.