Lộ trình Kỹ sư QA (Tester): Giới thiệu về Git cho Kỹ sư QA


Chào bạn,

Chào mừng bạn quay trở lại với chuỗi bài viết Lộ trình học Kỹ sư QA (Tester) 2025. Cho đến nay, chúng ta đã đi qua nhiều khía cạnh quan trọng của nghề QA, từ việc hiểu Đảm bảo Chất lượng là gì, phát triển tư duy của một người kiểm thử, nắm vững các loại kiểm thử như Black Box, White Box, Gray Box, hay hiểu về các mô hình SDLC phổ biếnvai trò của QA trong Agile. Chúng ta cũng đã khám phá kiểm thử thủ công, cách viết Test Plan, Test Case, Test Script, và cách báo cáo kết quả kiểm thử hiệu quả.

Trong môi trường phát triển phần mềm hiện đại, đặc biệt là với các phương pháp Agile, sự hợp tác giữa các thành viên trong nhóm là yếu tố then chốt. Không chỉ các developer cần phối hợp với nhau, mà QA cũng cần tương tác chặt chẽ với Dev, Business Analyst, Product Owner, và các bên liên quan khác. Một trong những công cụ nền tảng giúp quản lý sự hợp tác này, đặc biệt là trong việc quản lý mã nguồn và các tài nguyên liên quan, chính là Hệ thống kiểm soát phiên bản (Version Control System – VCS).

Và khi nói đến VCS, Git là cái tên không thể bỏ qua. Dù bạn là một QA tập trung vào kiểm thử thủ công hay đang bước chân vào con đường tự động hóa kiểm thử, việc hiểu và sử dụng Git cơ bản là kỹ năng ngày càng cần thiết và mang lại lợi thế đáng kể.

Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu về Git từ góc nhìn của một Kỹ sư QA. Chúng ta sẽ không đi sâu vào mọi ngóc ngách phức tạp của Git (đó là việc của Dev), mà sẽ tập trung vào những khái niệm và lệnh cơ bản nhất mà bạn cần biết để làm việc hiệu quả trong môi trường phát triển.

Git là gì? Tại sao nó là “Người bạn” của nhóm Phát triển?

Hãy tưởng tượng bạn đang làm việc trên một dự án, có rất nhiều người cùng sửa đổi tài liệu hoặc mã nguồn. Làm sao để theo dõi ai đã thay đổi gì, khi nào, tại sao? Làm sao để quay trở lại một phiên bản trước đó nếu có lỗi xảy ra? Làm sao để nhiều người làm việc trên các tính năng khác nhau mà không dẫm chân lên nhau?

Đây chính là lúc Git tỏa sáng. Git là một hệ thống kiểm soát phiên bản phân tán (Distributed Version Control System – DVCS). Nói một cách đơn giản, nó là một công cụ giúp theo dõi mọi thay đổi nhỏ nhất trong các tệp (file) của dự án theo thời gian. Nó lưu lại “lịch sử” của dự án, cho phép bạn xem lại, so sánh, hoàn tác hoặc kết hợp các thay đổi một cách dễ dàng.

Khác với các hệ thống tập trung cũ (như SVN), Git phân tán. Điều này có nghĩa là mỗi người làm việc với kho mã nguồn đều có một bản sao đầy đủ lịch sử của dự án trên máy tính của họ. Điều này giúp làm việc nhanh hơn, linh hoạt hơn và ít phụ thuộc vào kết nối mạng.

Đối với nhóm phát triển, Git là “người bạn” không thể thiếu vì nó:

  • Cho phép nhiều người làm việc song song trên cùng một dự án.
  • Theo dõi lịch sử thay đổi chi tiết, giúp dễ dàng debug và tìm ra nguyên nhân lỗi.
  • Hỗ trợ tạo các “nhánh” (branches) riêng biệt cho từng tính năng hoặc sửa lỗi, giữ cho mã nguồn chính (main/master) luôn ổn định.
  • Giúp hợp nhất (merge) các thay đổi từ các nhánh khác nhau một cách có kiểm soát.
  • Cung cấp khả năng quay ngược thời gian về bất kỳ phiên bản nào trước đó.

Vì sao Kỹ sư QA cần quan tâm đến Git?

