Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 18 — Manual to SDET Transition

Mở đầu — vì sao bài này quan trọng

Nếu bạn đang làm Manual QA và cảm thấy sự nghiệp của mình đang "chạm trần", thì bài này chính là bản đồ giúp bạn thoát ra. SDET — viết tắt của Software Development Engineer in Test — là vị trí kỹ sư kiểm thử biết viết code, tự động hóa kiểm thử, xây dựng framework và tham gia sâu vào quy trình phát triển. Đây không chỉ là một cái danh xưng "kêu hơn", mà là một sự dịch chuyển thực chất về giá trị bạn tạo ra cho sản phẩm và tổ chức.

Vì sao nên chuyển? Có bốn lý do rất thực tế mà tôi muốn bạn ghi nhớ:

Thứ nhất, thu nhập tăng 30–50%. Ở thị trường Việt Nam năm 2026, một Manual QA có 2–3 năm kinh nghiệm thường nhận khoảng 15–22 triệu/tháng. Cùng mức kinh nghiệm đó, nếu bạn là SDET biết Selenium/Playwright, API automation và CI/CD, mức lương nhảy lên 28–40 triệu, thậm chí cao hơn ở các công ty product hoặc outsourcing lớn như FPT Software, KMS Technology, NashTech, hay các fintech như MoMo, VNPay.

Thứ hai, đường băng sự nghiệp (career runway) dài hơn. Manual QA thuần túy đang bị thu hẹp vai trò khi automation phủ ngày càng rộng. SDET thì mở ra nhiều nhánh: Automation Architect, SET (Software Engineer in Test) ở các công ty kiểu Google, QA Lead thiên về kỹ thuật, hay chuyển hẳn sang DevOps/Platform Engineering.

Thứ ba, ảnh hưởng lên sản phẩm cao hơn. Khi bạn viết được automation chạy trong pipeline, bạn không còn là người "báo bug ở cuối chặng" mà là người gác cổng chất lượng ngay trong quá trình build. Tiếng nói của bạn trong các buổi review kiến trúc, thiết kế test có trọng lượng hơn hẳn.

Thứ tư, kỹ năng automation có tính chuyển giao (transferable). Khi bạn học được lập trình, Git, CI/CD, đọc log, gọi API — đây là những nền tảng dùng được ở bất kỳ vai trò kỹ thuật nào, kể cả nếu sau này bạn muốn rẽ sang Dev hay SRE.

Bài này không dạy bạn một công cụ cụ thể. Bài này cho bạn lộ trình chuyển đổi 12 tuần có cấu trúc, tư duy đúng để không bị "học vẹt công cụ", và cách tránh những cái bẫy khiến rất nhiều Manual QA bỏ cuộc giữa chừng.

Khái niệm cốt lõi

SDET khác Manual QA và khác Automation Tester như thế nào?

Nhiều người nhầm lẫn ba vai trò này. Hãy phân biệt rõ:

  • Manual QA: tập trung vào thiết kế test case, thực thi thủ công, khám phá (exploratory testing), hiểu nghiệp vụ sâu. Giá trị nằm ở tư duy kiểm thử.
  • Automation Tester: biết dùng một công cụ để tự động hóa các test case có sẵn. Thường viết script tuyến tính, ít quan tâm kiến trúc.
  • SDET: là kỹ sư phần mềm làm việc trong lĩnh vực test. SDET không chỉ viết script mà còn thiết kế framework, xây dựng công cụ hỗ trợ test, tích hợp test vào CI/CD, review code, và hiểu cả hệ thống đang test lẫn cách nó được build.
Điểm mấu chốt: SDET được đánh giá bằng tiêu chuẩn của một developer. Code của bạn phải sạch, có cấu trúc, dễ bảo trì. Đây chính là lý do việc chuyển đổi đòi hỏi bạn phải học tư duy lập trình một cách nghiêm túc, chứ không chỉ "biết chạy Selenium".

Nền tảng bắt buộc phải có

Để trở thành SDET, bạn cần xây bốn trụ cột kiến thức:

  • Một ngôn ngữ lập trình: chọn theo hệ sinh thái dự án. Java (phổ biến nhất ở outsourcing Việt Nam, đi cùng Selenium/TestNG), JavaScript/TypeScript (đi cùng Playwright/Cypress, đang lên rất mạnh), hoặc Python (dễ học, đi cùng Pytest/Requests). Lời khuyên của tôi: nếu bạn mới bắt đầu và muốn tối ưu cơ hội việc làm ở VN, chọn Java hoặc TypeScript.
  • Kiến thức lập trình cốt lõi: biến, kiểu dữ liệu, vòng lặp, điều kiện, hàm, OOP (class, kế thừa, đóng gói), xử lý ngoại lệ, cấu trúc dữ liệu cơ bản (list, map). Bạn không cần giỏi thuật toán như thi ACM, nhưng phải viết được code có tổ chức.
  • Công cụ và hệ sinh thái: Git (bắt buộc), Maven/Gradle hoặc npm, IDE (IntelliJ/VS Code), Postman, và một CI tool (Jenkins/GitHub Actions/GitLab CI).
  • Kiến thức test tự động: mô hình Page Object Model (POM), assertion, data-driven testing, test runner, reporting, và cách gọi/kiểm thử API.

