git-controls

Команды Git для автоматизации тестирования: лучшие практики и продвинутые техники

🔥 Важное для QA-специалистов! 🔥
В QaRocks ты найдешь туториалы, задачи и полезные книги, которых нет в открытом доступе. Уже более 15.000 подписчиков – будь среди нас! Заходи к нам в телеграм канал QaRocks

С помощью системы контроля версий, Git, тестировщики могут точно определить момент появления ошибки и понять, почему были внесены те или иные правки. Таким образом ускоряются коммуникации между тестировщиками и разработчиками. Кроме того, при необходимости легко откатиться к более ранней версии кода.

Одной из важнейших особенностей Git для QA команд является работа с ветками. Можно создавать ветки для различных типов тестов – например, для регрессионного или нагрузочного – основная версия кода при этом не затрагивается. Это позволяет инженерам по автоматизации QA запускать тесты изолированно, исправлять проблемы в отдельной ветке, а затем объединять всё в основную ветку после успешного выполнения тестов. Благодаря этому процесс тестирования становится прозрачным и понятным, структурированным и хорошо организованным.

Содержание:

Основные команды Git

git init – инициализация репозитория

  • Эта команда создаёт новый репозиторий Git в каталоге вашего проекта. Создается папка .git, которую Git использует для отслеживания изменений.
  • git init

git clone – клонирование репозитория

  • Используется для копирования существующего репозитория на вашу локальную машину. Эта команда загружает все файлы и коммиты из удаленного хранилища.
  • git clone <repository-url>

git add – добавление изменений

  • Эта команда добавляет все файлы рабочего каталога в индекс для коммита. Можно добавить определённые файлы или директории или использовать команду git add . для добавления всех файлов.
  • git add test.e2e.js

Git добавляет определенный файл.

Git добавляет все файлы.

git branch – управление ветками

  • Команда позволяет отобразить все ветки, а также создать, удалить и переименовать отдельную ветку в репозитории.
  • git branch <branch-name> # Создаёт новую ветку git
  • branch -d <branch-name> # Удаляет ветку

git commit – фиксация изменений

  • Команда git commit сохраняет изменения в репозитории с обязательным описанием нововведений.
  • git commit -m “Commit message”

git push – перенос изменений в удаленный репозиторий

  • Команда git push позволяет синхронизировать локальную ветку с аналогичной в удаленном репозитории. Если ветки в удаленном репозитории нет, то она создаётся.
  • git push origin <branch-name>

git pull – получение и слияние обновлений с удаленного репозитория

  • Получает и вносит изменения из удаленного репозитория в текущую ветку.
  • git pull origin <branch-name>

git status – проверка текущего состояния

  • Показывает состояние рабочего каталога и индекса. Показывает, какие изменения были поставлены, а какие ожидают коммита.
  • git status

git merge – слияние веток

  • Объединяет изменения из указанной ветки в текущую.
  • git merge <branch-name>

Продвинутые команды Git

  1. git stash – временно сохраняет изменения
  • Сохраняет временно изменения, не фиксируя их. Это полезно, когда вам нужно переключить ветку, не потеряв текущие изменения.
  • git stash 
  • git stash pop # Чтобы получить изменения
  1. git rebase – поддерживаете историю коммитов в чистоте
  • Команда git rebase позволяет интегрировать изменения из одной ветки в другую, сохраняя при этом линейную историю проекта без merge- коммитов.
  • git rebase <branch-name>
  1. git cherry-pick – применение отдельных коммитов
  • Эта команда позволяет перенести отдельные коммиты из одной ветки к другой.
  • git cherry-pick <commit-hash>
  1. git reset – отмена изменений
  • Позволяет отменить изменения в отдельной директории или репозитории. Используйте git reset -soft, чтобы сохранить изменения, или git reset -hard, чтобы полностью откатить их.
  • git reset –hard <commit-hash>
  1. git reflog – просмотр всех действий
  • git reflog отображает все действия, совершённые в репозитории, включая те, которые не видны через обычный git log.
  • git reflog
  1. git bisect – определение коммита, в котором появилась ошибка
  • Находит коммит, в котором была обнаружена ошибка, с помощью бинарного поиска по истории коммитов.
  • git bisect start 
  • git bisect good <last-known-good-commit> 
  • git bisect bad <bad-commit>
  1. git clean – удаление неотслеживаемых файлов
  • Со временем в вашем проекте могут накапливаться неотслеживаемые файлы или директории. Чтобы удалить их, используйте:
  • git clean -f
  • Чтобы удалить неотслеживаемые директории, добавив флаг -d:
  • git clean -fd
  1. git filter-branch – перезапись истории коммитов
  • Если каким-то образом в репозиторий попала конфиденциальная информация, то можно использовать git filter-branch, чтобы удалить её или изменить во всей истории:
  • git filter-branch –tree-filter ‘rm -f sensitive-file.txt’ HEAD
  1. git blame – отслеживание изменений по автору
  • Позволяет узнать, кто последним изменил определенную строку в файле.
  • git blame filename
  1. git worktree – работа с несколькими рабочими директориями
  • Если нужно работать над несколькими ветками одновременно, то можно использовать git worktree для создания дополнительной рабочей директории:
  • git worktree add ../branch-dir feature-branch
  1. git submodule – работа с вложенными репозиториями
  • С помощью подмодуля репозитория можно добавить один Git-репозиторий как подкаталог другого. Это у, когда ваш проект зависит от других репозиториев.
  • git submodule add <repository-url>