Bạn có thể nghĩ: “Tôi là QA, công việc của tôi là tìm lỗi, không phải viết code. Sao tôi phải học Git?”. Suy nghĩ này không hoàn toàn sai, nhưng trong bối cảnh hiện đại, việc hiểu biết về Git mang lại nhiều lợi ích thiết thực cho Kỹ sư QA:

  1. Quản lý Test Artifacts: Không chỉ mã nguồn mới cần kiểm soát phiên bản. Test case, Test Plan, Test Script, tài liệu hướng dẫn kiểm thử… đều là những tài sản quý giá của dự án. Sử dụng Git để lưu trữ và quản lý những tài liệu này giúp bạn theo dõi các phiên bản, biết ai đã thay đổi gì, và hợp tác với các QA khác hoặc BA một cách hiệu quả.
  2. Tự động hóa Kiểm thử (Test Automation): Nếu bạn đang viết hoặc có kế hoạch học tự động hóa kiểm thử (dù là API, UI, hay Mobile), mã nguồn của các script tự động hóa cần được quản lý bằng Git giống như mã nguồn ứng dụng. Bạn sẽ tạo nhánh, commit, push, pull code… y hệt developer.
  3. Hiểu quy trình làm việc của Dev: Khi bạn hiểu cách Dev làm việc với Git (tạo branch, commit, push code, tạo Pull Request), bạn sẽ giao tiếp và phối hợp với họ hiệu quả hơn. Bạn biết mã nguồn mới nhất ở đâu, làm sao để lấy nó về máy để kiểm thử.
  4. Kiểm thử trên các phiên bản code cụ thể: Đôi khi bạn cần kiểm thử một bug chỉ xuất hiện ở một phiên bản code cũ, hoặc kiểm thử một tính năng mới đang được phát triển trên một nhánh riêng. Với Git, bạn có thể dễ dàng chuyển đổi giữa các phiên bản hoặc các nhánh code khác nhau chỉ bằng một vài lệnh đơn giản.
  5. Theo dõi thay đổi: Bằng cách xem lịch sử commit (`git log`) hoặc so sánh các phiên bản (`git diff`), bạn có thể nắm được những phần nào của code đã thay đổi. Điều này cực kỳ hữu ích cho việc xác định phạm vi kiểm thử (regression testing) hoặc hiểu nguyên nhân gốc rễ của một bug.
  6. Báo cáo lỗi chính xác hơn: Khi báo cáo lỗi, việc cung cấp thông tin về phiên bản code cụ thể (ví dụ: hash của commit) mà lỗi xảy ra giúp developer dễ dàng tái hiện và sửa lỗi hơn rất nhiều.
  7. Tham gia vào quy trình CI/CD: Khi dự án áp dụng DevOps và CI/CD, Git là trung tâm. Việc hiểu Git giúp bạn dễ dàng tích hợp các tác vụ kiểm thử tự động vào pipeline hoặc hiểu cách các bản build được tạo ra từ mã nguồn.

Nói tóm lại, Git không chỉ là công cụ cho Developer. Nó là ngôn ngữ chung của các nhóm phát triển hiện đại. Việc nắm vững Git cơ bản giúp bạn làm việc chuyên nghiệp hơn, hiệu quả hơn và là bước đệm vững chắc nếu bạn muốn tiến xa hơn trên lộ trình phát triển sự nghiệp QA, đặc biệt là trong lĩnh vực kiểm thử tự động.

Các Khái Niệm Git Cơ Bản Cần Biết

Để bắt đầu sử dụng Git, bạn cần làm quen với một vài khái niệm cốt lõi:

  • Repository (Kho chứa / Repo): Đây là nơi lưu trữ toàn bộ lịch sử thay đổi của dự án, bao gồm tất cả các tệp và thư mục. Nó có thể nằm trên máy tính của bạn (local repository) hoặc trên một server từ xa như GitHub, GitLab, Bitbucket (remote repository).
  • Commit (Cam kết): Một commit là một “điểm lưu” hay “phiên bản” cụ thể của dự án tại một thời điểm. Mỗi commit chứa thông tin về những thay đổi đã được thực hiện, người tạo commit, thời gian, và một thông điệp mô tả lý do thay đổi. Mỗi commit có một ID duy nhất (một chuỗi ký tự hash).
  • Branch (Nhánh): Là một con trỏ đến một commit cụ thể, cho phép bạn phát triển các tính năng hoặc sửa lỗi một cách song song mà không ảnh hưởng đến mã nguồn chính. Nhánh chính thường có tên là `main` hoặc `master`. Khi bạn làm việc trên một branch, các commit của bạn chỉ ảnh hưởng đến branch đó cho đến khi bạn hợp nhất nó vào một branch khác.
  • HEAD: Con trỏ đặc biệt chỉ vào commit cuối cùng trên branch hiện tại mà bạn đang làm việc.
  • Working Directory (Thư mục làm việc): Các tệp thực tế mà bạn đang thấy và chỉnh sửa trên máy tính của mình.
  • Staging Area (Khu vực chuẩn bị): Một khu vực trung gian giữa Working Directory và Repository. Bạn dùng `git add` để đưa các thay đổi từ Working Directory vào Staging Area, chọn những thay đổi nào sẽ được bao gồm trong commit tiếp theo.
  • Remote (Kho chứa từ xa): Phiên bản của repository được lưu trữ trên server (ví dụ: trên GitHub). Bạn tương tác với remote để chia sẻ code với người khác (`push`) hoặc lấy code của người khác về máy mình (`pull`).