Vì sao nền tảng Manual QA là lợi thế, không phải gánh nặng

Đây là điều tôi muốn bạn tự tin: Manual QA giỏi khi chuyển sang SDET thường vượt trội hơn một fresher developer chuyển sang test. Vì sao? Vì bạn đã có giác quan về chất lượng — bạn biết chỗ nào dễ hỏng, biết viết test case nào có giá trị, hiểu nghiệp vụ và rủi ro. Automation chỉ là "cánh tay" giúp bạn làm nhanh hơn cái đầu vốn đã sắc bén. Fresher dev có thể viết code đẹp nhưng automation một cách vô nghĩa, test những thứ chẳng ai cần. Đừng bao giờ coi thường vốn liếng nghiệp vụ của mình.

Tình huống thực tế

Tình huống 1 — Ngọc, Manual QA tại một công ty outsourcing ở Đà Nẵng

Ngọc, 27 tuổi, làm Manual QA được 3 năm cho một công ty outsourcing 400 người ở Đà Nẵng, lương 18 triệu. Chị thấy các đồng nghiệp làm automation được cử đi các dự án "xịn" hơn, lương cao hơn, còn mình mãi làm regression thủ công lặp đi lặp lại.

Ngọc quyết định chuyển đổi. Chị dành 90 phút mỗi tối trong 12 tuần học Java + Selenium + TestNG (vì dự án công ty dùng stack này). Điểm thông minh của Ngọc: chị không xin nghỉ để học, mà chủ động đề nghị leader cho tự động hóa 20 test case regression mà chị vốn đã chạy tay hàng ngày. Nhờ hiểu nghiệp vụ sẵn, chị viết được automation "trúng" ngay những case quan trọng.

Sau 5 tháng, Ngọc đưa được 120 case vào một suite automation chạy hàng đêm, giảm thời gian regression từ 3 ngày xuống còn 4 tiếng. Công ty thăng chức chị lên SDET, lương 30 triệu — tăng đúng 66%.

Bài học: Hãy dùng chính công việc hiện tại làm sân tập. Tự động hóa những gì bạn đang làm tay là con đường ngắn nhất, vì bạn đã hiểu nghiệp vụ và có "bài toán thật" để giải.

Tình huống 2 — Tuấn, học đúng công cụ nhưng sai tư duy

Tuấn, Manual QA ở TP.HCM, bỏ tiền học một khóa "Selenium cấp tốc" trong 6 tuần. Anh học thuộc rất nhiều lệnh driver.findElement, viết được script chạy qua giao diện. Nhưng khi phỏng vấn vào một fintech, anh trượt. Người phỏng vấn hỏi: "Nếu một element mất 5 giây mới xuất hiện, bạn xử lý thế nào để test không bị flaky?" Tuấn lúng túng vì chỉ biết Thread.sleep(). Rồi họ hỏi tiếp về Page Object Model, về cách tổ chức code khi có 200 test case — anh không trả lời được vì script của anh viết theo kiểu "chạy từ trên xuống", copy-paste locator khắp nơi.

Tuấn nhận ra vấn đề: anh học công cụ mà không học kỹ thuật lập trìnhkiến trúc test. Anh quay lại học OOP nghiêm túc, học explicit wait, học POM, học tại sao test cần độc lập với nhau. 4 tháng sau anh đậu, lương 32 triệu.

Bài học: SDET được đánh giá như một developer. Biết công cụ mà không biết lập trình bài bản thì bạn chỉ là "người ghi lại thao tác", và loại đó ngày càng bị thay thế bởi công cụ record-and-playback. Đầu tư vào nền tảng lập trình là đầu tư có lãi kép.

Tình huống 3 — Team QA của một startup e-commerce chuyển đổi tập thể

Một startup thương mại điện tử ở Hà Nội có team QA 6 người, toàn Manual. Áp lực release 2 tuần/lần khiến regression thủ công trở thành nút thắt cổ chai. CTO ra chính sách: trong 6 tháng, cả team phải nâng cấp thành "QA lai" biết automation, ai không theo kịp sẽ khó ở lại.

