QA và QC khác nhau thế nào? Vì sao nhiều công ty gọi nhầm?

⏱︎

Read time:

4–5 minutes
Minh họa phân biệt Quality Assurance và Quality Control trong phần mềm

Trong ngành phần mềm, QA và QC thường được dùng thay thế cho nhau. Nhiều công ty tuyển “QA Engineer” nhưng mô tả công việc lại chủ yếu là viết test case, thực thi kiểm thử và báo cáo bug – những hoạt động gần với Quality Control hơn.

Theo ISTQB, QA và testing không giống nhau. Muốn phân biệt chính xác, hãy nhìn vào đối tượng được tác động và mục tiêu của hoạt động, không chỉ nhìn vào chức danh.

Quality Assurance (QA) là gì?

Quality Assurance là cách tiếp cận hướng vào quy trình (process-oriented) và mang tính phòng ngừa (preventive). QA tập trung xây dựng, triển khai và cải tiến các quy trình với giả định rằng một quy trình tốt, được tuân thủ đúng, sẽ tạo ra sản phẩm tốt.

Các hoạt động QA trong dự án phần mềm có thể gồm:

  • Xây dựng hoặc cải tiến development process và test process.
  • Thiết lập Definition of Ready, Definition of Done và quality gate.
  • Định nghĩa quy tắc review requirement, code và testware.
  • Theo dõi process metrics và phân tích nguyên nhân gốc của defect.
  • Đào tạo, audit và cải tiến cách đội dự án làm việc.

QA áp dụng cho cả development process và testing process, đồng thời là trách nhiệm của mọi thành viên trong dự án, không chỉ của một người hoặc một phòng ban mang tên QA.

Quality Control (QC) là gì?

Quality Control là cách tiếp cận hướng vào sản phẩm (product-oriented) và mang tính khắc phục (corrective). QC đánh giá các work product hoặc sản phẩm để xác định chúng có đạt mức chất lượng yêu cầu hay không.

Các hoạt động QC có thể gồm:

  • Review requirement, thiết kế hoặc source code để tìm defect.
  • Thiết kế và thực thi test case.
  • So sánh actual result với expected result.
  • Báo cáo defect và thực hiện confirmation testing.
  • Đánh giá coverage và chất lượng của test object.

So sánh QA và QC

Tiêu chíQuality AssuranceQuality Control
Trọng tâmQuy trìnhSản phẩm và work product
Mục tiêu chínhPhòng ngừa vấn đềPhát hiện và xử lý vấn đề
Câu hỏi điển hìnhLàm thế nào để tạo ra sản phẩm đúng một cách ổn định?Sản phẩm hiện tại có đạt yêu cầu không?
Ví dụCải tiến quy trình review và quality gateReview tài liệu, chạy test và báo cáo defect
Trách nhiệmMọi người trong dự ánNhững người thực hiện hoạt động kiểm soát chất lượng

Testing nằm ở đâu?

Theo ISTQB, testing là một hình thức chính của Quality Control. Testing đánh giá test object, tìm defect, kích hoạt failure và cung cấp thông tin về chất lượng sản phẩm.

Tuy nhiên, QC không chỉ có testing. Một số hình thức QC khác gồm formal methods, simulation và prototyping. Tương tự, QA cũng rộng hơn việc quản lý tester hoặc kiểm tra số lượng bug.

Vì sao nhiều công ty gọi Tester là QA? 😂

  1. “QA” đã trở thành tên gọi quen thuộc: thị trường tuyển dụng dùng QA, QC và Tester thiếu thống nhất nên QA dần trở thành tên chung cho vị trí kiểm thử.
  2. Một người thường làm cả QA lẫn QC: ngoài testing, họ còn cải tiến template, quy trình review, quality gate hoặc defect workflow.
  3. Công ty chưa tách riêng chức năng chất lượng: team nhỏ thường không có người chuyên về process assurance nên mọi trách nhiệm chất lượng được gom vào “QA team”.
  4. Chức danh mang tính quy ước: tên vị trí được lựa chọn theo thói quen doanh nghiệp, không nhất thiết bám sát định nghĩa học thuật.

Gọi Tester là QA có sai không?

Nếu xét theo khái niệm, gọi mọi hoạt động testing là QA là không chính xác. Một người chỉ viết test case, chạy test và báo bug đang thực hiện chủ yếu công việc QC/testing.

Tuy nhiên, chức danh “QA Engineer” không nhất thiết sai nếu người đó vừa kiểm thử sản phẩm vừa tham gia đảm bảo và cải tiến quy trình. Vì vậy, khi đọc JD hoặc phân chia trách nhiệm, nên xem công việc thực tế thay vì tranh luận chỉ dựa trên tên chức danh.

Ví dụ thực tế

Một dự án liên tục phát sinh lỗi do requirement thiếu acceptance criteria:

  • QC/testing: phát hiện chức năng hoạt động sai, ghi nhận defect và retest sau khi sửa.
  • QA: phân tích dữ liệu defect, nhận ra nguyên nhân lặp lại và bổ sung bước review acceptance criteria trước khi development bắt đầu.

QC xử lý chất lượng của sản phẩm hiện tại; QA cải tiến quy trình để giảm khả năng vấn đề tương tự tái diễn.

Cách ghi nhớ

QA: Process – Prevent.
QC: Product – Detect.

QA và QC không đối lập mà bổ sung cho nhau: quy trình tốt giúp giảm defect, còn kết quả QC cung cấp dữ liệu để tiếp tục cải tiến quy trình.