Đ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

Automation Testing Là Gì? Nền Tảng Selenium Và Appium Cho Người Mới

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

6 tháng trước · 13 phút đọc

Automation testing là gì và tại sao bạn cần biết?

Mình nhớ lần đầu nghe từ "automation testing", cứ nghĩ đây là thứ gì đó phức tạp, cần biết code sâu mới đụng vào được. Kết quả? Mình mất gần 6 tháng làm manual trước khi nhận ra: không phải vậy.

Nói đơn giản, automation testing là dùng tool/script để tự động chạy test case thay cho tay người. Thay vì mỗi lần release bạn phải ngồi click từng màn hình kiểm tra - script làm thay, nhanh hơn, không mỏi tay, không bỏ sót.

342807 Automation không thay thế tester - nó giải phóng thời gian để test những thứ thú vị hơn

Nhưng tự động hóa không có nghĩa "làm thay tất cả". Có những thứ automation làm tốt hơn người:

  • Chạy đi chạy lại 500 test case regression sau mỗi deploy mà không phàn nàn
  • Test cùng lúc trên nhiều browser, thiết bị khác nhau
  • Báo kết quả ngay lập tức, không cần chờ tester ngồi gõ

Và có những thứ automation không thay được: kiểm tra UX tổng thể, exploratory testing, hay phán đoán "trông cái này kỳ dù pass hết test case".

Điểm mấu chốt: Automation là công cụ, không phải mục tiêu. Biết khi nào dùng mới là kỹ năng thật sự.


Manual testing vs automation testing: Cái nào phù hợp hơn?

Câu hỏi mình hay nhận được: "Học automation luôn cho nhanh, manual còn cần không?"

Cần. Rất cần. Và đây là lý do:

342808 Manual và automation không đối lập - chúng bổ sung cho nhau trong vòng đời kiểm thử

Tiêu chí Manual Testing Automation Testing
Thời gian học Nhanh hơn Cần nền tảng hơn
Chi phí setup Gần như 0 Cần đầu tư tool/code
Phù hợp khi nào Test mới, khám phá, UX Regression, load test, lặp lại
Khi app thay đổi liên tục Linh hoạt dễ điều chỉnh Script hay bị "gãy" phải update
Tốc độ chạy Chậm nếu nhiều case Nhanh hơn nhiều lần

Thực tế ở Việt Nam, phần lớn công ty vừa và nhỏ vẫn dùng manual testing là chính - đặc biệt với startup hoặc dự án ngắn hạn. Automation có giá trị rõ nhất khi project chạy dài, release thường xuyên, và có đủ budget để duy trì script.

Vậy fresher nên bắt đầu từ đâu? Manual trước, automation sau. Không phải vì automation khó hơn, mà vì bạn cần hiểu app hoạt động ra sao, hiểu flow người dùng thế nào, trước khi viết script tự động hóa. Viết automation mà không hiểu business logic - script chạy xanh hết mà bug vẫn tồn tại.


Selenium là gì và làm được gì?

Selenium là framework open-source phổ biến nhất để automation testing cho web application. Ra đời từ 2004, đến giờ vẫn là lựa chọn số 1 của đa số team QA khi cần tự động hóa test trên browser.

Selenium hoạt động bằng cách điều khiển trực tiếp browser (Chrome, Firefox, Edge...) qua WebDriver - hiểu nôm na là "con rối" giúp script của bạn mô phỏng thao tác người dùng: click, nhập text, scroll, chờ element xuất hiện.

342809 Selenium WebDriver điều khiển browser y như người dùng thật ngồi thao tác

Bạn có thể viết script Selenium bằng nhiều ngôn ngữ: Python, Java, C#, JavaScript. Trong cộng đồng tester Việt Nam, Python + Selenium là combo được học nhiều nhất vì Python dễ đọc, dễ debug.

Một đoạn script đơn giản dùng Python để test đăng nhập trông như thế này:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# Khởi động Chrome browser
driver = webdriver.Chrome()

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

# Nhập username
driver.find_element(By.ID, "username").send_keys("[email protected]")

# Nhập password
driver.find_element(By.ID, "password").send_keys("Test@123")

# Click nút Đăng nhập
driver.find_element(By.XPATH, "//button[text()='Đăng nhập']").click()

# Chờ 2 giây rồi kiểm tra kết quả
time.sleep(2)
assert "Dashboard" in driver.title, "Đăng nhập thất bại!"

print("Test PASS: Đăng nhập thành công")
driver.quit()

Nhìn vào đây, bạn thấy không? Không có gì quá phức tạp. Đây là lý do tại sao tester trái ngành vẫn học được - logic giống như viết test case, chỉ là dùng code thay vì ngôn ngữ tự nhiên.

Selenium phù hợp khi:

  • Cần test web application trên nhiều browser
  • Dự án release thường xuyên, cần chạy regression nhanh
  • Team đã có nền tảng manual testing tốt