Лучшие практики

  1. Коммиты стоит делать часто и заблаговременно
  • Почему? Частые коммиты позволяют разбить работу на несколько сегментов и упрощают отслеживание изменений. Например, если вы работаете над большой фичей, разбейте ее на более мелкие составляющие и делайте коммиты для каждой части с комментариями.
  1. Использование осмысленные сообщения к коммитам
  • Почему? Четкое и лаконичное сообщение, описывающие коммит, поможет другим (и вам в будущем) понять цель отдельного коммита. Например:
  • git commit -m "Обновлены тесты в соответствии с новой функциональностью"
  1. Создание отдельной ветки для каждой фичи
  • Почему? Всегда создавайте новую ветку под конкретную фичу или багфикс. Это сохраняет основную ветку стабильной и упрощает тестирование и ревью. Например, создание ветки фич:
  • git branch feature/user-auth
  1. Регулярное подтягивание изменений
  • Почему? Регулярный pull из удалённого репозитория помогает избежать конфликтов при слиянии. При командной работе важно всегда быть в курсе актуального состояния кода.
  1. Используйте rebase вместо merge для чистоты истории
  • Почему? Rebase помогает избежать лишних merge-коммитов и сохраняет историю проекта линейной и читаемой. Например, чтобы обновить свою ветку относительно основной:
  • git checkout feature/user-auth
  • git rebase main
  1. Держите main ветку чистой
  • Всегда старайтесь, чтобы ветка main оставалась стабильной и готовой к деплою. В неё должны попадать только проверенные и протестированные изменения — это минимизирует риск багов в продакшене.
  1. Используйте .gitignore, чтобы исключения лишних файлов
  • Проект может содержать временные файлы сборки или локальные конфигурации, которые не нужно включать в репозиторий. Файл .gitignore указывает Git, что следует игнорировать. Например:
  • /node_modules
  • .DS_Store
  1. Используйте сквош коммитов для чистоты истории
  • Если вы сделали много мелких коммитов при работе над фичей, имеет смысл объединить их перед слиянием в основную ветку. Это делает историю чище и понятнее::
  • git rebase -i HEAD~<количество коммитов>
  1. Проверяйте изменения перед коммитом
  • Перед коммитом просматривайте изменения с помощью команды ниже, чтобы случайно не зафиксировать ненужные правки:
  • git diff

Заключение

Git — чрезвычайно мощный инструмент в руках тех, кто умеет им пользоваться. Освоив как базовые, так и продвинутые команды, вы сможете эффективно управлять кодовой базой, легко взаимодействовать с командой и избегать типичных ошибок. Соблюдение лучших практик — частые коммиты, информативные сообщения и упорядоченная работа с ветками — значительно улучшит ваш рабочий процесс с Git.

По мере того как вы всё лучше осваиваете продвинутые команды Git — такие как git rebase, git cherry-pick и git bisect — вы будете готовы справляться даже с самыми сложными задачами контроля версий. Благодаря приведённым примерам у вас теперь есть прочная основа, чтобы вывести свои навыки работы с Git на следующий уровень.

Счастливого тестирования! 🙂

Перевод статьи «Git Commands for Test Automation: Best Practices and Advanced Techniques».

🔥 Какой была ваша первая зарплата в QA и как вы искали первую работу? 

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Читать в телеграм

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *