← Назад к вопросам

Приведи пример последнего функционала, который ты тестировал

1.3 Junior🔥 191 комментариев
#Клиент-серверная архитектура

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Пример последнего функционала, который я тестировал

В качестве последнего завершенного примера приведу тестирование модуля "Умные уведомления" в мобильном банкинге. Это был комплексный функционал, затрагивающий backend, frontend и интеграцию с push-сервисами.

Контекст и бизнес-требования

Клиенты жаловались на информационный шум: они получали одинаковые push-уведомления и SMS о всех операциях по карте. Цель — внедрить адаптивную систему, которая:

  • Классифицирует транзакции по категориям (например, "Крупный расход", "Подписка", "Подозрительная активность").
  • Приоритизирует уведомления (Высокий, Средний, Низкий).
  • Агрегирует мелкие однотипные операции за период в одно сводное уведомление.
  • Позволяет настроить правила получения для каждой категории и приоритета.

Мой подход к тестированию

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

1. Анализ требований и проектирование тестов:

  • Уточнил с аналитиками и архитекторами логику классификации. Например, что считается "крупным расходом" (сумма > 30% от среднемесячного трафика или абсолютное значение > 50 000 руб.).
  • Разработал матрицу принятия решений (decision table) для проверки логики движка классификации на бэкенде.
Пример тест-кейса в формате BDD:
Feature: Классификация транзакций для умных уведомлений
  Scenario: Определение категории "Крупный расход"
    Given пользователь со среднемесячным трафиком 100 000 руб.
    When происходит транзакция на сумму 40 000 руб.
    Then система присваивает категорию "Крупный расход" и приоритет "Высокий"

2. Тестирование backend API (ядро логики):

  • Проверял REST API эндпоинты, которые принимали сырые данные о транзакциях от платежного ядра и возвращали объект с полями category, priority, shouldNotify.
  • Писал интеграционные тесты на Python с помощью pytest и requests, чтобы проверить различные граничные условия.
import pytest
import requests

API_URL = "https://api.internal/transaction/classify"

@pytest.mark.parametrize("amount, avg_monthly, expected_category", [
    (40000, 100000, "LARGE_EXPENSE"),  # 40% > 30% порога
    (20000, 100000, "REGULAR"),        # 20% < порога
    (50001, 0, "LARGE_EXPENSE"),       # Абсолютный порог > 50k
])
def test_transaction_classification(amount, avg_monthly, expected_category):
    payload = {
        "amount": amount,
        "userMonthlyAverage": avg_monthly,
        "merchantCode": "TEST_MCC"
    }
    response = requests.post(API_URL, json=payload, timeout=5)
    assert response.status_code == 200
    data = response.json()
    assert data['category'] == expected_category

3. Тестирование фронтенда (мобильное приложение):

  • Настройки уведомлений: Проверил, что переключатели в настройках приложения корректно отправляют запросы на бэкенд и сохраняют состояние. Например, отключение уведомлений категории "Низкий приоритет".
  • Получение и отображение: Использовал туннелирование Charles Proxy для подмены ответов от сервера уведомлений, чтобы симулировать получение агрегированных уведомлений ("За неделю вы потратили 1500 руб. в 5 кофейнях") и проверить их корректное отображение в шторке и внутри приложения.
  • Регрессия: Убедился, что старые простые уведомления о транзакциях продолжают работать для пользователей, не обновивших настройки.

4. Интеграционное и E2E тестирование:

  • Валидировал весь поток, от эмуляции транзакции через тестовый платежный шлюз до получения push-уведомления на реальное устройство в QA-среде.
  • Ключевая проверка — консистентность данных. Сумма и время в уведомлении должны идеально совпадать с данными в истории операций внутри приложения.

5. Нефункциональное тестирование:

  • Производительность: Нагрузочные тесты (с помощью k6) эндпоинта классификации, чтобы убедиться, что он обрабатывает пиковые нагрузки в час-пик (например, Black Friday).
  • Безопасность: Проверка, что эндпоинты защищены авторизацией, и пользователь может получать/настраивать уведомления только по своим картам.

Ключевые находки (дефекты)

  1. Критический (Backend): При определенной последовательности мелких транзакций (например, 5 платежей по 100 руб. за 2 минуты) алгоритм агрегации "зависал", ожидая больше данных, и не отправлял уведомление вовсе. Воспроизвел через тестовый скрипт, оформил баг с логами.
  2. Серьезный (Frontend): На iOS при глубокой ссылке из уведомления в раздел "Аналитика" открывалась не та конкретная категория расходов, а общий график. Дефект в обработке payload уведомления.
  3. Незначительный (UX): Текст агрегированного уведомления при определенной локализации (казахский) выходил за пределы области просмотра.

Заключение

Тестирование этого функционала требовало комбинированного подхода: глубокого тестирования API-логики, проверки корректности интеграций и финального E2E-сценария от транзакции до уведомления на устройстве. Это типичный пример современной QA-работы, где инженер выступает в роли не просто "чек-лист исполнителя", а технического исследователя, который моделирует сложное поведение пользователей и системы, чтобы обеспечить качество на всех уровнях.