Опишите ваш алгоритм тестирования нового функционала.

Ответ

Алгоритм следует принципу «от общего к частному» и интеграции в процесс разработки (Shift-Left).

1. Анализ требований и дизайна (До начала разработки):

  • Участвую в планировании (grooming, planning). Уточняю acceptance criteria, задаю вопросы о граничных случаях, поведении в ошибках.
  • Изучаю дизайн-макеты/прототипы (UI/UX).
  • Результат: Сформированное понимание, список уточнений и первые наброски тест-кейсов.

2. Проектирование тестов (Параллельно с разработкой):

  • Создаю детальные тест-кейсы, используя техники тест-дизайна (классы эквивалентности, граничные значения, таблицы решений).
  • Разделяю кейсы по уровням и типам:
    # Пример высокоуровневого сценария (может быть в BDD-стиле)
    Feature: Добавление товара в корзину
      Scenario: Добавление доступного товара
        Given Пользователь авторизован и находится на странице товара
        When Он нажимает кнопку "Добавить в корзину"
        Then Товар появляется в мини-корзине с правильной ценой
        And Счетчик товаров в корзине увеличивается на 1
  • Готовлю тестовые данные.
  • Продумываю сценарии интеграционного тестирования с другими модулями.

3. Выполнение тестирования (На тестовом окружении):

  • Поэтапный подход:
    • Smoke/Sanity: Базовая проверка работоспособности после деплоя.
    • Детальное функциональное тестирование: Прохождение всех подготовленных кейсов (позитивные, негативные, граничные).
    • Интеграционное тестирование: Проверка взаимодействия (например, новый метод API → запись в БД → уведомление в очередь).
    • Регрессионное тестирование: Проверка, что существующий функционал не сломан.
    • Non-Functional: При необходимости — проверка UI/UX, кросс-браузерность, производительность.
  • Логирование: Все действия, тестовые данные и результаты фиксирую.

4. Документирование дефектов и отчетность:

  • Найденные баги заношу в трекер (Jira, YouTrack) по шаблону: Заголовок, Шаги воспроизведения, Фактический результат, Ожидаемый результат, Окружение, Приоритет/Серьезность, Скриншоты/логи.
  • Формирую итоговый отчет о готовности функционала к релизу, отмечая покрытые требования и известные риски.

5. Поддержка и автоматизация (После приемки):

  • Ключевые сценарии нового функционала добавляю в набор регрессионных автотестов.
  • Участвую в пост-релизном мониторинге.

Ответ 18+ 🔞

Да ты посмотри, какая красота вырисовывается! Алгоритм-то, сука, классический, как швейцарские часы: от общего к частному и впихивание себя в процесс пораньше, этот самый Shift-Left, блядь. Сейчас разжую, как я это делаю, чтобы не было мучительно больно.

1. Врубаюсь на самом старте, пока код ещё не написан. Сижу на этих самых grooming'ах и planning'ах, слушаю, что за фичу выкатывают. И тут же, блядь, начинаю ковыряться в acceptance criteria, как бульдозер: «А вот это что значит? А если пользователь — конченый идиот и нажмёт сюда десять раз? А где ошибка упадёт?». Дизайн-макеты изучаю — чтобы кнопка не на лбу у аватара оказалась, понимаешь? Итог: У меня в голове уже каша из вопросов и первые намётки на тест-кейсы, пока разработчик только кофе наливает.

2. Пока код пишут, я уже тесты проектирую. Сажусь и начинаю выдумывать, как эту штуку сломать. Использую все эти ваши классы эквивалентности, граничные значения — в общем, всю свою, блядь, чёрную магию. Раскладываю кейсы по полочкам: вот это для дымовой, вот это — полный разбор на запчасти.

# Ну, типа, чтоб красиво и все поняли, о чём речь
Feature: Кинуть товар в корзину
  Scenario: Кидаем то, что можно купить
    Given Юзер залогинен и пялится на страницу товара
    When Он долбит по кнопке «Добавить в корзину»
    Then Товар материализуется в мини-корзине с правильной ценой
    And Счётчик в углу подскакивает на единичку

Параллельно готовлю тестовые данные — фейковые юзеры, карточки товаров, хуй в пальто. И думаю, как эта новая хрень поладит со старыми модулями, чтобы потом не вышло, что после добавления в корзину у пользователя сгорает пароль, ёпта.

3. Окружение подняли — начинается основное веселье. Тут я действую, как сапёр, но который ищет, куда бы наступить.

  • Smoke/Sanity: Быстренько пробежался — система не рухнула сразу, можно работать.
  • Детальное тестирование: Вот тут я отрываюсь по полной. Прохожу ВСЕ свои кейсы. Позитивные сценарии («всё работает как надо») — это скучно. А вот негативные («а что если в поле цены вписать "абвгд"») — вот где адреналин, блядь! Находишь такое, что у разработчика волосы дыбом встают.
  • Интеграционное: Смотрю, как новая фигня общается со старым добром. Вызвали новый API метод — данные в базу просочились? Событие в очередь улетело? Всё должно быть как по маслу, а не как у мартышлюшки.
  • Регресс: Быстренько гоняю ключевые сценарии старого функционала — не развалили ли мы чего, пока тут новое городили.
  • Non-Functional: Если надо, смотрю, не плывёт ли вёрстка в IE (да, есть ещё такие, ядрёна вошь!), не тормозит ли всё как в болоте.

И всё записываю, блядь, каждый шаг, каждый ввод. Потому что если баг вылезет, а ты не помнишь, как его повторить — это пиздец и позор.

4. Нашёл косяк — теперь надо его красиво подать. Тыкать пальцем и орать «не работает!» — не наш метод. Наш метод — это Jira, YouTrack или что там у вас. Заполняю баг-репорт по всем канонам:

  • Заголовок: Коротко и ясно. «Кнопка "Купить" исчезает после третьего нажатия, если имя пользователя содержит кириллицу».
  • Шаги: Разжёвано для идиота. «1. Открыть страницу. 2. Залогиниться как user_ёлка...».
  • Ожидаемый vs Фактический: «Ожидалось: кнопка остаётся. Факт: кнопка испаряется в никуда».
  • Окружение: Браузер, ОС, версия приложения — всё, блядь.
  • Серьёзность: Решаю, это «блокер» (ничего не работает) или «тривиал» (опечатка в сообщении).
  • Скриншоты/логи: Без этого вообще нихуя не докажешь, все будут делать круглые глаза.

А в конце ещё и отчёт напишу, мол, функционал в целом готов, но вот эти три бага висят, имейте в виду, выпускайте на свой страх и риск.

5. Всё зарелизили — можно расслабиться? Хуй там! Ключевые сценарии, по которым только что бегал, надо запихнуть в автотесты, чтобы они сами бегали при каждом новом коммите и орали, если что-то сломалось. И потом ещё пару дней после релиза мониторю продакшн — мало ли что всплывёт, когда на новую фичу набегут реальные пользователи, а они, уёбки, такие изобретательные бывают... Вот так, блядь, и живём.