Giới hạn của Selenium: không test được mobile app native, không tốt với app có nhiều element động phức tạp (SPA với nhiều AJAX), và cần setup khá nhiều bước so với một số tool thương mại.


Appium là gì và khác Selenium ở điểm nào?

Nếu Selenium là "vua" test web, thì Appium là lựa chọn hàng đầu để automation testing cho mobile app - cả Android lẫn iOS.

Appium hoạt động theo nguyên tắc tương tự Selenium: mô phỏng thao tác người dùng trên app. Điểm khác biệt là thay vì điều khiển browser, Appium kết nối với thiết bị thật hoặc emulator/simulator để tương tác với native app, hybrid app, hay mobile web.

342810 Một codebase Appium, test được cả Android lẫn iOS - tiết kiệm đáng kể công sức

Điểm mạnh của Appium:

  • Dùng chung API với Selenium - nếu đã biết Selenium, học Appium nhanh hơn nhiều
  • Hỗ trợ nhiều ngôn ngữ: Python, Java, JavaScript...
  • Test được native app (ứng dụng cài từ store), hybrid app (app có webview bên trong), và mobile browser
  • Không cần sửa source code của app để test

Điểm cần lưu ý: Setup Appium phức tạp hơn Selenium khá nhiều. Bạn cần cài Android Studio (cho Android), Xcode (cho iOS, chỉ trên Mac), configure emulator... Mình thường mất cả buổi sáng setup môi trường lần đầu.

Selenium Appium
Đối tượng test Web browser Mobile app (Android/iOS)
Độ khó setup Trung bình Khó hơn, nhiều dependency
Ngôn ngữ script Python, Java, JS... Python, Java, JS...
Nền tảng học trước Không bắt buộc Nên biết Selenium trước
Thị trường VN Rất phổ biến Phổ biến, đặc biệt app mobile

Ở Việt Nam hiện tại, 298 việc làm automation test mới nhất 03/2026 (CareerViet) - xu hướng tuyển dụng QA automation đang tăng mạnh, đặc biệt với yêu cầu biết cả Selenium và Appium. Fintech, e-commerce, và super app là những domain cần automation mobile nhiều nhất.


Fresher nên học automation khi nào?

Đây là câu hỏi thực tế hơn nhiều so với "nên học không".

Mình từng thấy không ít bạn mới vào nghề, chưa viết được test case đăng nhập đủ kỹ, đã vội vàng mở Selenium lên học. Kết quả? Script chạy được, nhưng không hiểu đang test cái gì, bỏ sót edge case cơ bản nhất.

Dấu hiệu bạn sẵn sàng học automation:

  • Đã viết test case độc lập, cover được happy path + negative case + edge case
  • Hiểu được cách đọc requirement và phân tích test scenarios
  • Đã từng làm regression testing thủ công ít nhất 1-2 sprint - và cảm thấy "làm mãi cái này mỏi tay quá"
  • Biết cơ bản về HTML/CSS (để tìm element trên trang web)
  • Không nhất thiết biết lập trình, nhưng không sợ nhìn vào code

342811 Nền tảng manual vững sẽ giúp bạn viết automation script có ý nghĩa, không chỉ chạy xanh

Nếu bạn đang băn khoăn về lộ trình tổng thể từ số 0 đến có việc, khóa Kiểm thử phần mềm cover đủ từ kiến thức nền đến thực hành - có cả phần automation - phù hợp để tham khảo lộ trình.

Với những bạn 28, 30, hay 32 tuổi đang chuyển ngành: không cần lo về tuổi. Mình từng hướng dẫn một bạn từ ngành kế toán, 31 tuổi, mất 4 tháng để thành thạo manual và thêm 3 tháng học Selenium cơ bản - đủ để pass vòng technical interview. Điều quan trọng là nền tảng logic, không phải tuổi tác.


Project mẫu đơn giản để bắt đầu với Selenium

Lý thuyết đủ rồi. Bắt đầu với project thực tế mới thấm.

Dưới đây là project mẫu phù hợp cho người mới: tự động hóa test case đăng nhập cho trang web demo. Chỉ cần Python và Selenium, không cần framework phức tạp.

Chuẩn bị:

  • Python 3.8+ đã cài
  • Selenium: pip install selenium
  • ChromeDriver (phiên bản khớp với Chrome của máy bạn)
  • Trang demo: https://the-internet.herokuapp.com/login (trang test công khai, ai cũng dùng được)

342812 File cấu trúc project đơn giản - không cần phức tạp khi mới bắt đầu

Cấu trúc project:

auto-test-demo/
│
├── test_login.py          # File test chính
├── config.py              # Cấu hình URL, timeout
└── requirements.txt       # Danh sách thư viện

File test_login.py:

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

BASE_URL = "https://the-internet.herokuapp.com/login"

