Manual Testing vs Automation Testing: Khác nhau gì và khi nào fresher nên học Automation?

2 tháng trước · 10 phút đọc
Đừng học automation khi chưa vững manual - đây là lý do
Mình nhớ một bạn trong lớp, mới học testing được 2 tháng, đã hỏi: "Chị ơi, em có cần học Selenium ngay không? Em thấy JD toàn yêu cầu automation."
Câu hỏi đó không sai. Nhưng mình phải thành thật: học automation khi chưa nắm manual là như học lái xe số tự động mà không hiểu xe hoạt động thế nào. Đi được, nhưng gặp sự cố thì không xử lý được.
Bài này mình so sánh thẳng hai loại, giải thích khi nào dùng cái nào, và quan trọng nhất - 4 tiêu chí để bạn tự đánh giá mình đã sẵn sàng học automation chưa.
Manual là nền tảng, automation là công cụ nhân lên sức mạnh đó
Bạn không cần phải chọn một trong hai. Mình - và hầu hết tester đi làm thực tế - đều dùng cả hai. Vấn đề là thứ tự học và biết dùng cái nào đúng lúc.
Manual testing là gì?
Kiểm thử thủ công (manual testing) là bạn tự tay thao tác trên ứng dụng, kiểm tra xem nó hoạt động đúng không. Không dùng code, không dùng script tự động - chỉ có bạn, trình duyệt, và bộ test case.
Ví dụ đơn giản: trang đăng nhập của một app. Manual testing nghĩa là bạn tự gõ email đúng, sai, để trống, gõ ký tự đặc biệt... rồi quan sát hệ thống phản ứng thế nào. Đúng hiển thị gì, sai hiển thị gì, trường hợp nào bị treo.
Ưu điểm thực sự của manual testing:
- Phát hiện được vấn đề về UI, UX, logic không có trong spec - thứ mà automation không "nhìn" thấy
- Không cần setup môi trường phức tạp, bắt đầu ngay được
- Phù hợp với tính năng mới, yêu cầu thay đổi liên tục
- Phát hiện được lỗi "cảm giác sai" - ví dụ button bấm được nhưng phản hồi chậm bất thường
Nhược điểm:
- Tốn thời gian nếu cần chạy đi chạy lại nhiều lần (regression testing)
- Dễ bỏ sót khi test cùng flow nhiều lần liên tục - con người mệt, mất tập trung
- Không scale được khi app lớn, nhiều tính năng
Manual testing bắt được lỗi "cảm giác" mà code không mô tả được
Mình từng bắt được một bug mà automation bỏ qua hoàn toàn: màu chữ trên nút "Mua ngay" bị nhạt đến mức khó đọc trên màn hình sáng. Automation test: pass vì button tồn tại và click được. Manual test: mình nhìn thấy ngay vấn đề accessibility. Đó là thứ chỉ con người mới cảm nhận được.
Automation testing là gì?
Kiểm thử tự động (automation testing) là bạn viết code (script) để máy tự chạy các test case thay cho bạn. Thay vì tự tay bấm từng bước, bạn lập trình sẵn: "Mở trang này, gõ email này, nhấn nút này, kiểm tra kết quả này."
Tool phổ biến nhất bạn sẽ gặp: Selenium (test web), Appium (test app mobile), Cypress, Playwright. Với API testing thì có Postman collection chạy tự động hoặc RestAssured.
Ưu điểm thực sự:
- Chạy được hàng trăm test case trong vài phút - thứ manual cần cả ngày
- Lặp lại chính xác 100%, không mệt, không bỏ sót do mất tập trung
- Phù hợp kiểm thử hồi quy (regression testing) - tức test lại tính năng cũ sau mỗi lần deploy
- Chạy được ban đêm, cuối tuần không cần người trực
Nhược điểm:
- Setup ban đầu tốn thời gian và cần hiểu code
- Khi UI thay đổi, script cũ phải cập nhật theo - maintenance nặng
- Không phát hiện được lỗi "cảm giác", lỗi UX, lỗi visual
- Chi phí xây dựng framework automation không nhỏ
Automation giỏi ở chiều rộng và lặp lại, không giỏi ở chiều sâu cảm quan
Nhiều bạn nghĩ automation là "tester cao cấp hơn". Thật ra không phải vậy. Automation là một công cụ khác phục vụ mục đích khác. Senior tester giỏi là người biết khi nào dùng cái gì - không phải người chỉ automation được.
So sánh trực tiếp: Manual vs Automation
Thay vì nói chung chung, mình để bảng so sánh - nhìn vào sẽ rõ ngay.
Hai loại không thay thế nhau, mà bổ sung cho nhau trong quy trình QA
| Tiêu chí | Manual Testing | Automation Testing |
|---|---|---|
| Cần biết code? | Không | Có (ít nhất cơ bản) |
| Thời gian setup | Nhanh, bắt đầu ngay | Chậm, cần xây framework |
| Phù hợp tính năng mới | ✅ Rất tốt | ❌ Không nên |
| Phù hợp regression | ❌ Chậm, tốn sức | ✅ Rất tốt |
| Phát hiện lỗi UX/Visual | ✅ Tốt | ❌ Không làm được |
| Chi phí bảo trì | Thấp | Cao (khi UI thay đổi) |
| Phù hợp fresher | ✅ Bắt đầu từ đây | ⏳ Học sau khi vững manual |
Nhìn vào bảng này, bạn thấy không có loại nào "thắng" hoàn toàn. Manual tốt chỗ automation yếu, và ngược lại. Trong thực tế, một dự án đang chạy thường dùng cả hai song song: manual cho tính năng mới và exploratory, automation cho regression.
Khi nào dùng manual testing?
- Tính năng mới, chưa stable
- Test UX, UI, accessibility
- Exploratory testing - tức test theo trực giác, không theo script
- Dự án ngắn hạn, deadline gấp, không có thời gian viết automation
Khi nào dùng automation testing?
- Regression testing sau mỗi sprint/deploy
- Test lặp lại nhiều lần với data khác nhau (data-driven testing)
- Load testing, performance testing
- CI/CD pipeline - tức tích hợp test vào quy trình deploy tự động
4 tiêu chí để biết bạn đã sẵn sàng học automation chưa
Đây là phần mình muốn các bạn đọc kỹ nhất. Nhiều fresher hỏi "bao giờ học automation được?" - câu trả lời không phải "sau X tháng" mà là sau khi bạn đáp ứng các tiêu chí này.
4 tiêu chí không phải rào cản, mà là bộ lọc để bạn không lãng phí thời gian
Tiêu chí 1: Viết test case thành thạo không cần nhìn mẫu
Bạn phải tự viết được test case đầy đủ: điều kiện đầu vào, bước thực hiện, kết quả mong đợi. Với mọi loại tính năng - đăng nhập, giỏ hàng, tìm kiếm - không cần ai hướng dẫn từng bước. Nếu vẫn còn phải hỏi "viết test case cho chức năng này thế nào?", hãy luyện thêm manual trước.
Tiêu chí 2: Viết bug report đủ thông tin để dev reproduce
Bug report tệ là nguyên nhân số 1 làm chậm cả team. Bạn phải viết được report mà dev đọc vào là reproduce được ngay: môi trường, steps to reproduce, actual result, expected result, severity. Nếu dev còn phải hỏi lại bạn nhiều lần, test thêm 3-6 tháng nữa.
Tiêu chí 3: Hiểu logic code cơ bản và HTTP
Automation không yêu cầu bạn là developer. Nhưng bạn phải hiểu: điều kiện if/else, vòng lặp, hàm là gì. Biết HTTP request/response (GET, POST, status code 200/400/500) để test API. Nếu chưa rõ những thứ này, học automation sẽ rất vất vả. Bạn có thể xem qua khóa Lập Trình JavaScript Cơ Bản - miễn phí và giải thích từ đầu, đủ để hiểu logic cơ bản phục vụ automation.
Tiêu chí 4: Biết SQL cơ bản
Test data verification - kiểm tra dữ liệu trong database sau khi thực hiện một hành động - là việc automation tester làm hàng ngày. Bạn cần biết SELECT, WHERE, JOIN ở mức đủ dùng. Không cần DBA level, chỉ cần đọc được dữ liệu và verify.
Nếu bạn đáp ứng cả 4 tiêu chí trên, bạn đã sẵn sàng học automation. Nếu chưa, đừng lo - tiếp tục luyện manual, bạn đang đi đúng hướng.
Lộ trình thực tế: Từ manual sang automation
Mình hay nói với các bạn mới: đừng hỏi "bao lâu thì học automation", hãy hỏi "mình đã thành thạo manual chưa".
Lộ trình thực tế mà mình thấy hiệu quả với hầu hết người chuyển ngành:
Tháng 1-3: Nền tảng manual
- Học viết test case từ spec/yêu cầu thực tế
- Luyện viết bug report đủ thông tin
- Làm quen với Jira (quản lý bug), TestRail hoặc spreadsheet để quản lý test case
- Thực hành trên app thật: chọn 1 app quen dùng (Shopee, Tiki, app ngân hàng) và viết test case cho các tính năng chính
Tháng 4-6: Mở rộng manual + học nền cho automation
- Học API testing bằng Postman - đây là bước đệm tốt nhất từ manual sang automation
- Học SQL cơ bản: SELECT, WHERE, JOIN, GROUP BY
- Tìm hiểu HTTP cơ bản: request methods, status codes
- Bắt đầu đọc code (không cần viết): hiểu flow của script automation đơn giản
Từ tháng 7 trở đi: Automation
- Chọn 1 tool: Selenium + Java, hoặc Cypress/Playwright nếu đã có nền JavaScript
- Bắt đầu với test case đơn giản nhất: đăng nhập
- Dần dần xây test suite cho các flow quan trọng
Postman là điểm chuyển tiếp lý tưởng giữa manual và automation
Thời gian trên chỉ là tham khảo. Bạn 25, 30, hay 35 tuổi - không quan trọng. Quan trọng là chất lượng thực hành, không phải số tháng. Lớp mình có bạn 32 tuổi từ kế toán chuyển sang, mất 8 tháng để vững manual và API testing - giờ là tester ở công ty fintech, viết automation test hàng ngày.
Nếu muốn bổ sung nền tảng lập trình để học automation sau này, khóa Lập Trình JavaScript Nâng Cao cover closure, async/await và các khái niệm giúp bạn đọc hiểu script automation dễ hơn nhiều.
