QA là gì? QC là gì? Phân biệt giữa QA, QC và Tester
QA, QC và Tester là những thuật ngữ quen thuộc trong lập trình. Tuy nhiên, với những người không chuyên hay mới bắt đầu với lập trình thì chưa chắc đã biết rõ. Vậy QA là gì? QC là gì? Tester là gì? Sự khác biệt của QA, QC và Tester trong lập trình như thế nào? Bài viết dưới đây của VisualCPP sẽ giúp bạn hiểu rõ hơn về 3 khái niệm QA, QC và Tester.
Khái niệm QA, QC và Tester trong lập trình
Trước khi đi vào phân biệt, chúng ta sẽ cùng tìm hiểu về các khái niệm QA là gì, QC là gì và Tester là gì nhé.
QA là gì?
QA (được viết đầy đủ là Quality Assurance) có nghĩa là đảm bảo chất lượng. Trong lập trình, QA là người chịu trách nhiệm đảm bảo chất lượng sản phẩm hay tiến độ dự án thông qua việc đưa ra quy trình làm việc giữa những bên có liên quan.
Những công việc của QA cần làm bao gồm:
- Đưa ra các quy trình phát triển sản phẩm thích hợp với từng yêu cầu cụ thể cho mỗi dự án. Thông thường, các quy trình này sẽ được phát triển ở iOS, CMMI, V-model hoặc Agile.
- Đưa ra các tài liệu, biểu mẫu hướng dẫn nhằm đảm bảo chất lượng sản phẩm.
- Kiểm tra, đánh giá việc thực hiện quy trình của các bộ phận trong nhóm xem có đúng quy trình đề ra hay không.
- Điều chỉnh và thay đổi quy trình sao cho đảm bảo phù hợp, đồng thời cũng nhắc nhở đội phát triển sản phẩm phải tuân thủ theo.
QA sẽ quy định khâu kiểm thử sản phẩm ở công đoạn cuối cùng. Các quy định về kiểm thử sản phẩm theo phương pháp nào, tiêu chuẩn nào, dùng tool nào để kiểm thử. Đồng thời, QA cũng có đưa ra các tiêu chuẩn cho sản phẩm tốt hay chưa tốt.
Nhiều công ty vừa và nhỏ thì người quản lý, trưởng nhóm sẽ phụ trách đưa ra quy trình làm việc giữa các bên liên quan. Một quy trình đó được duyệt bởi cấp quản lý và sẽ được duy trình, áp dụng cho các dự án.
Các kỹ năng cần có của một QA:
- Cần có kiến thức sâu rộng về kiến trúc hệ thống của phần mềm.
- Có tư duy logic, khả năng tổ chức khoa học.
- Có kỹ năng phân tích và làm việc dựa trên số liệu.
- Có kiến thức rộng về các lĩnh vực của phần mềm mà team thực hiện.
- Có kỹ năng giao tiếp, làm việc nhóm tốt để triển khai thông tin về sản phẩm, dự án và ứng dụng vào xây dựng hệ thống quy trình.
- Hiểu rõ về iOS, CMMI,… để xây dựng các quy trình chuẩn cho team.
QC là gì?
QC (được viết đầy đủ là Quality Control) có nghĩa là kiểm soát chất lượng. Trong lập trình, QC là người sẽ thực hiện những bài kiểm tra chất lượng nhằm đảm bảo sản phẩm đúng và đủ với các yêu cầu mà QA đề ra. Không chỉ vậy, QC còn đảm bảo dễ sử dụng, hiệu suất tốt thông qua Usability Test và Performance Test.
Có 2 vị trí QC thông thường bao gồm:
- Manual QC
- Automation QC
Những công việc của QC cần làm bao gồm:
- Tìm hiểu về hệ thống, phân tích tài liệu mô tả hệ thống, thiết kế test case và thực hiện test phần mềm trước khi giao cho khách hàng.
- Lên kế hoạch testing, thường do QC Leader thực hiện.
- Viết Script cho Automation test nếu áp dụng kiểm thử tự động.
- Sử dụng test tool để tạo và thực hiện test case/script.
- Phối với với team lập trình để fix bug và báo cáo chi tiết cho Project Manager hay các bên liên quan (tùy dự án).
Các kỹ năng cần có của một QC:
- Nếu làm Automation, cần có kỹ năng code.
- Có kiến thức về mọi chức năng, khía cạnh sản phẩm để review được yêu cầu của requirement.
- Có tính cẩn thận, kỹ tính đảm bảo độ chính xác cao cho công việc.
- Có kỹ năng giao tiếp tốt để làm việc với cả team, truyền đạt ý kiến và phản hồi với các bộ phận khác.
Tester là gì?
Tester hay Testing Engineer/Test Engineer hoặc Software Testing chính là kiểm thử. Đây là người thực hiện quy trình kiểm thử phần mềm, ứng dụng mà các lập trình viên làm ra. Họ có nhiệm vụ tìm ra các trường hợp lỗi, thiếu sót hay bất kỳ vấn đề nào có thể ảnh hưởng tới chất lượng của phần mềm.
Những công việc của Tester cần làm bao gồm:
- Xem xét yêu cầu và chuẩn bị kịch bản thử nghiệm phần mềm.
- Check khả năng sử dụng phần mềm.
- Phân tích kết quả kiểm tra về tác động của cơ sở dữ liệu, lỗi hay khả năng sử dụng.
- Chuẩn bị báo cáo về mọi khía cạnh có liên quan đến thử nghiệm phần mềm, sau đó gửi cho nhóm thiết kế.
- Trao đổi với khách hàng để hiểu hơn về yêu cầu sản phẩm.
- Tham gia công việc đánh giá phần mềm, cung cấp đầu vào theo yêu cầu, thiết kế sản phẩm cũng như phát hiện vấn đề tiềm ẩn.
Tester giỏi cần sở hữu kỹ năng như:
- Kỹ năng phân tích nhanh và chuẩn xác
- Tinh thần học hỏi và luôn trau dồi kiến thức.
- Có tính kiên trì, kỹ càng, cẩn thận.
- Kỹ năng chuyên môn tốt về lập trình.
- Kỹ năng giao tiếp và teamwork tốt.
- Nhanh nhạy với thị trường, thấu hiểu khách hàng, người dùng sản phẩm.
Phân biệt QA, QC và Tester trong ngành lập trình
Từ khái niệm trên của 3 thuật ngữ, hẳn các bạn sẽ cảm thấy 3 thuật ngữ này khá giống nhau. Thực chất chúng đều có sự liên quan ở mức độ nhất định, có điểm giống nhưng cũng có những điểm khác nhau.
Để phân biệt QA, QC và Tester trong ngành lập trình, bạn có thể tham khảo bảng so sánh dưới đây:
Đặc điểm | Đảm bảo chất lượng (QA) | Kiểm soát chất lượng (QC) | Kiểm thử (Tester) |
Công việc | Gồm mọi hoạt động nhằm đảm bảo việc thực hiện quy trình, thủ tục, tiêu chuẩn trong nội dung kiểm tra phần mềm được phát triển có đúng với yêu cầu hay không | Gồm các hoạt động nhằm đảm bảo xác minh phần mềm đã phát triển có liên quan đến các yêu cầu trong tài liệu đặc tả phần mềm. | Gồm các hoạt động nhằm đảm bảo việc phát hiện ra error/bug/defect trong phần mềm. |
Nhiệm vụ chính | Tập trung vào quy trình, thủ tục hơn tiến hành thực tế. | Tập trung vào kiểm thử thực tế bằng cách thực hiện phần mềm với mục đích xác định error/bug/defect qua việc thực hiện thủ tục và quy trình. | Tập trung vào hoạt động kiểm thử thực tế trên phần mềm. |
Định hướng | Hoạt động định hướng quy trình. | Hoạt động định hướng sản phẩm. | Hoạt động định hướng sản phẩm. |
Tính chất công việc | Mang tính dự phòng | Phát hiện lỗi và khắc phục | Mang tính phòng ngừa |
Vai trò | Là một phần của chu kỳ phát triển phần mềm | Là một phần của QA | Là một phần của QC. |
Trên đây là một số chia sẻ về khái niệm QA là gì, QC là gì, Tester là gì, cũng như phân biệt QA, QC và tester trong ngành lập trình. Hy vọng bài phân tích này sẽ giúp bạn hiểu rõ hơn về QA, QC cũng như Tester và lựa chọn hướng đi phù hợp.
Xem thêm: .NET Core là gì? So sánh .NET Framework và .NET Core