Hãy hình dung quy trình như sau: Bạn thay đổi tệp trong Working Directory. Bạn chọn những thay đổi muốn “lưu” lần này và đưa vào Staging Area (`git add`). Sau đó, bạn tạo một Commit từ các thay đổi trong Staging Area, lưu chúng vào Repository cục bộ của bạn (`git commit`). Cuối cùng, bạn chia sẻ các commit mới này lên Remote Repository để người khác có thể thấy và lấy về (`git push`). Ngược lại, bạn lấy các commit mới nhất từ Remote về máy mình bằng lệnh `git pull`.

Các Lệnh Git Thiết Yếu cho Kỹ sư QA

Bạn không cần phải thuộc lòng tất cả các lệnh Git ngay lập tức. Dưới đây là những lệnh cơ bản và thường dùng nhất mà một Kỹ sư QA cần biết:

Thiết lập và Bắt đầu

  • git --version: Kiểm tra phiên bản Git đã cài đặt.
  • git config --global user.name "Tên của bạn": Thiết lập tên người dùng (chỉ làm lần đầu).
  • git config --global user.email "[email protected]": Thiết lập email (chỉ làm lần đầu).
  • git clone [URL_cua_repository]: Tải toàn bộ dự án từ một kho chứa từ xa về máy tính của bạn. Đây là lệnh đầu tiên bạn thường dùng khi tham gia một dự án mới.
git clone https://github.com/example/ten-du-an.git

Kiểm tra trạng thái và Lịch sử

  • git status: Hiển thị trạng thái hiện tại của Working Directory và Staging Area. Cho biết tệp nào đã được thay đổi, tệp nào đang chờ được add vào Staging Area, tệp nào đã sẵn sàng commit… Đây là lệnh bạn sẽ dùng RẤT NHIỀU.
  • git log: Hiển thị lịch sử các commit. Bạn có thể thấy ID commit, tác giả, thời gian và thông điệp commit.
git status
git log

Làm việc với Thay đổi

  • git add [ten_tep]: Đưa một hoặc nhiều tệp từ Working Directory vào Staging Area. Dùng git add . để thêm tất cả các tệp đã thay đổi hoặc mới tạo trong thư mục hiện tại.
  • git commit -m "Thông điệp mô tả commit": Tạo một commit mới từ các tệp đã có trong Staging Area. Thông điệp commit cần ngắn gọn, súc tích và mô tả rõ ràng mục đích của các thay đổi.
  • git diff: Hiển thị sự khác biệt giữa Working Directory và Staging Area, hoặc giữa Staging Area và commit cuối cùng. Hữu ích để xem lại bạn đã thay đổi gì trước khi commit.
git add .
git commit -m "Thêm test case cho tính năng đăng nhập"
git diff

Làm việc với Branch

  • git branch: Liệt kê tất cả các branch hiện có trong repository cục bộ. Branch hiện tại sẽ được đánh dấu.
  • git branch [ten_nhanh_moi]: Tạo một branch mới (nhánh này sẽ trỏ đến commit hiện tại).
  • git checkout [ten_nhanh] hoặc git switch [ten_nhanh]: Chuyển sang làm việc trên branch đã chỉ định. Đây là lệnh quan trọng để chuyển đổi giữa các tính năng hoặc phiên bản code khác nhau.
git branch
git branch feature/test-automation-login
git checkout feature/test-automation-login

Lưu ý: Kể từ Git 2.23, lệnh git switch được khuyến khích dùng thay cho git checkout để chuyển branch, giúp phân biệt rõ ràng hơn với việc checkout một file hoặc một commit cụ thể.