Thay vì để mỗi người tự bơi, họ tổ chức thông minh: chọn 1 người có nền tảng tốt nhất làm "hạt giống", cho học trước rồi xây một framework Playwright + TypeScript làm khung chung. 5 người còn lại chỉ cần học viết test case trong framework có sẵn — dễ hơn nhiều so với tự dựng từ đầu. Họ dùng pair programming: mỗi người automation 1 luồng nghiệp vụ mình rành nhất.

Sau 6 tháng, 5/6 người chuyển đổi thành công. Suite automation phủ 70% luồng chính, thời gian regression giảm từ 2 ngày xuống 3 tiếng. Một người không theo được đã chuyển sang vai trò Business Analyst — vẫn dùng được vốn nghiệp vụ.

Bài học: Chuyển đổi theo team hiệu quả hơn từng cá nhân đơn độc. Xây framework chung một lần, rồi mọi người viết test trên đó. Và không phải ai cũng hợp với con đường SDET — điều đó bình thường.

Hướng dẫn từng bước

Đây là lộ trình 12 tuần mà tôi khuyên bạn theo. Mỗi tuần dành 8–10 tiếng (khoảng 90 phút/ngày). Con số này thực tế cho người vừa đi làm vừa học.

Tuần 1–2: Nền tảng lập trình. Chọn ngôn ngữ (Java hoặc TypeScript) và học cơ bản: biến, kiểu dữ liệu, điều kiện, vòng lặp, hàm, mảng/list. Đừng học lan man — chỉ cần đủ để viết được logic nhỏ. Mục tiêu cuối tuần 2: viết được chương trình tính toán, xử lý chuỗi, đọc mảng bằng vòng lặp mà không cần nhìn mẫu.

Tuần 3: Lập trình hướng đối tượng (OOP). Học class, object, kế thừa, đóng gói, interface. Đây là nền tảng để hiểu Page Object Model sau này. Bài tập: mô hình hóa một "Trang đăng nhập" thành một class có các method.

Tuần 4: Git và môi trường làm việc. Học clone, commit, push, pull, branch, merge, giải quyết conflict. Cài IDE, cài công cụ build (Maven/npm). Tạo một repo thật trên GitHub — đây sẽ là portfolio của bạn.

Tuần 5–6: Selenium/Playwright cơ bản. Học cách khởi tạo browser, tìm element (locator: id, css, xpath), thao tác (click, type), và đặc biệt là wait đúng cách (explicit wait, tuyệt đối tránh Thread.sleep). Viết 10 test đơn giản cho một trang web thật (ví dụ trang đăng nhập của chính sản phẩm bạn đang test).

Tuần 7: Assertion và Test Runner. Học TestNG/JUnit (Java) hoặc Jest/Playwright test (JS). Hiểu cách assert kết quả, cách nhóm test, cách chạy chọn lọc. Test phải độc lập — không phụ thuộc thứ tự chạy.

Tuần 8: Page Object Model (POM). Refactor 10 test ở tuần 5–6 sang mô hình POM. Đây là bước phân biệt "script" với "framework". Locator và hành động gói trong page class, test chỉ gọi method nghiệp vụ.

Tuần 9: Data-driven testing và Reporting. Học chạy cùng một test với nhiều bộ dữ liệu (từ file/CSV/JSON). Tích hợp report (Allure/ExtentReports) để có báo cáo đẹp, dễ đọc cho stakeholder.

Tuần 10: API Testing. Học gọi API bằng code (RestAssured cho Java, hoặc Playwright request/axios cho JS). Kiểm thử status code, response body, schema. API test nhanh và ổn định hơn UI test — kỹ năng cực kỳ có giá.

Tuần 11: CI/CD. Đưa suite automation của bạn chạy tự động trên GitHub Actions hoặc Jenkins. Học cách trigger test khi có commit, đọc log khi fail. Đây là thứ khiến automation của bạn "thật sự có giá trị" chứ không chỉ chạy trên máy cá nhân.

Tuần 12: Dự án tổng hợp + Portfolio. Xây một framework hoàn chỉnh cho một trang web thật: POM + data-driven + API test + CI + report. Đẩy lên GitHub với README rõ ràng. Đây là "sản phẩm" bạn mang đi phỏng vấn — nó nói thay bạn nhiều hơn mọi dòng CV.

Song song 12 tuần này, hãy áp dụng ngay vào công việc thật: mỗi tuần automation ít nhất 1–2 case bạn đang chạy tay. Đây là cách biến việc học thành thành tích có thể đưa vào CV.

Lỗi thường gặp & mẹo

Lỗi 1 — Học công cụ trước, bỏ qua lập trình. Đây là lỗi phổ biến nhất (như Tuấn ở trên). Selenium chỉ là thư viện; nếu bạn không biết OOP, code của bạn sẽ rối và không qua được phỏng vấn. Mẹo: dành ít nhất 3 tuần đầu chỉ cho nền tảng lập trình.

