Đang tải...

Lửng Lọc Lõi

Đeo kính để soi Bug cho rõ, nhíu mày để nhắc Dev sửa cho kỹ. Với tôi, 'chạy được' thôi là chưa đủ! 🧐💻


0

Playwright vs Selenium: Chọn Tool Automation Nào Cho Tester Fresher?

Lửng Lọc Lõi
Lửng Lọc Lõi

5 tháng trước · 19 phút đọc

Playwright và Selenium đang đứng ở đâu năm 2025?

Mình nhớ hồi mới học automation, câu hỏi đầu tiên mình Google là: "nên học Selenium hay Playwright?". Tìm cả tiếng thì toàn câu trả lời mâu thuẫn nhau - người bảo Selenium là chuẩn, người bảo Playwright mới là tương lai. Mình đoán bạn đang trong tình huống tương tự.

Sự thật là: cả hai đều đang được dùng thực tế ở Việt Nam. Không có "đúng" hay "sai" tuyệt đối. Nhưng với fresher, chọn sai tool để học trước có thể mất thêm 2-3 tháng - hoặc tệ hơn, bỏ cuộc vì thấy khó quá.

Bài này mình sẽ phân tích thẳng: tool nào phù hợp cho bạn, dựa trên thực tế thị trường tuyển dụng và dự án ở Việt Nam - không phải lý thuyết trên paper.

343664 Hai tool, hai hướng đi - quan trọng là chọn đúng từ đầu

Theo khảo sát Stack Overflow Developer Survey 2024, Playwright đang tăng trưởng mạnh trong cộng đồng tester toàn cầu, trong khi Selenium vẫn giữ vị trí top về độ phổ biến doanh nghiệp. Ở Việt Nam, bức tranh có phần khác một chút - mình sẽ nói rõ ở phần sau.


Selenium: Người anh cả 20 năm kinh nghiệm

Selenium ra đời năm 2004. Tính đến nay, 22 (ukdataservices.co.uk) năm tuổi - trong thế giới công nghệ, đây là con số khổng lồ. Điều đó nghĩa là gì?

Ưu điểm thực tế của Selenium:

  • Cộng đồng cực lớn: Stack Overflow có hơn 110K+ (tech-insider.org) câu hỏi về Selenium. Bạn gặp lỗi gì, gần như chắc chắn đã có người hỏi và trả lời rồi.
  • Hỗ trợ đa ngôn ngữ: Java, Python, C#, Ruby, JavaScript. Dự án đang dùng Java? Selenium có. Python? Selenium có.
  • Nhiều JD tuyển dụng hơn: Ở Việt Nam, phần lớn công ty outsourcing (đặc biệt làm cho khách Nhật, Hàn) vẫn đang chạy Selenium + Java/Python trên framework cũ.
  • Selenium Grid: Chạy test song song trên nhiều máy, nhiều browser - phù hợp dự án enterprise lớn.

343665 Selenium vẫn chiếm đa số JD tuyển dụng outsourcing Việt Nam

Nhược điểm - nói thật luôn:

Selenium không có built-in wait thông minh. Bạn sẽ phải tự viết WebDriverWait mỗi khi chờ element load. Mình từng mất cả buổi debug chỉ vì cái StaleElementReferenceException - phần tử vừa tìm được, DOM thay đổi, là mất. Với React/Vue app hiện đại render liên tục, đây là nỗi đau thật.

Cài đặt cũng không dễ. ChromeDriver phải khớp với version Chrome đang dùng - nghe có vẻ nhỏ, nhưng mình biết nhiều bạn fresher bỏ cuộc ngay bước cài đặt. Selenium 4 đã cải thiện phần này với Selenium Manager, nhưng vẫn chưa hoàn hảo.

Setup một project Selenium từ đầu với Java mất khoảng 2-3 ngày nếu bạn chưa quen Maven/Gradle, TestNG, và cấu trúc Page Object Model.


Playwright: Người mới nhưng làm được nhiều hơn

Microsoft ra mắt Playwright năm 2020. Chỉ 5 năm, nhưng tốc độ phát triển gây sốc.

343666 Playwright được thiết kế để giải quyết đúng vấn đề Selenium để lại

Playwright giỏi hơn Selenium ở đâu?