Làm việc với Remote Repository (GitHub, GitLab…)

  • git pull origin [ten_nhanh]: Tải về các thay đổi mới nhất từ remote repository (origin là tên mặc định của remote) trên branch đã chỉ định và tự động hợp nhất (merge) chúng vào branch cục bộ hiện tại của bạn. Đây là lệnh bạn nên chạy thường xuyên để cập nhật code. Thường là git pull origin main (hoặc master).
  • git push origin [ten_nhanh]: Đẩy các commit mới từ repository cục bộ của bạn lên remote repository trên branch đã chỉ định. Đây là cách bạn chia sẻ công việc của mình với nhóm. Thường là git push origin feature/ten-nhanh-cua-ban.
git pull origin main
git push origin feature/test-automation-login

Hoàn tác (Undo)

  • git restore [ten_tep]: Hủy bỏ các thay đổi chưa được add vào Staging Area trong một tệp cụ thể, đưa nó về trạng thái của commit gần nhất hoặc Staging Area (tùy cách dùng).
  • git restore --staged [ten_tep]: Gỡ một tệp ra khỏi Staging Area, đưa nó trở lại trạng thái “modified” trong Working Directory.
  • git reset --hard [commit_id]: Rất cẩn thận khi dùng lệnh này! Nó sẽ đưa Working Directory và Staging Area về trạng thái của commit được chỉ định, và *xóa bỏ* tất cả các thay đổi chưa commit sau đó. Chỉ dùng khi bạn hiểu rõ rủi ro.
git status # Thấy file abc.txt đã thay đổi
git restore abc.txt # Hoàn tác thay đổi trong abc.txt

git add xyz.txt # Đã add vào Staging Area nhưng muốn gỡ ra
git restore --staged xyz.txt # Gỡ khỏi Staging Area

git log # Tìm commit ID muốn quay về
git reset --hard abcdef123 # Quay về commit abcdef123

Quy trình làm việc với Git trong bối cảnh QA

Vậy một ngày làm việc của QA với Git có thể diễn ra như thế nào? Đây là một kịch bản phổ biến:

  1. Bắt đầu ngày mới/Sprint mới: Bạn cần đảm bảo mình đang làm việc với phiên bản code mới nhất.
    git checkout main # Chuyển về nhánh chính (nếu chưa ở đó)
    git pull origin main # Kéo code mới nhất về

    Nếu nhóm làm việc trên nhiều nhánh tính năng, bạn cần hỏi xem code cần test đang nằm ở nhánh nào và chuyển sang nhánh đó:

    git checkout feature/ten-tinh-nang
  2. Kiểm thử tính năng mới: Bạn thực hiện kiểm thử chức năng trên branch tính năng.
  3. Tìm thấy Bug: Ghi nhận bug, có thể tạo report trên các công cụ quản lý dự án. Khi báo cáo bug, ghi rõ bạn đang test trên branch nào và commit ID nào (lấy từ `git log`).
  4. Phát triển Test Automation Script: Nếu bạn đang viết script tự động hóa, đây là lúc Git trở nên cực kỳ quan trọng.
    • Tạo một nhánh riêng cho công việc của bạn:
      git checkout -b feat/automation-login-feature # Tạo và chuyển sang nhánh mới

      Lệnh git checkout -b [ten_nhanh_moi] kết hợp việc tạo branch mới và chuyển sang branch đó.

    • Viết/chỉnh sửa code automation.
    • Kiểm tra các tệp đã thay đổi:
      git status
    • Thêm các thay đổi vào Staging Area:
      git add .
    • Tạo commit:
      git commit -m "Implement automation test for login feature"
    • Đẩy code lên remote repository để chia sẻ hoặc backup:
      git push origin feat/automation-login-feature
    • Khi hoàn thành, bạn có thể tạo một Pull Request (trên GitHub/GitLab…) để đồng nghiệp (ví dụ: QA leader hoặc developer) review code automation của bạn trước khi merge vào branch chính của automation script.
  5. Kiểm thử Regression trên một phiên bản cũ: Đôi khi cần kiểm thử lại trên một release cũ.
    • Tìm commit ID hoặc tag của phiên bản cũ đó (`git log`).
    • Chuyển về commit đó:
      git checkout [commit_id_hoac_tag]

      Lưu ý: Khi checkout một commit ID cụ thể, bạn sẽ ở trạng thái “detached HEAD”, tức là không ở trên bất kỳ branch nào. Bạn có thể tạo một branch mới từ đây nếu cần làm việc tiếp, hoặc chỉ đơn giản là kiểm thử rồi quay lại branch chính.

    • Kiểm thử.
    • Quay lại branch làm việc chính:
      git checkout main

