I. QA là gì?
QA là người chịu trách nhiệm đảm bảo chất lượng sản phẩm thông qua việc đưa ra quy trình làm việc giữa các bên liên quan. QA là viết tắt của Quality Assurance.
Nhiệm vụ chủ yếu của QA:
- Đề xuất, đưa ra quy trình phát triển (development process) sản phẩm phù hợp với yêu cầu cụ thể của từng dự án. Các quy trình này có thể được phát triển dựa trên V-model hay Agile (đa số là Scrum hoặc Lean Development) hay thông qua việc áp dụng những quy trình quản lý sẵn có như ISO hay CMMI.
- Đưa ra những tài liệu, biểu mẫu, hướng dẫn để đảm bảo chất lượng của sản phẩm cho tất cả các bộ phận trong nhóm phát triển sản phẩm.
- Kiểm tra, audit việc thực thi quy trình của các bộ phận trong nhóm làm sản phẩm có đúng quy trình QA đã đề ra không.
- Nhắc nhở đội ngũ phát triển sản phẩm việc tuân thủ theo quy trình làm việc đã đưa ra.
- Điều chỉnh, thay đổi quy trình phù hợp với từng sản phẩm mà các team đang thực hiện.
Nhiều Công ty vừa và nhỏ, họ không chỉ định 1 vị trí PQA rõ ràng, mà QC Manager/Leader sẽ phụ trách việc đưa ra quy trình làm việc giữa các bên liên quan. Và một khi quy trình đó được duyệt bởi cấp quản lý, thì nó sẽ được duy trì và áp dụng cho các dự án.
Ví dụ: PQA sẽ sẽ quy định khâu kiểm thử sản phẩm ở công đoạn cuối cùng, kiểm thử sản phẩm theo phương pháp, tiêu chuẩn nào, sẽ dùng các tool nào để kiểm thử, đồng thời đưa ra các tiêu chuẩn cho một sản phẩm tốt và chưa tốt.
Đây là một vị trí rất quan trọng đối với các team làm sản phẩm. Do đó, thông thường, chỉ có những công ty Outsourcing lớn như KMS, Harvey Nash, FPT Software… mới tuyển vị trí PQA và chỉ có 2-3 đầu người cho toàn bộ các team làm sản phẩm. Còn lại, đa số các công ty phần mềm thường tuyển SQA (thường gọi là QC).
Dưới đây là một đặc điểm về PQA:
- Tư vấn về quy trình cho dự án để đảm bảo chất lượng toàn dự án.
- Kiểm soát việc thực hiện quy trình của dự án.
- Thu nhận và theo dõi các ý kiến phản hồi khách hàng.
- Thực hiện kiểm duyệt lần cuối (Final inspection) đối với những sản phẩm bàn giao cho khách hàng để đảm bảo chất lượng đúng như cam kết.
- Thực hiện việc đo đạc và phân tích số liệu để đánh giá chất lượng sản phẩm.
- Cải tiến quy trình.
Kỹ năng cần thiết cho QA là gì?
- Hiểu sâu về kiến trúc hệ thống của phần mềm vì công việc của QA rộng hơn QC.
- Khả năng tổ chức, tư duy logic và có hệ thống.
- Kỹ năng phân tích, làm việc dựa trên số liệu tốt.
- Kiến thức rộng về các lĩnh vực của phần mềm mà các team đang thực hiện.
- Kỹ năng giao tiếp trong nội bộ team và các team khác để khai thác thông tin về sản phẩm, dự án và ứng dụng nó vào việc xây dựng hệ thống quy trình.
- Hiểu rõ về các chứng chỉ CMMI, ISO… trong phần mềm để xây dựng các quy trình chuẩn cho các team.
II. QC là gì?
QC là người chịu trách nhiệm thực hiện công việc kiểm tra chất lượng phần mềm. Có 2 vị trí QC thông thường là manual QC (không đòi hỏi kỹ năng lập trình) và automation QC (đòi hỏi kỹ năng lập trình). QC là viết tắt của chữ Quality Control.
Nhiệm vụ của các QC chủ yếu là:
- Tìm hiểu hệ thống, phân tích tài liệu mô tả về hệ thống và thiết kế test case,và thực hiện việc test phần mềm trước khi giao cho khách hàng.
- Lên kế hoạch kiểm thử (thường do QC Leader thực hiện)
- Viết Script cho automation test (nếu có áp dụng kiểm thử tự động).
- Sử dụng các test tool để tạo và thực hiện các test case/script chi tiết.
- Phối hợp với nhóm lập trình trong việc fix bug và báo cáo chi tiết cho Project Manager hoặc các bên liên quan khác tuỳ dự án.
- PQA đưa ra quy trình làm việc cho team phát triển sản phẩm, trong đó có khâu Testing, quy định QC kiểm thử sản phẩm ở giai đoạn nào, sử dụng công cụ gì, tiêu chuẩn nào là sản phẩm đạt yêu cầu.
- QC thực thi quy trình mà PQA đề ra.
- PQA giám sát, theo dõi và kiểm tra QC có thực hiện đúng quy trình không, sau đó chỉnh sửa cho phù hợp với tiến độ, hiện trạng dự án.
- QC báo cáo kết quả test cho QC Lead/QC Manager, PQA báo cáo kết quả thực thi quy trình phát triển sản phẩm cho Project Manager.
Tuy nhiên, hiện nay hai khái niệm công việc này vẫn còn bị nhầm lẫn rất nhiều. Có những mẩu tuyển dụng QA Engineer nhưng thực chất lại làm hầu hết công việc của QC như sau:
- Nghiên cứu yêu cầu và thiết kế của dự án.
- Thiết kế test case, viết kịch bản test.
- Thực thi manual test hoặc automated test.
- Phối hợp với các bộ phận liên quan để đảm bảo chất lượng dự án/sản phẩm.
- Quản lý, phân tích, theo dõi và báo cáo kết quả test.
Những kỹ năng quan trọng của QC
Để trở thành một nhân viên QC tốt đòi hỏi bạn phải có rất nhiều kỹ năng cũng như kiến thức chuyên môn. Tuy nhiên, có những kỹ năng được đánh giá là quan trọng hơn cả cho một QC có thể thành công trong công việc.
Kỹ năng code
QC phải có kiến thức tốt về mọi chức năng, khía cạnh của sản phẩm. Như vậy mới review được các yêu cầu của requirement.
Kỹ năng giám sát
QC đóng vai trò rất quan trọng trong công tác sản xuất phần mềm vì họ sẽ là người trực tiếp kiểm tra từng giai đoạn của quá trình sản xuất. Bạn phải phát hiện ra những điểm chưa hoàn thiện, các lỗi trên sản phẩm để đưa ra sản phẩm cuối cùng hoàn thiện nhất. Bộ phận QC phải đảm bảo sản phẩm phải được kiểm soát 100% tại tất cả các công đoạn.
Do vậy, nếu bạn có kỹ năng giám sát tốt thì mới có thể nhanh chóng phát hiện các lỗi kỹ thuật trong quá trình được giao. Một nhân viên QC nếu không có kỹ năng giám sát tốt sẽ dễ bỏ qua lỗi, gây ảnh hưởng nghiêm trọng đến chất lượng sản phẩm.
Kỹ năng giao tiếp
Vì QC phải làm việc với rất nhiều thành viên khác trong team và nhất là công việc truyền đạt ý kiến, phản hồi của mình với Developer, Project Manager.
Kỹ năng quản lý
Đây là một kỹ năng cần thiết cho tất cả các ngành nghề, không riêng gì nghề QC. Kỹ năng quản lý được thể ở việc quản lý các nhân viên bên dưới và cả quản lý bản thân.
Một người quản lý giỏi phải biết được năng lực của cấp dưới, phân phối nhân viên làm các công việc phù hợp với thế mạnh của họ, đôn đốc nhân viên hoàn thành công việc đúng tiến độ. Nếu bạn có kỹ năng quản lý tốt thì bạn có thể hoàn thành đúng hạn khối lượng công việc được giao và tăng tính gắn kết trong nhóm.
Về mặt quản lý bản thân, nếu bạn quản lý tốt quỹ thời gian, đưa ra quy trình làm việc cụ thể, rõ ràng thì bạn sẽ phát huy được hết năng lực của mình.
Các resources hữu ích để trở thành QC:
- Software Testing Help: chuyên trang về Testing với kiến thức từ căn bản đến nâng cao.
- Tutorials Point: chuyên trang về kiến thức Testing nâng cao.
- Test this Blog by Eric Jacobson: kinh nghiệm Testing rất hữu ích từ blogger Eric Jacobson.
- Automation Beyond: kiến thức vể Automation Test.
- uTest: forum hỏi đáp về Testing nhanh chóng, tiện lợi.
- SQA Forum: diễn đàn về kiểm thử phầm mềm rất nổi tiếng giúp giải đáp mọi thắc mắc về testing và nghề.
- Software Test Automation Forums: diễn đàn về automation testing.
- Rainforest QA Blog: blog về SQA với nhiều kiến thức thực tế và hữu ích.
- SoftwareQATest: chuyên trang về kiến thức cơ bản và nâng cao nghề Testing.
- Software Testing Fundamentals: chuyên trang về nghề SQA với cực nhiều thông tin hay, được phân từ cơ bản đến nâng cao.
- Testing VN: diễn đàn về Kiểm thử Phần mềm bằng Tiếng Việt rất sôi động, trao đổi rất nhiều thông tin hữu ích.
III. Học gì để trở thành tester
Kiến thức chung
- Kiến thức căn bản về máy tính, tin học văn phòng căn bản, cài đặt phần mềm, sử dụng internet.
- Kiến thức về lập trình: Căn bản SQL, HTML, CSS. Đây là 3 món tôi nghĩ rất cần thiết khi làm test, bạn không cần phải học sâu để viết code nhưng ít ra phải đọc hiểu được và có thể chỉnh sửa code đơn giản.
- Kiến thức tổng quan về test, bao gồm việc hiểu các định nghĩa cơ bản, các thuật ngữ, quy trình phát triển phần mềm, quy trình test. Bạn có thể học theo cuốn ISTQB Foundation hoặc tham khảo các mục gợi ý sau:
-
- What is Software Testing? – Tìm hiểu phần này để biết được testing là gì? các định nghĩa, khái niệm căn bản về kiểm thử phần mềm.
- Why is Software Testing Important? – Tại sao testing lại quan trọng và cần thiết? nếu không có tester thì sản phẩm sẽ ra sao?
- Software Development life cycle: Vòng đời phát triển phần mềm, vị trí của testing trong các giai đoạn phát triển sản phẩm.
- Software Test life cycle: Vòng đời của kiểm thử, thứ tự các công việc kiểm thử.
- Defect Life Cycle: Vòng đởi của lỗi và trạng thái qua các giai đoạn.
- Quality Assurance vs. Quality control, Verification vs Validation: Phân biêt sự giống nhau và khác nhau giữa một số khái niệm.
- Software Testing Levels: Các mức độ trong kiểm thử, đi từ nhỏ nhất đến các mức độ cao nhất.
- Software Testing types: Các loại testing thư Functional testing, Non-functional testing, Structural testing, Change related testing.
Phần kiến thức bổ sung
Manual Test:
Đây là danh sách các kiến thức bạn nên tìm hiểu sâu thêm nếu sẽ làm test theo hướng manual.
- Create a Test Plan: Các thành phần cần có trong một test plan cơ bản, cách viết test plan.
- Design Test case: Cách tạo và viết một testcase thông dụng.
- Test Design Techniques: Các kỹ thuật thiết kế testcase, giúp cho testcase hiệu quả và tối ưu hơn.
- Test reporting, Daily status reports – cách viết report để báo cáo kết quả test của mình.
- Defect management: Finding defects, Logging defects, Tracking and managing defects – Học cách report & quản lý một bug cũng như sử dụng tools tracking thông dụng như Jira, Mantis, Bugzilla, Application Lifecycle Management (ALM).
- Mobile application testing (iOS, Android, Windows Phone): Cách cài đặt và test ứng dụng mobile, cách giả lập thiết bị điện thoại trên máy tính.
- Windows, Website testing & Tools support: Cách test một ứng dụng desktop, một trang web và giả lập các trình duyệt khác nhau trên máy tính.
- Risk based testing process and implementation: Đánh giá rủi ro trong kiểm thử, đây là phần nâng cao nhưng cũng nên tìm hiểu qua.
- Coding: SQL, HTML, CSS.
Automation Test:
- Học thêm về lập trình: Java, C# (.Net) là hai ngôn ngữ căn bản mà những người làm automation hay sử dụng, ngoài ra có các ngôn ngữ khác dùng để hỗ trợ như AutoIT, Python.
- Học về các Automation Tool/Framework phổ biến như: Ranorex, Selenium, Appium, TestComplete.
- Các Tools khác như: Jmeter, SoapUI.
IV. Tổng kết
QA và QC là 2 lĩnh vực nghề nghiệp có liên quan nhưng hoàn toàn tách biệt. QA bao quát tổng thể hệ thống chất lượng, liên quan đến toàn bộ và sâu rộng đến các phòng ban trong tổ chức. Còn QC cụ thể hơn, nó kiểm tra chất lượng cụ thể của sản phẩm hoàn thiện hay các công đoạn trong sản xuất.
Để trở thành những QA và QC chuyên nghiệp, bên cạnh những kinh nghiệm tích lũy được trong môi trường làm việc thì việc cập nhật những kiến thức chuyên ngành và thông tin hữu ích từ các chuyên gia thâm niên cũng là cách để bạn nâng cao trình độ và “khéo léo” hơn trong việc vận động thực hiện các công được hiệu quả và trơn tru.
Link tham khảo: http://www.sam.edu.vn/qa-va-qc-giong-va-khac-nhau-nhu-the-nao