Mình thích cách Playwright xử lý chờ đợi nhất. Thay vì bạn phải WebDriverWait(driver, 10).until(...) mỗi lần, Playwright tự động chờ element sẵn sàng trước khi tương tác. Viết page.click('#submit') - nó tự biết chờ button load xong rồi mới click. Với app React/Vue, điều này tiết kiệm ít nhất 30% thời gian debug flaky test.

Tốc độ nhanh hơn đáng kể. Playwright chạy test parallel mặc định, và dùng browser context thay vì mở browser mới hoàn toàn cho mỗi test. Kết quả thực tế: test suite 100 test cases chạy trong khoảng 3-4 phút so với 8-10 phút của Selenium (tùy dự án).

Playwright Codegen - tính năng mình hay dùng để giới thiệu cho fresher. Bạn record thao tác trên browser, nó tự tạo code. Không cần biết selector, không cần nhớ cú pháp. Để học cách tool hoạt động, đây là shortcut cực tốt.

Thêm vào đó: built-in test reporter đẹp, trace viewer để debug, hỗ trợ API testing ngay trong framework - không cần cài thêm gì.

Nhược điểm của Playwright:

Cộng đồng còn nhỏ hơn Selenium - khi gặp lỗi edge case, đôi khi phải tự debug hoặc đọc source code. JD tuyển dụng Playwright tại Việt Nam vẫn ít hơn, chủ yếu ở công ty product, startup, hoặc outsource làm cho khách Mỹ/Châu Âu. Playwright chỉ hỗ trợ JavaScript/TypeScript, Python, Java, C# - không có Ruby.


So sánh thẳng: Bảng đối chiếu cho fresher

Nhiều bài blog so sánh Playwright vs Selenium theo tiêu chí kỹ thuật - tốc độ, tính năng, hệ sinh thái. Nhưng với fresher, câu hỏi thực tế hơn là: cái nào dễ học hơn, và cái nào giúp xin việc nhanh hơn?

343667 Nhìn bảng này trước khi quyết định bắt đầu với tool nào

Tiêu chí Selenium Playwright
Độ khó setup ban đầu Trung bình - cao Thấp (5-10 phút)
Thời gian viết test case đầu tiên 1-2 ngày Vài giờ
Auto-wait Không (tự viết) Có (built-in)
Ngôn ngữ hỗ trợ Java, Python, C#, Ruby, JS JS/TS, Python, Java, C#
Số JD tuyển dụng VN (outsource) Nhiều hơn Ít hơn
Số JD tuyển dụng VN (product/startup) Ít hơn Tăng nhanh
Debug lỗi Khó hơn với app hiện đại Trace viewer trực quan
Codegen (tự tạo code) Không
Cộng đồng & tài liệu Rất lớn Tốt, đang tăng
Phù hợp học đầu tiên Nếu mục tiêu outsource Nếu mục tiêu product/startup

Nhìn bảng này, bạn thấy không có tool nào "thắng" tuyệt đối. Bạn sẽ chọn dựa trên loại công ty bạn muốn apply, không phải dựa trên tool nào "tốt hơn về kỹ thuật".


Thực tế thị trường Việt Nam: Doanh nghiệp đang dùng gì?

Mình hay xem JD tuyển tester trên TopCV, ITviec và LinkedIn để hiểu thị trường. Dưới đây là những gì mình quan sát được, không phải số liệu khảo sát chính thức - nên hãy kiểm chứng thêm nhé.

343668 Phân khúc thị trường quyết định tool bạn nên học trước

Công ty outsourcing (làm dự án Nhật, Hàn, Đài Loan): Đây là phân khúc tuyển nhiều fresher nhất. Selenium + Java hoặc Selenium + Python vẫn là combo phổ biến nhất ở mảng này. Lý do đơn giản: các dự án cũ đã viết bằng Selenium từ 5-7 năm trước, không ai muốn migrate. Bạn vào là phải maintain và extend framework có sẵn.

Công ty outsourcing (làm dự án Mỹ, Châu Âu, Úc): Playwright đang xuất hiện nhiều hơn ở đây, đặc biệt dự án mới bắt đầu từ 2022 trở đi. TypeScript + Playwright là combo được nhắc đến khá thường. Cypress cũng cạnh tranh mạnh trong phân khúc này.

Startup và công ty product: Playwright hoặc Cypress. Hiếm khi thấy Selenium ở đây trừ các công ty đã dùng nhiều năm. Startup thích Playwright vì setup nhanh, maintain ít, và JavaScript/TypeScript là ngôn ngữ quen thuộc với team.