Đây chỉ là một vài ví dụ. Tùy thuộc vào quy trình của dự án, bạn có thể tương tác với Git theo nhiều cách khác.

Tổng kết các Khái niệm và Lệnh cơ bản

Để dễ hình dung, đây là bảng tóm tắt các khái niệm và lệnh cơ bản nhất cho QA:

Khái Niệm Cơ Bản Mô Tả Lệnh Git Thường Dùng Mục Đích với QA
Repository (Repo) Nơi lưu trữ toàn bộ dự án và lịch sử thay đổi git clone, git status Lấy code về máy, xem trạng thái dự án
Commit Một “phiên bản” cụ thể của dự án git commit, git log Lưu lại thay đổi, xem lịch sử, xác định phiên bản bug
Branch (Nhánh) Luồng làm việc song song git branch, git checkout / git switch Làm việc trên các tính năng/phiên bản riêng, quản lý code automation
Working Directory Các file thực tế bạn đang chỉnh sửa git status, git add Khu vực làm việc chính, chuẩn bị file để commit
Staging Area Khu vực chuẩn bị cho commit git add, git status, git commit Chọn lọc các thay đổi sẽ đưa vào commit tiếp theo
Remote (Origin) Kho chứa trên server (GitHub, GitLab…) git clone, git pull, git push Lấy/đẩy code, hợp tác với nhóm
Pull Cập nhật code từ remote về máy git pull origin [nhánh] Luôn làm việc với code mới nhất
Push Đẩy code từ máy lên remote git push origin [nhánh] Chia sẻ code automation, test artifacts với nhóm

Lời khuyên cho người mới bắt đầu với Git

  • Đừng sợ sai: Hầu hết các thao tác với Git đều có thể hoàn tác (undo). Hãy thoải mái thử nghiệm trên các repository cá nhân hoặc nhánh riêng.
  • Sử dụng GUI tools: Ban đầu, việc ghi nhớ lệnh có thể khó khăn. Hãy thử sử dụng các công cụ Git GUI như SourceTree, GitKraken, hoặc tích hợp Git trong các IDE (VS Code, IntelliJ IDEA…). Chúng giúp bạn hình dung rõ hơn về các khái niệm như branch, commit, merge.
  • Luôn chạy git status: Đây là lệnh thần chú giúp bạn biết chính xác đang có gì xảy ra trong repository của mình trước khi thực hiện các lệnh khác.
  • Hỏi đồng nghiệp: Đừng ngần ngại hỏi developer hoặc các QA có kinh nghiệm hơn trong nhóm khi bạn gặp khó khăn.
  • Thực hành thường xuyên: Cách tốt nhất để học Git là sử dụng nó hàng ngày. Bắt đầu bằng việc quản lý test artifacts của riêng bạn bằng Git, sau đó tham gia đóng góp vào repository code automation của nhóm.

Kết luận

Git là một công cụ mạnh mẽ và không thể thiếu trong môi trường phát triển phần mềm hiện đại. Đối với Kỹ sư QA, việc nắm vững Git cơ bản không chỉ giúp bạn quản lý tài liệu kiểm thử và mã nguồn tự động hóa hiệu quả, mà còn giúp bạn hòa nhập tốt hơn vào quy trình làm việc chung của nhóm, hiểu rõ hơn về vòng đời phát triển phần mềm và nâng cao khả năng hợp tác với developer.

Đừng coi Git là một rào cản. Hãy coi nó là một kỹ năng cần thiết giúp bạn trở thành một QA chuyên nghiệp và toàn diện hơn. Bắt đầu từ những lệnh cơ bản nhất như clone, status, pull, checkout. Dần dần, bạn sẽ làm quen với các lệnh khác và tự tin làm việc với Git.

Bài viết này chỉ là phần giới thiệu. Git có rất nhiều khía cạnh sâu hơn. Khi bạn đã làm quen với những kiến thức cơ bản này, bạn có thể tìm hiểu thêm về cách xử lý xung đột khi merge (merge conflicts), rebase, Gitflow workflow, và các khái niệm nâng cao khác nếu công việc yêu cầu.

Chúc bạn học tốt và hẹn gặp lại trong các bài viết tiếp theo của chuỗi Lộ trình Kỹ sư QA (Tester)!


Chỉ mục