Đ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 Nền Tảng: Selenium và Appium Cho Người Mới Sau Manual

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

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

Manual 3 tháng - có nên học automation chưa?

Mình nhớ lần đầu nghe đồng nghiệp nói "mày nên học Selenium đi, manual rồi sẽ bị thay". Lúc đó mình mới 2 tháng, test case còn viết chưa trơn, nghe xong hoang mang không biết bắt đầu từ đâu.

Thật ra câu trả lời không phải "học ngay" hay "đợi lâu hơn". Nó tùy vào bạn đang ở đâu và công ty tuyển dụng cần gì.

343215 Không phải ai học automation sớm cũng tốt hơn - timing quan trọng hơn tốc độ

Theo khảo sát các JD tuyển dụng tester tại Việt Nam năm 2025-2026, hơn một nửa tin tuyển dụng fresher/junior tester yêu cầu hoặc ưu tiên có kiến thức automation cơ bản (Selenium hoặc Appium). Con số này cho thấy học automation không còn là "bonus điểm" nữa - nó đang dần trở thành kỳ vọng cơ bản.

Nhưng "biết cơ bản" khác với "thành thạo". Và khác rất nhiều so với viết automation framework từ đầu. Bài này mình sẽ phân tích rõ: sau 3 tháng manual, bạn cần học gì, học đến đâu là đủ để xin việc.


Selenium là gì và tại sao nó phổ biến với web tester?

Selenium là bộ công cụ mã nguồn mở dùng để tự động hóa trình duyệt web. Nói đơn giản hơn: thay vì bạn tự tay click vào nút "Đăng nhập", nhập username, nhập password, Selenium làm hết việc đó thay bạn - và làm được hàng trăm lần không mệt, không sai, không quên.

Bộ Selenium gồm 3 phần chính:

  • Selenium WebDriver - cái bạn sẽ dùng hàng ngày. Nó điều khiển Chrome, Firefox, Edge thông qua code.
  • Selenium IDE - extension trên Chrome/Firefox, ghi lại thao tác và tạo test tự động. Phù hợp để học ban đầu.
  • Selenium Grid - chạy test song song trên nhiều máy/trình duyệt. Phần này học sau khi vững 2 phần trên.

343216 WebDriver là phần bạn sẽ viết code và dùng nhiều nhất khi đi làm

Tại sao Selenium phổ biến? Vì nó miễn phí, hỗ trợ nhiều ngôn ngữ lập trình (Java, Python, C#...), và cộng đồng cực lớn. Khi gặp lỗi, Google 30 giây là ra câu trả lời. Với tester Việt Nam, Java là lựa chọn phổ biến nhất vì phần lớn dự án enterprise dùng Java stack.

Một điều mình muốn nhấn mạnh: Selenium không tự nghĩ ra test case. Bạn vẫn phải biết test cái gì, edge case nào cần cover. Đó là lý do nền tảng manual vững mới học automation được - bạn cần hiểu "logic test" trước khi viết code để thực thi nó.


Appium - khi web chưa đủ, mobile mới là tương lai

Bạn đang test app mobile? Hay muốn mở rộng sang mảng này? Appium là câu trả lời.

Appium là framework automation cho ứng dụng mobile - cả Android lẫn iOS. Nó hoạt động theo nguyên tắc tương tự Selenium WebDriver nhưng thay vì điều khiển trình duyệt, nó điều khiển ứng dụng trên điện thoại (thật hoặc giả lập).

343217 Appium kết nối máy tính với thiết bị mobile qua Appium Server

Điểm mạnh lớn nhất của Appium: viết test một lần, chạy được cả Android và iOS. Điều này tiết kiệm rất nhiều công sức so với dùng tool riêng cho từng platform.

Appium khác Selenium ở chỗ nào?

Tiêu chí Selenium Appium
Test trên Trình duyệt web App mobile (Android/iOS)
Đối tượng Web tester Mobile tester
Độ phức tạp setup Trung bình Cao hơn (cần Android Studio hoặc Xcode)
JD phổ biến ở VN Rất nhiều Ngày càng tăng

Một lưu ý thực tế: setup Appium lần đầu khó hơn Selenium khá nhiều. Bạn cần cài Android Studio, cấu hình emulator, kết nối ADB... Mình từng mất 1 ngày chỉ để setup xong và chạy được test đầu tiên. Đừng nản - đó là bình thường với mọi người mới.

Nếu bạn đang apply vào công ty test app mobile (fintech, e-commerce có app riêng, game), học Appium sẽ là lợi thế rõ ràng. Nếu công ty chủ yếu test web, Selenium trước là đủ.


Setup môi trường Java + Selenium - từng bước không bỏ sót

Mình hay thấy bạn mới bị stuck ngay ở bước này. Không phải vì khó, mà vì thiếu hướng dẫn cụ thể. Dưới đây là những gì bạn cần cài đặt theo đúng thứ tự.

Công cụ cần chuẩn bị:

343218 Cài đúng thứ tự: JDK trước, IDE sau, driver cuối cùng

Sau khi cài JDK, kiểm tra bằng lệnh:

java -version

Nếu thấy phiên bản hiện ra (ví dụ: java version "21.0.1") là ổn. Nếu không ra - kiểm tra lại JAVA_HOME trong Environment Variables.

Tạo project Maven mới trong IntelliJ, thêm dependency Selenium vào file pom.xml:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.18.1</version>
</dependency>

Save lại, IntelliJ sẽ tự tải thư viện về. Bước này cần internet, có thể mất 2-3 phút. Đây là điểm hay của Maven - bạn không cần tải file .jar thủ công nữa.

Lỗi thường gặp nhất: ChromeDriver version không khớp với Chrome đang cài. Giải pháp: dùng WebDriverManager - thư viện tự detect và tải đúng version ChromeDriver cho bạn.

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.7.0</version>
</dependency>

Thêm dependency này vào, và bạn không cần lo chuyện version ChromeDriver nữa. Mình luôn khuyên bạn mới dùng WebDriverManager ngay từ đầu - tiết kiệm ít nhất 1 tiếng đau đầu.


Test case đầu tiên với Selenium - đăng nhập thực tế

Lý thuyết đủ rồi, giờ là code thật. Mình lấy ví dụ test đăng nhập trang demo SauceDemo - trang được xây sẵn để luyện automation, không cần lo phá hệ thống thật.

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class LoginTest {
    public static void main(String[] args) {
        // Bước 1: Tự động tải đúng ChromeDriver
        WebDriverManager.chromedriver().setup();
        
        // Bước 2: Mở trình duyệt Chrome
        WebDriver driver = new ChromeDriver();
        
        // Bước 3: Mở trang đăng nhập
        driver.get("https://www.saucedemo.com");
        
        // Bước 4: Nhập username
        driver.findElement(By.id("user-name")).sendKeys("standard_user");
        
        // Bước 5: Nhập password
        driver.findElement(By.id("password")).sendKeys("secret_sauce");
        
        // Bước 6: Click nút Login
        driver.findElement(By.id("login-button")).click();
        
        // Bước 7: Kiểm tra đăng nhập thành công
        String title = driver.getTitle();
        System.out.println("Tiêu đề trang: " + title);
        
        // Bước 8: Đóng trình duyệt
        driver.quit();
    }
}

343219 Chạy đúng sẽ thấy Chrome mở, tự điền form, click login - không cần chạm chuột

Code này làm đúng 1 việc: mở Chrome, vào SauceDemo, đăng nhập bằng tài khoản demo, in tiêu đề trang ra console. Đơn giản - nhưng đây là nền của mọi automation test phức tạp hơn sau này.

Giải thích từng dòng quan trọng:

  • By.id("user-name") - tìm element theo thuộc tính id. Đây là cách phổ biến và ổn định nhất.
  • sendKeys("standard_user") - mô phỏng gõ bàn phím.
  • driver.quit() - đóng hoàn toàn. Khác với driver.close() chỉ đóng tab hiện tại.

Bước tiếp theo sau khi chạy được test này: thêm assertion bằng TestNG hoặc JUnit để tự động pass/fail thay vì chỉ in ra console. Nhưng đó là bài sau - giờ cứ chạy được test đăng nhập đơn giản là thành công rồi.

Thấy khó ở phần tìm element? Chuột phải vào element trên Chrome, chọn "Inspect", xem thuộc tính id/name/class. Mình từng cần 20 phút mới quen cái bước này - bình thường, đừng lo.


Lộ trình 3 tháng chuyển từ manual sang automation cơ bản

Bạn đã có 3 tháng manual - tức là bạn biết viết test case, biết bug report, hiểu user flow. Đó là nền tảng quan trọng. Giờ 3 tháng tiếp theo, mình chia như sau:

343220 3 tháng không phải để thành thạo - mà để đủ tự tin xin việc có yêu cầu automation cơ bản

Tháng 1: Java cơ bản + Selenium WebDriver

Tuần 1-2: Java đủ dùng cho automation. Không cần học Java nâng cao - chỉ cần: biến, vòng lặp, hàm, class, xử lý exception. Đây là lượng vừa đủ để hiểu và sửa code test.

Tuần 3-4: Selenium WebDriver. Thực hành trên SauceDemo hoặc The Internet - Trang luyện automation miễn phí (trang luyện automation miễn phí). Mục tiêu: tự viết được test cho login, form, navigation.

Tháng 2: Locators + TestNG + Page Object Model

Locators (cách tìm element) là kỹ năng quan trọng nhất của automation tester. Học đủ 5 loại: id, name, xpath, css selector, linkText. Trong đó xpathcss selector là linh hoạt nhất.

Page Object Model (POM) - pattern tổ chức code giúp test dễ maintain. Đây là thứ các JD hay nhắc đến. Học POM là học cách viết code automation "đúng chuẩn".

TestNG: framework chạy và report test. Thêm annotation @Test, @BeforeMethod, @AfterMethod để tổ chức test có structure.

Tháng 3: Viết project thực tế + Appium nếu apply mobile

Viết 1 project automation nhỏ: test toàn bộ luồng đăng nhập - mua hàng - checkout trên SauceDemo. Đủ 15-20 test case. Đưa lên GitHub. Đây là thứ bạn demo trong buổi phỏng vấn.

Nếu vị trí apply test mobile: dành 2 tuần cuối setup Appium và viết 3-5 test case đơn giản trên Android emulator.

Tải checklist lộ trình chi tiết: Tải checklist lộ trình 3 tháng


Khi nào nên học - phân tích JD tuyển dụng thực tế Việt Nam 2026

Mình đã xem qua hàng trăm tin tuyển dụng tester trên ITviec và TopDev trong Q1/2026. Một số pattern rõ ràng:

Fresher tester (0-1 năm kinh nghiệm):

  • Phần lớn JD: "Ưu tiên biết Selenium/automation" - không bắt buộc.
  • Một số JD tại startup hoặc outsource: yêu cầu rõ "có kinh nghiệm automation".
  • Kết luận: học automation TRƯỚC KHI apply sẽ mở thêm 30-40% cơ hội.

Junior tester (1-2 năm):

  • Automation không còn là ưu tiên - là yêu cầu bắt buộc ở hầu hết JD tốt.
  • Selenium WebDriver + TestNG là combo được nhắc nhiều nhất.
  • Appium xuất hiện nhiều hơn ở các công ty fintech và e-commerce có app.

343221 Automation bắt đầu được yêu cầu từ level junior - học sớm hơn thì lợi thế càng lớn

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

  • Viết test case không cần nhìn template, tự nghĩ được edge case
  • Hiểu rõ user flow của ít nhất 1 tính năng từ đầu đến cuối
  • Đã biết viết bug report rõ ràng, reproducible
  • Không còn bị bối rối khi nghe "regression testing" hay "smoke test"

Nếu bạn tick được 3/4 điều trên sau 3 tháng manual - học automation ngay đi. Đừng đợi "vững hơn" vì không có điểm dừng rõ ràng.

Một lời thật: mình gặp nhiều bạn 25-30 tuổi chuyển từ kế toán, marketing sang tester, sợ học automation vì "mình không biết code". Thật ra code trong automation không giống code backend - không cần tư duy giải thuật phức tạp. Bạn chủ yếu đọc hiểu, copy-modify, và debug lỗi đơn giản. Nếu bạn biết dùng Excel với hàm IF lồng nhau, bạn có đủ tư duy để học automation.


Câu hỏi thường gặp khi mới bắt đầu

Mình tổng hợp các câu hỏi nhận được nhiều nhất từ các bạn đang ở giai đoạn này.

Học Python hay Java cho Selenium?

Nếu bạn không có định hướng rõ: chọn Java. Phần lớn dự án Việt Nam (ngân hàng, enterprise, outsource sang Nhật/Hàn) dùng Java stack. Python phổ biến hơn ở startup và dự án AI/data. Chọn theo loại công ty bạn nhắm tới.

Cần biết code bao nhiêu mới học automation được?

Java đủ dùng cho automation không đòi hỏi nhiều. Bạn cần: khai báo biến, if/else, for loop, hàm (method), class cơ bản, và đọc hiểu exception. Không cần algorithm, không cần data structure phức tạp. 2-3 tuần tự học Java cơ bản là đủ.

343222 Java đủ dùng cho automation khác với Java để làm backend - phạm vi hẹp hơn nhiều

Nên dùng Selenium 4 hay vẫn còn project dùng Selenium 3?

Học Selenium 4 ngay - đây là phiên bản hiện tại và cải thiện nhiều về relative locators, Chrome DevTools Protocol. Selenium 3 vẫn còn ở một số dự án cũ, nhưng migration sang 4 không khó, học 4 trước sẽ dễ hơn.

Appium 1.x hay Appium 2.x?

Appium 2.x - kiến trúc plugin-based, cài đặt khác hoàn toàn so với 1.x. Nhiều tài liệu cũ trên Google vẫn hướng dẫn 1.x, gây nhầm lẫn. Khi search tài liệu, luôn thêm "Appium 2" vào query.

Học automation xong có bị AI thay không?

Câu hỏi này mình nghe nhiều. Thực tế: AI đang hỗ trợ tester viết test nhanh hơn, nhưng vẫn cần người hiểu context để verify kết quả. Tester biết automation + biết dùng AI tool đang là profile được săn đón nhất. Không phải bị thay - mà cần upgrade thêm.

Tóm lại: sau 3 tháng manual vững, 3 tháng tiếp theo là đủ để bạn có profile automation đủ tự tin apply. Test kỹ từng bước setup, đừng bỏ qua viết project thực tế lên GitHub, và đừng so sánh progress của bạn với người khác. Ai cũng mất thời gian riêng để hiểu cách debug và locator element. Comment bên dưới nếu bạn đang stuck ở bước nào - mình đọc và trả lời từng bạn.