Ngân hàng, fintech, bảo hiểm: Selenium + Java vẫn là king. Một phần vì đội dev Java nhiều, một phần vì quy trình phê duyệt tool mới cực kỳ chậm.

Tóm lại: Nếu bạn muốn vào outsourcing nhanh nhất - học Selenium trước. Nếu bạn nhắm đến startup hoặc công ty product - Playwright là lựa chọn tốt hơn.


Bắt đầu với Selenium: Hướng dẫn cho fresher

Bạn đã quyết định học Selenium? Tốt. Đây là con đường nhanh nhất để bắt đầu - không phải tutorial dài 10 tiếng trên YouTube.

Bước 1: Cài đặt môi trường (Python - dễ hơn cho người mới)

Mình khuyên Python thay vì Java cho fresher học Selenium lần đầu. Ít boilerplate code hơn, dễ đọc hơn.

# Cài Selenium
pip install selenium

# Selenium 4 có Selenium Manager - tự tải driver phù hợp
# Không cần tải ChromeDriver thủ công nữa

Bước 2: Test case đầu tiên - trang Google

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Khởi động Chrome (Selenium 4 tự quản lý driver)
driver = webdriver.Chrome()

# Mở trang đăng nhập demo
driver.get("https://www.google.com")

# Tìm ô tìm kiếm và nhập text
search_box = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.NAME, "q"))
)
search_box.send_keys("Selenium Python tutorial")
search_box.submit()

# Kiểm tra kết quả có xuất hiện không
assert "Selenium" in driver.title
print("Test PASSED!")

# Đóng browser
driver.quit()

343669 Test case đầu tiên chạy được là cột mốc quan trọng nhất

Bước 3: Học Page Object Model (POM) - QUAN TRỌNG

Không cần học POM ngay ngày đầu, nhưng phải học trước khi đi phỏng vấn. Gần như 100% công ty hỏi về POM trong vòng phỏng vấn automation tester.

POM là cách tổ chức code: mỗi trang web là 1 class Python, chứa selector và action của trang đó. Test case chỉ gọi method từ class, không viết selector lộn xộn.

Lộ trình học Selenium (4-6 tuần):

  • Tuần 1: Cài đặt, viết test đơn giản, hiểu locator (id, name, xpath, css)
  • Tuần 2-3: WebDriverWait, xử lý alert/iframe/dropdown
  • Tuần 4: Page Object Model
  • Tuần 5-6: Tích hợp pytest + tạo báo cáo HTML

Tải checklist học Selenium đầy đủ: Checklist học Selenium 6 tuần


Bắt đầu với Playwright: Hướng dẫn cho fresher

Playwright setup nhanh hơn đáng kể. Từ zero đến test case đầu tiên chạy được, bạn chỉ cần khoảng 20-30 phút.

Bước 1: Cài đặt (dùng Node.js + TypeScript)

# Tạo project mới
npm init playwright@latest

# Chọn: TypeScript, tests/ folder, GitHub Actions (no), install browsers (yes)
# Playwright tự cài Chromium, Firefox, WebKit - không cần lo driver

Bước 2: Test case đầu tiên - trang đăng nhập

import { test, expect } from '@playwright/test';

test('Đăng nhập thành công', async ({ page }) => {
  // Mở trang đăng nhập
  await page.goto('https://demo.playwright.dev/todomvc');
  
  // Playwright tự chờ element sẵn sàng - không cần WebDriverWait
  await page.getByPlaceholder('What needs to be done?').fill('Học Playwright');
  await page.keyboard.press('Enter');
  
  // Kiểm tra task đã xuất hiện chưa
  await expect(page.getByText('Học Playwright')).toBeVisible();
});
# Chạy test
npx playwright test

# Xem báo cáo đẹp
npx playwright show-report

343670 Playwright report tích hợp sẵn, không cần cài thêm

Bước 3: Thử Codegen - tính năng "ăn gian" cực hay

# Chạy lệnh này, browser mở lên, bạn click gì là nó tạo code đó
npx playwright codegen https://demo.playwright.dev/todomvc

Bạn không cần nhớ cú pháp getByRole, getByPlaceholder, getByTestId. Record xong, copy code, chỉnh sửa theo ý. Với người mới, đây là cách học selector nhanh nhất.