def setup_driver():
    """Khởi động browser Chrome"""
    options = webdriver.ChromeOptions()
    # Bật chế độ này để chạy không hiện cửa sổ browser
    # options.add_argument("--headless")
    driver = webdriver.Chrome(options=options)
    driver.implicitly_wait(10)  # Chờ tối đa 10 giây tìm element
    return driver

def test_login_thanh_cong(driver):
    """Test Case 1: Đăng nhập đúng thông tin"""
    driver.get(BASE_URL)
    
    # Nhập username và password đúng
    driver.find_element(By.ID, "username").send_keys("tomsmith")
    driver.find_element(By.ID, "password").send_keys("SuperSecretPassword!")
    driver.find_element(By.CSS_SELECTOR, "button[type='submit']").click()
    
    # Kiểm tra đã vào trang secure area chưa
    success_msg = driver.find_element(By.CSS_SELECTOR, ".flash.success")
    assert "You logged into a secure area!" in success_msg.text
    print("✅ TC01 PASS: Đăng nhập thành công")

def test_login_sai_mat_khau(driver):
    """Test Case 2: Sai password - phải báo lỗi"""
    driver.get(BASE_URL)
    
    driver.find_element(By.ID, "username").send_keys("tomsmith")
    driver.find_element(By.ID, "password").send_keys("SaiMatKhau123")
    driver.find_element(By.CSS_SELECTOR, "button[type='submit']").click()
    
    # Phải xuất hiện thông báo lỗi
    error_msg = driver.find_element(By.CSS_SELECTOR, ".flash.error")
    assert "Your password is invalid!" in error_msg.text
    print("✅ TC02 PASS: Sai password hiển thị lỗi đúng")

# Chạy test
if __name__ == "__main__":
    driver = setup_driver()
    try:
        test_login_thanh_cong(driver)
        test_login_sai_mat_khau(driver)
        print("\n🎉 Tất cả test case PASS!")
    except AssertionError as e:
        print(f"❌ FAIL: {e}")
    finally:
        driver.quit()  # Luôn đóng browser dù pass hay fail

Chạy thử bằng lệnh: python test_login.py

Bạn sẽ thấy Chrome tự mở, tự nhập thông tin, tự click - xong báo kết quả. Lần đầu nhìn thấy điều này, hầu hết mọi người đều thấy khá thú vị.

Tải về template project đầy đủ với hướng dẫn setup: Tải checklist lộ trình automation testing


Lộ trình thực tế từ manual lên automation tại Việt Nam

Bao nhiêu thời gian để chuyển từ manual sang automation? Không có con số cố định - nhưng mình có thể đưa ra khung tham khảo thực tế.

342813 Lộ trình không tuyến tính hoàn toàn - bạn sẽ quay lại manual khi cần, và đó là bình thường

Giai đoạn 1 - Nền tảng manual (3-6 tháng đầu): Tập trung hoàn toàn vào viết test case tốt, bug report rõ ràng, hiểu SDLC và quy trình Agile. Đây không phải thời gian "lãng phí" - đây là lúc bạn xây nền móng để automation sau này có ý nghĩa.

Giai đoạn 2 - Kỹ thuật nền tảng (1-2 tháng): Học HTML/CSS cơ bản để biết cách inspect element, tìm selector. Học Python cơ bản (biến, vòng lặp, hàm, xử lý file). Không cần giỏi lập trình - cần đủ để đọc hiểu và chỉnh sửa script.

Giai đoạn 3 - Selenium thực hành (2-3 tháng): Bắt đầu với project nhỏ như ví dụ ở trên. Dần dần học thêm: chờ dynamic element, xử lý popup/iframe, chạy test song song. Học pytest để tổ chức test suite chuyên nghiệp hơn.

Giai đoạn 4 - Mở rộng (khi đã vững Selenium): Nếu team có app mobile, học Appium. Nếu cần test API song song, học Postman automation hoặc requests (Python). Nếu muốn tích hợp CI/CD, tìm hiểu GitHub Actions hoặc Jenkins.

Một lưu ý thực tế: Đa số job description tại VN yêu cầu Experience in working with test automation frameworks (e.g. JUnit, TestNG, Selenium WebDriver); Understanding of web technologies (HTML, CSS,...); Thành thạo ngôn ngữ lập trình như Java, Python; Kiến thức về Selenium, Appium (ITviec) - không cần phải biết tất cả mọi thứ trước khi apply. Biết 1 tool tốt, hiểu nguyên lý, còn lại học được sau khi vào việc.

Nếu bạn đang tìm nơi học bài bản từ đầu, khóa Kiểm thử phần mềm xây dựng đúng theo lộ trình này - từ manual cơ bản đến automation - mục tiêu rõ ràng là có việc sau 2 tháng học.

Bài tiếp theo mình sẽ hướng dẫn setup môi trường Selenium từ A đến Z trên Windows và macOS - bao gồm cả xử lý các lỗi thường gặp nhất. Bookmark lại nhé!