Lỗi 2 — Học quá nhiều lý thuyết mà không code. Xem 40 giờ video không giúp bạn viết nổi một test. Mẹo: quy tắc 20/80 — 20% học, 80% tay gõ code. Mỗi khái niệm học xong phải viết ngay ra một ví dụ chạy được.

Lỗi 3 — Dùng Thread.sleep() khắp nơi. Đây là dấu hiệu của người mới và là nguyên nhân số 1 gây flaky test. Mẹo: luôn dùng explicit/smart wait, chờ theo điều kiện (element hiện ra) chứ không chờ theo thời gian cố định.

Lỗi 4 — Test phụ thuộc lẫn nhau. Viết test B cần test A chạy trước là công thức cho thảm họa. Mẹo: mỗi test tự setup và cleanup dữ liệu của mình, chạy độc lập theo bất kỳ thứ tự nào.

Lỗi 5 — Bỏ hết nghiệp vụ để "làm dev". Nhiều người mải học code đến mức quên mất lợi thế lớn nhất của mình. Mẹo: hãy để tư duy kiểm thử dẫn dắt, code chỉ là công cụ. Automation đúng cái cần automation.

Lỗi 6 — Không có portfolio. CV ghi "biết Selenium" thì ai cũng ghi được. Mẹo: một repo GitHub với framework thật + CI chạy xanh nói lên năng lực rõ ràng gấp nhiều lần.

Mẹo vàng — Tận dụng công việc hiện tại làm bàn đạp. Đừng chờ nghỉ việc rồi mới học. Hãy đề nghị leader cho automation phần regression bạn đang làm. Bạn vừa học, vừa có thành tích thật, vừa được trả lương trong lúc chuyển đổi. Đây là con đường ít rủi ro nhất.

Bài tập thực hành

  • Tự đánh giá xuất phát điểm: Viết ra 4 trụ cột (ngôn ngữ, lập trình cốt lõi, công cụ, test automation) và chấm điểm bản thân từ 0–5 mỗi mục. Xác định 2 điểm yếu nhất để ưu tiên tuần 1–4.
  • Chọn stack: Dựa trên stack dự án hiện tại (hoặc thị trường mục tiêu), quyết định dứt khoát ngôn ngữ + framework. Viết một câu lý do vì sao bạn chọn nó. Không được đổi trong 12 tuần.
  • Automation case đầu tiên: Chọn 1 test case regression bạn đang chạy tay, viết lại thành 1 script automation chạy được (dù còn xấu). Mục tiêu là "chạy xanh", chưa cần đẹp.
  • Refactor sang POM: Lấy script ở bài 3, tách locator và hành động vào một page class. So sánh trước/sau và ghi lại điều bạn học được về khả năng bảo trì.
  • Kế hoạch 12 tuần cá nhân hóa: Lập lịch cụ thể theo giờ rảnh thật của bạn (ví dụ 20h–21h30 các ngày trong tuần). Đặt 1 mốc kiểm tra mỗi 4 tuần và cam kết đẩy code lên GitHub hàng tuần.
  • Dự án cuối (làm ở tuần 11–12): Xây framework hoàn chỉnh cho một website (POM + 5 UI test + 3 API test + report + GitHub Actions). Viết README trình bày rõ để dùng làm portfolio phỏng vấn.

Tóm tắt

Chuyển từ Manual QA sang SDET là một trong những nước đi có tỷ suất hoàn vốn cao nhất trong sự nghiệp kiểm thử: thu nhập tăng 30–50%, đường băng nghề nghiệp dài hơn, ảnh hưởng lên sản phẩm lớn hơn, và kỹ năng có tính chuyển giao cao. Nhưng nó không phải là "học một khóa Selenium là xong".

Ba điều cốt lõi cần khắc ghi: Một, SDET được đánh giá bằng tiêu chuẩn của developer — nên nền tảng lập trình (đặc biệt OOP) quan trọng hơn công cụ. Hai, lộ trình 12 tuần có cấu trúc, học đến đâu code đến đó, luôn kết thúc bằng một portfolio thật trên GitHub. Ba, tận dụng chính công việc hiện tại làm sân tập và giữ vững lợi thế nghiệp vụ Manual của bạn — đó là thứ khiến automation của bạn "trúng đích" hơn hẳn một dev thuần túy.

Những câu chuyện của Ngọc, Tuấn và team startup e-commerce cho thấy: người thành công là người có kỷ luật, học đúng nền tảng, và biến việc học thành thành tích ngay trong công việc. Bạn hoàn toàn có thể là người tiếp theo. Hãy bắt đầu ngay tuần này với bài tập số 1 và số 3 — chọn stack và viết script automation đầu tiên. Con đường ngàn dặm bắt đầu từ một test chạy xanh.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi