PineLab
Automation

Automation testing là gì? So sánh với manual và lộ trình học Playwright

Tự động hoá không làm bạn thành tester giỏi hơn — nó nhân bản năng lực kiểm thử bạn đã có. Nếu bộ test case của bạn yếu, tự động hoá chỉ giúp bạn chạy những kiểm tra vô nghĩa nhanh hơn và tốn kém hơn.

11 phút đọc Cập nhật 07/09/2026 PineLab

Automation testing là gì?

Automation testing (kiểm thử tự động) là việc dùng công cụ và mã nguồn để thực thi các test case, so sánh kết quả thực tế với kết quả mong đợi và báo cáo kết quả — thay cho việc con người thao tác thủ công.

Điểm cần hiểu đúng ngay từ đầu: tự động hoá không phải là "kiểm thử tự động" theo nghĩa máy tự nghĩ ra cần kiểm tra gì. Con người vẫn quyết định toàn bộ phần khó — kiểm tra cái gì, với dữ liệu nào, và thế nào là đúng. Máy chỉ thực thi lại quyết định đó, nhanh và không mệt.

Tự động hoá không tìm ra bug mới. Nó phát hiện khi thứ từng đúng bỗng trở thành sai.

Manual và Automation: so sánh và phân vai

Tiêu chíManual testingAutomation testing
Chi phí ban đầuThấp — bắt đầu ngay đượcCao — cần thời gian xây dựng và học công cụ
Chi phí lặp lạiCao — mỗi lần chạy lại tốn đúng chừng đó côngGần bằng 0 sau khi đã có kịch bản
Tốc độ phản hồiChậm — vài giờ đến vài ngàyNhanh — vài phút
Khả năng phát hiện lỗi mớiCao — con người quan sát được điều bất thường ngoài kịch bảnThấp — chỉ kiểm tra đúng những gì được lập trình
Phù hợp vớiKiểm thử khám phá, khả dụng, giao diện, chức năng mới thay đổi liên tụcRegression, smoke test, kiểm thử dữ liệu lặp, API
Chi phí bảo trìKhông cóĐáng kể — kịch bản hỏng khi sản phẩm thay đổi

Khi nào nên và không nên tự động hoá

Nên tự động hoá khi

  • Test case được chạy lặp lại nhiều lần — mỗi lần phát hành, mỗi đêm.
  • Chức năng đã ổn định, ít thay đổi về hành vi và giao diện.
  • Kết quả mong đợi rõ ràng, kiểm chứng được bằng máy.
  • Việc làm thủ công tốn nhiều thời gian hoặc dễ sai do lặp lại nhàm chán.
  • Cần chạy trên nhiều trình duyệt, nhiều bộ dữ liệu, nhiều cấu hình.

Không nên tự động hoá khi

  • Chức năng còn đang thay đổi liên tục — bạn sẽ sửa kịch bản nhiều hơn là chạy nó.
  • Test case chỉ chạy một hoặc hai lần rồi bỏ.
  • Việc đánh giá cần cảm nhận của con người: bố cục có đẹp không, thông báo có dễ hiểu không.
  • Kiểm thử khám phá — bản chất của nó là không có kịch bản định trước.
  • Chi phí xây dựng và bảo trì cao hơn chi phí làm thủ công trong suốt vòng đời sản phẩm.

Kim tự tháp kiểm thử: phân bổ tự động hoá ở tầng nào

Đây là nguyên tắc quan trọng nhất quyết định bộ test tự động của bạn hữu ích hay trở thành gánh nặng.

Ba tầng của kim tự tháp kiểm thử
TầngTỉ lệ đề xuấtTốc độĐộ ổn địnhKhi fail cho biết gì
Unit test~70%Mili-giâyRất caoChính xác hàm nào sai
API / Integration~20%Vài trăm mili-giâyCaoDịch vụ nào trả về sai
UI / End-to-end~10%Vài giây đến vài phútThấpCó gì đó hỏng, cần điều tra tiếp

Với vai trò tester, phần đóng góp giá trị nhất thường nằm ở tầng API — đủ nhanh và ổn định để chạy thường xuyên, đồng thời vẫn kiểm chứng được logic nghiệp vụ thật.

Playwright hay Selenium — chọn cái nào?

Tiêu chíPlaywrightSelenium
Năm ra đời2020, do Microsoft phát triển2004, tiêu chuẩn lâu đời
Cài đặtMột lệnh, tự tải sẵn trình duyệtCần cấu hình driver riêng cho từng trình duyệt
Cơ chế chờTự động chờ phần tử sẵn sàngPhải tự viết explicit wait
Độ ổn địnhCao — giảm mạnh test chập chờnPhụ thuộc nhiều vào cách viết wait
Công cụ gỡ lỗiTrace viewer, codegen, ghi video sẵn cóCần công cụ bên ngoài
Ngôn ngữTypeScript/JavaScript, Python, Java, .NETJava, Python, C#, JavaScript, Ruby
Thị trường việc làm VNĐang tăng nhanhVẫn phổ biến trong dự án cũ

Lộ trình học automation cho tester

Giai đoạnNội dungThời lượngKết quả
1. Lập trình cơ bảnBiến, hàm, mảng, vòng lặp, điều kiện, async/await bằng JavaScript hoặc TypeScript2 – 3 tuầnĐọc hiểu và sửa được kịch bản có sẵn
2. Kịch bản đầu tiênCài Playwright, ghi kịch bản bằng codegen, chạy và đọc báo cáo1 tuầnTự động hoá được một luồng đăng nhập
3. Locator và assertionChọn phần tử bền vững, viết kiểm chứng có ý nghĩa2 tuầnKịch bản không vỡ khi giao diện đổi nhẹ
4. Cấu trúc dự ánPage Object Model, tách dữ liệu test, fixture, hook2 tuầnBộ test bảo trì được khi số lượng tăng
5. API automationTự động hoá kiểm thử API, chuẩn bị dữ liệu qua API2 tuầnTest chạy nhanh và ổn định hơn hẳn
6. CIChạy test trong pipeline, đọc báo cáo, xử lý test chập chờn1 – 2 tuầnTest chạy tự động mỗi lần có thay đổi mã nguồn
import { test, expect } from '@playwright/test';

test('khoá tài khoản sau 6 lần nhập sai mật khẩu', async ({ page }) => {
  await page.goto('/login');

  for (let attempt = 1; attempt <= 6; attempt++) {
    await page.getByLabel('Email').fill('test@pinelab.vn');
    await page.getByLabel('Mật khẩu').fill('SaiMatKhau123');
    await page.getByRole('button', { name: 'Đăng nhập' }).click();
  }

  // Kiểm chứng có ý nghĩa: không chỉ "có thông báo lỗi",
  // mà đúng thông báo khoá tài khoản theo REQ-AUTH-012.
  await expect(page.getByRole('alert')).toContainText('Tài khoản đã bị tạm khoá');
});

Những sai lầm khiến dự án automation thất bại

  1. Chạy theo chỉ tiêu độ phủ: đặt mục tiêu "tự động hoá 80% test case" thay vì tự động hoá đúng những test case đáng giá.
  2. Bỏ qua test chập chờn: mỗi lần đỏ lại chạy lại cho xanh. Sau vài tháng cả đội bỏ qua kết quả, và bộ test trở thành vô dụng.
  3. Không viết kiểm chứng có ý nghĩa: kịch bản chạy hết các bước nhưng chỉ kiểm tra trang không lỗi — nó sẽ xanh ngay cả khi tính năng hỏng.
  4. Dồn tất cả vào tầng giao diện thay vì đẩy xuống tầng API và unit.
  5. Không coi mã kiểm thử là mã sản phẩm: không review, không refactor, sao chép dán khắp nơi.
  6. Phụ thuộc dữ liệu có sẵn trên môi trường: kịch bản chạy được hôm nay và hỏng ngày mai vì ai đó xoá bản ghi.
HỎI ĐÁP

Câu hỏi thường gặp

Tester không biết code có học automation được không?

Được. Bạn cần khoảng hai đến ba tuần học lập trình cơ bản với JavaScript hoặc Python — biến, hàm, vòng lặp, điều kiện là đủ để bắt đầu. Công cụ ghi kịch bản như Playwright codegen giúp bạn có kịch bản chạy được ngay từ tuần đầu, sau đó học dần cách viết lại cho gọn và bền.

Nên học Selenium hay Playwright trước?

Playwright cho người mới bắt đầu năm 2026: cài đặt đơn giản, cơ chế tự động chờ giảm mạnh tình trạng test chập chờn, và bộ công cụ gỡ lỗi tốt hơn. Selenium vẫn đáng học nếu bạn nhắm vào dự án đã có sẵn hệ thống test dựa trên nó, và việc chuyển đổi khá dễ vì nguyên lý giống nhau.

Automation testing có thay thế manual testing không?

Không. Tự động hoá xử lý phần lặp lại và có kết quả mong đợi rõ ràng, chủ yếu là regression. Kiểm thử khám phá, đánh giá trải nghiệm người dùng và kiểm thử các tính năng mới thay đổi liên tục vẫn cần con người. Hai phương pháp bổ sung cho nhau chứ không loại trừ.

Test chập chờn (flaky test) là gì và xử lý thế nào?

Là kịch bản khi chạy thì xanh, khi chạy thì đỏ dù mã nguồn không đổi. Nguyên nhân phổ biến là chờ đợi không đúng cách, phụ thuộc vào dữ liệu dùng chung, hoặc các test ảnh hưởng lẫn nhau. Cách xử lý là dùng cơ chế chờ theo điều kiện thay vì chờ theo thời gian cố định, và làm cho mỗi test tự tạo dữ liệu riêng.