Lộ trình học Playwright (3-4 tuần):

  • Tuần 1: Setup, Codegen, viết test cơ bản
  • Tuần 2: Locator strategies, assertions, fixtures
  • Tuần 3: Page Object Model, API testing
  • Tuần 4: Parallel, CI/CD với GitHub Actions

Nếu bạn biết JavaScript cơ bản, lộ trình này rút ngắn được 1 tuần. Nếu chưa biết JS, mình gợi ý xem qua Lập Trình JavaScript Cơ Bản trên F8 - miễn phí và cover đúng phần bạn cần để hiểu Playwright.

Tải checklist học Playwright đầy đủ: Checklist học Playwright 4 tuần


Case study: Dự án thực tế ở Việt Nam

Mình sẽ chia sẻ 2 tình huống điển hình mình gặp - không đặt tên nhân vật, chỉ mô tả tình huống thật.

Tình huống 1 - Outsource cho khách Nhật:

Một bạn fresher apply vào team QA của công ty outsource, dự án là hệ thống quản lý nội bộ cho khách Nhật. Team đang chạy Selenium + Java + TestNG từ 4 năm trước. Framework có sẵn, bạn fresher vào là phải đọc code, hiểu POM đã được viết, rồi extend thêm test case mới.

Tuần đầu: đọc code cũ, hiểu cấu trúc. Tuần 2-3: viết thêm 15-20 test case theo template có sẵn. Không cần setup, không cần thiết kế framework từ đầu. Kỹ năng cần có khi phỏng vấn: biết locator, biết WebDriverWait, biết POM là gì. Thực ra không khó.

343671 Fresher gia nhập framework sẵn thường ổn hơn xây từ đầu

Tình huống 2 - Startup fintech:

Một team startup 15 người, tester là người thứ 2 trong team QA. Không có framework cũ. Lead tester quyết định dùng Playwright + TypeScript vì dev đang dùng React + TypeScript, share được locator và type definitions.

Bạn fresher này phải học Playwright từ đầu, nhưng được support từ lead. Sau 3 tuần, tự viết E2E test cho flow thanh toán và đăng ký tài khoản. Playwright Codegen giúp bạn tạo selector nhanh, Trace Viewer giúp debug khi test fail mà không biết tại sao.

Điểm khác biệt rõ nhất: ở startup, bạn phải tự chủ hơn, nhưng học được nhiều hơn. Ở outsource, an toàn hơn nhưng ít sáng tạo hơn.

Cả 2 tình huống đều có fresher thành công - quan trọng là bạn chọn đúng môi trường phù hợp với bản thân, rồi học đúng tool cho môi trường đó.


Checklist: Khi nào dùng tool nào để xin việc nhanh

Thay vì đọc lý thuyết, mình tổng hợp thành checklist thực dụng. Trả lời từng câu, xem kết quả ở cuối.

343672 Trả lời 5 câu hỏi này - bạn sẽ biết mình nên học tool gì

Trả lời các câu hỏi dưới đây:

1. Loại công ty bạn muốn apply là gì?

  • Outsource (Nhật/Hàn/Đài Loan) → điểm Selenium +2
  • Outsource (Mỹ/Châu Âu) → điểm Playwright +1, Selenium +1
  • Startup hoặc product company → điểm Playwright +2
  • Ngân hàng/fintech lớn → điểm Selenium +2

2. Bạn có background kỹ thuật không?

  • Đã biết Java/Python → Selenium dễ vào hơn
  • Đã biết JavaScript/TypeScript → Playwright dễ vào hơn
  • Chưa biết ngôn ngữ lập trình nào → Playwright Python dễ bắt đầu hơn

3. Bạn muốn xin việc trong bao lâu?

  • Dưới 3 tháng → Selenium (nhiều JD hơn, framework có sẵn ở hầu hết công ty outsource)
  • 3-6 tháng → Playwright (ít JD hơn nhưng tăng trưởng nhanh)

4. Dự án bạn sẽ test là gì?

  • Web app React/Vue/Angular (app SPA hiện đại) → Playwright xử lý tốt hơn
  • Web app cũ (jQuery, server-side rendering) → Selenium ổn
  • Mobile app → cả hai không phải lựa chọn tốt nhất (cần Appium)

5. Team bạn đang có dùng gì?

  • Nếu team đang dùng Selenium → học Selenium để contribute ngay
  • Nếu team đang dùng Playwright → học Playwright
  • Nếu chưa có team → dựa vào 4 câu trên

