Как был организован процесс тестирования на последнем проекте?

Ответ

Тестирование было интегрировано в CI/CD-конвейер и следовало многоуровневой стратегии.

Основные практики:

  • Автоматические тесты (CI): Каждый коммит в основную ветку (main/master) запускал набор юнит- и интеграционных тестов.
  • Регрессионное тестирование: Полный регресс выполнялся перед каждым релизом (раз в две недели).
  • Дымовое тестирование (Smoke): Проводилось ежедневно после деплоя на staging-окружение.
  • Ручное тестирование: Применялось для проверки новых пользовательских сценариев и UX.

Пример конфигурации пайплайна (GitHub Actions):

name: Run Tests
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install dependencies
        run: npm ci
      - name: Run unit and integration tests
        run: npm test

Такой подход обеспечивал раннее обнаружение дефектов и стабильность основной ветки.

Ответ 18+ 🔞

А, ну это ж классика, блядь! Тестирование у нас было впаяно в CI/CD-конвейер так, что открутить его было — хуй с горы. Стратегия была многоуровневая, как хороший торт, только без крема, а с пиздюлями за баги.

Что мы творили, блядь:

  • Автоматические тесты (CI): Каждый чих, каждый коммит в main ветку запускал юниты с интеграционными тестами. Не прошел — хуй тебе, а не мерж, иди фикси. Раннее обнаружение дефектов, ёпта, чтобы потом не охуевать перед релизом.
  • Регрессионное тестирование: Перед каждым выкатом (раз в две недели, как часы, блядь) гоняли полный регресс. Чтобы новое говно не сломало старое, но работающее говно. Стабильность, мать её.
  • Дымовое тестирование (Smoke): Каждый день, после того как заливали на staging, делали быструю проверку — дымится или нет. Если дымится — всем пизда, откатываем.
  • Ручное тестирование: Ну а куда без него, блядь. Для новых фич, для проверки, как этим всем будет пользоваться человек, а не тупая машина. UX, сценарии — тут руками потыкать надо.

Вот, смотри, как это в пайплайне выглядело (GitHub Actions):

name: Run Tests
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install dependencies
        run: npm ci
      - name: Run unit and integration tests
        run: npm test

Код не трогаю, он святой, блядь.

И знаешь, что? Подход — огонь. Основная ветка была стабильнее швейцарских часов, а баги мы ловили ещё на подходе, пока они не успели нас всех ебать. Красота, ёперный театр!