Kết quả:

  • Nhiều điểm Selenium hơn → Bắt đầu với Selenium + Python (outsource nhanh nhất)
  • Nhiều điểm Playwright hơn → Bắt đầu với Playwright + TypeScript (startup/product)
  • Bằng nhau → Học Playwright trước (setup nhanh hơn, ít đau đầu hơn, tương lai rộng hơn)

Tải file checklist đầy đủ để in ra và điền: Tải checklist chọn tool Playwright vs Selenium


Câu hỏi phỏng vấn thường gặp về Playwright và Selenium

Biết dùng tool chưa đủ. Phỏng vấn automation tester còn hỏi về lý thuyết và khả năng giải thích. Mình tổng hợp câu hỏi hay gặp nhất.

Câu hỏi chung cho cả hai tool:

  • "Bạn có thể giải thích Page Object Model là gì và tại sao cần dùng?"
  • "Khi test fail, bạn debug bằng cách nào?"
  • "Flaky test là gì? Bạn xử lý thế nào?"
  • "Bạn chọn locator như thế nào cho ổn định?"

343673 Phỏng vấn hỏi lý do bạn chọn cái này hơn cái kia - hãy có câu trả lời sẵn

Câu hỏi đặc thù Selenium:

  • "Khác nhau giữa implicit wait và explicit wait là gì?"
  • "Giải thích StaleElementReferenceException và cách fix?"
  • "Selenium Grid dùng để làm gì?"
  • "Bạn tổ chức project theo cấu trúc nào? (TestNG, Maven, POM)"

Câu hỏi đặc thù Playwright:

  • "Playwright khác Selenium ở điểm nào? Tại sao bạn chọn Playwright?"
  • "Auto-waiting trong Playwright hoạt động như thế nào?"
  • "Trace Viewer dùng để làm gì?"
  • "Bạn đã dùng API testing trong Playwright chưa?"

Một điểm mình nhấn mạnh: đừng học vẹt câu trả lời. Interviewer sẽ hỏi follow-up ngay. Hiểu tại sao, rồi trả lời bằng lời của bạn - dù ngắn hơn, vẫn thuyết phục hơn câu trả lời "đúng sách" mà không hiểu.

Với fresher trái ngành, câu hỏi hay được thêm vào là: "Bạn tự học thế nào? Có project thực hành nào chưa?" - đây là lúc portfolio GitHub có test case thật của bạn phát huy tác dụng.


Kết luận: Test kỹ từ đầu, không phải vội về sau

Nhiều bạn hỏi mình: "Học cả hai được không?" - Được, nhưng đừng học song song cùng lúc. Học xong một tool đến mức viết được test case thực tế, đi phỏng vấn được, rồi mới học thêm cái kia. Học hai thứ cùng lúc, biết cả hai mà không thành thạo cái nào - không giúp được gì trong phỏng vấn.

Lộ trình mình hay gợi ý:

Nếu bạn chưa có kinh nghiệm automation nào, bắt đầu với Playwright + Python - setup đơn giản, auto-wait giảm nhiều lỗi vặt, cú pháp Python dễ đọc. Dùng Codegen để hiểu cách locator hoạt động. Sau 4-6 tuần, bạn có đủ để đi phỏng vấn junior automation tester.

Sau khi có việc, bạn sẽ gặp Selenium ở nhiều công ty - lúc đó học thêm 2-3 tuần là OK vì bạn đã hiểu automation concept rồi, chỉ cần map sang cú pháp Selenium.

343674 Thành thạo 1 tool > biết sơ 2 tool - câu này đúng với tester fresher

Mình từng bỏ qua bước thực hành, chỉ đọc lý thuyết về Selenium suốt 2 tuần. Kết quả? Đến khi ngồi xuống viết test case thật, vẫn không biết bắt đầu từ đâu. Bài học: setup ngay từ ngày đầu, viết test case thật từ ngày đầu - dù test case đó chỉ là "mở browser, vào Google, đóng lại".

Tóm lại:

  1. Xác định loại công ty muốn apply
  2. Dùng checklist ở phần trước để chọn tool
  3. Setup môi trường ngay hôm nay, không chờ "học thêm lý thuyết"
  4. Viết 20-30 test case thật, push lên GitHub
  5. Apply job, đề cập portfolio trong CV

Thấy khó ở bước nào cứ comment bên dưới, mình trả lời từng bạn. Chúc bạn xin việc thành công!