Thành thật mà nói sẽ chẳng có một đứa trẻ 10 tuổi nào nói với bạn ước mơ của nó là trở thành kỹ sư kiểm thử phần mềm. Cái nghề nghe có vẻ khô khan, khó mường tượng và nhiều khi còn bị hiểu sai lệch. Đó luôn luôn là lựa chọn của người lớn. Nhưng tại sao mình lại chọn nghề kiểm thử phần mềm? Làm thế nào để bắt đầu? Những lợi ích cũng như thách thức của nghề? Xu hướng của nghề kiểm thử phần mềm trong tương lai? Những kỹ năng gì cần cho một kỹ sư kiểm thử?
Trong bài viết hôm nay, mình sẽ chia sẻ quan điểm của mình về nghề kiểm thử phần mềm này nhé.
Kiểm Thử Phần Mềm Là Gì?
Kiểm thử phần mềm bao gồm một loạt các hoạt động nhằm mục đích kiểm tra xem hoạt động thực tế của một hệ thống/chương trình phần mềm có đáp ứng các yêu cầu đã chỉ định và tạo ra kết quả mong muốn hay không. Mục tiêu khác của kiểm thử phần mềm là đảm bảo rằng giải pháp không có bất kỳ lỗi hoặc khiếm khuyết nào. Kiểm thử phần mềm là hoạt động cần thiết để xác định xem sản phẩm của bạn có xảy ra lỗi, thiếu yêu cầu, hay lỗ hổng trong yêu cầu hay không. Các hoạt động kiểm thử có thể được thực hiện thủ công (manual testing) hoặc với sự trợ giúp của các công cụ kiểm thử (automation testing).
Công Việc Của Người Kiểm Thử Phần Mềm Là Gì?
Kỹ sư kiểm thử phần mềm có nhiều vai trò khác nhau tùy thuộc vào các dự án cần được kiểm thử, kỹ năng và kinh nghiệm của người kiểm thử. Dưới đây là những công việc điển hình của một kiểm thử viên phần mềm:
- Xây dựng kế hoạch kiểm thử và quy trình kiểm thử.
- Tiến hành kiểm thử sản phẩm, phân tích kết quả, báo cáo các vấn đề cũng như sự cố bất thường xảy ra trong quá trình thực hiện kiểm thử.
- Tham gia vào quá trình kiểm thử trong tất cả các giai đoạn của vòng đời phát triển sản phẩm: Thiết kế – Phát triển – Kiểm thử – Phát hành – Bảo trì.
- Nghiên cứu và phân tích đặc tả kỹ thuật của hệ thống.
- Báo cáo các vấn đề kỹ thuật và lỗi tìm thấy trong khi thực hiện Kiểm thử thăm dò.
- Kiểm thử hồi quy khi có bất kỳ thay đổi nào trong code.
- Phối hợp với nhà phát triển và các thành viên khác trong nhóm thực hiện các chương trình đánh giá, cải tiến sản phẩm.
- Đảm bảo chất lượng tổng thể của phần mềm.
Những Kỹ Năng Cần Có Ở Một Kỹ Sư Kiểm Thử
Để làm tốt công việc của một kỹ sư kiểm thử phần mềm đòi hỏi bạn phải không ngừng học hỏi và nâng cấp kỹ năng của mình cả về kỹ năng Technical và Non-technical. Mình xin liệt kê một số kỹ năng điển hình mà bạn nên trau dồi nếu muốn trở thành một kiểm thử viên chuyên nghiệp.
1. Kỹ năng technical

Kỹ năng technical là yêu cầu đầu tiên và quan trọng nhất. Một số kỹ năng bạn nên học và nắm vững bao gồm:
- Kiến thức nền tảng về Cơ sở dữ liệu/SQL: Một lượng lớn dữ liệu trong hệ thống phần mềm lưu trữ trong cơ sở dữ liệu (database) như Oracle, MySQL, Postgres, v.v.. Trong những trường hợp khi dữ liệu này cần được xác thực, thì những câu truy vấn SQL từ đơn giản đến phức tạp sẽ giúp bạn lấy dữ liệu và kiểm tra xem dữ liệu đã được lưu trữ/lấy ra phù hợp hay chưa.
- Kiến thức cơ bản về Linux và các hệ điều hành khác: Sự hiểu biết về hệ điều hành là bắt buộc đối với người kiểm thử phần mềm. Bạn sẽ được yêu cầu tạo môi trường kiểm thử và thực hiện các trường hợp kiểm thử (test case); do đó có kiến thức về các hệ điều hành sẽ làm cho công việc của người kiểm thử được dễ dàng hơn. Hơn nữa, hầu hết các ứng dụng và dự án đều chạy trên môi trường Linux. Do đó, bạn nên làm quen với các nguyên tắc cơ bản của các lệnh và hoạt động của Linux cùng với việc cài đặt thử nghiệm. Bạn có thể tìm hiểu về Linux tại đây.
- Kiến thức và kinh nghiệm sử dụng Công cụ theo dõi bug: Theo dõi bug và vòng đời bug là một khía cạnh quan trọng khác trong kiểm thử phần mềm. Một điều cực kỳ quan trọng là quản lý bug đúng cách và theo dõi chúng một cách có hệ thống. Theo dõi bug trở nên cần thiết vì không chỉ bạn và người sửa bug mà toàn bộ các thành viên trong nhóm cần biết được một số thông tin về bug như: nội dung bug là gì, phát hiện khi nào, ai quản lý, ai là người sửa bug, ai là người kiểm thử,…. Một số công cụ phổ biến để quản lý bug bao gồm: Jira, Redmine, Bugzilla,…Bạn cũng có thể tìm hiểu thêm về cách viết bug report trong bài viết này của mình nhé.
- Kiến thức và kinh nghiệm sử dụng Công cụ kiểm thử tự động: Bạn đã là một kỹ sư kiểm thử. Bạn đã quen thuộc với các công cụ quản lý, công cụ theo dõi bug, nhưng nếu toàn bộ công việc kiểm thử của bạn vẫn đang làm thủ công, thì bạn rất nên xem xét phát triển sự nghiệp của mình thêm hướng kiểm thử tự động. Khi đó việc cần thiết là bạn nắm được kiến thức cũng như kinh nghiệm sử dụng một số công cụ kiểm thử tự động. Việc này khó hơn, để viết được kịch bản kiểm thử (test scripts), bạn phải quen thuộc với ít nhất một ngôn ngữ lập trình. Các ngôn ngữ lập trình được sử dụng phổ biến nhất cho Kiểm thử phần mềm là Ruby, Python, Java và C#.
- Kiến thức và kinh nghiệm sử dụng Công cụ quản lý kiểm thử: Một kỹ năng nữa bạn nên xây dựng cho mình là sử dụng Công cụ quản lý kiểm thử. Bởi nếu không có những kỹ thuật quản lý kiểm thử phù hợp, quy trình kiểm thử phần mềm sẽ gặp rất nhiều khó khăn. Quản lý kiểm thử sẽ bao gồm các hoạt động quản lý công việc, sản phẩm đầu vào, sản phẩm đầu ra và các hoạt động liên quan đến kiểm thử của bạn. Nó càng đặc biệt hữu ích khi bạn làm việc nhóm.
2. Kỹ năng non-technical

Ngoài những kỹ năng về technical, công việc của một kiểm thử viên còn đòi hỏi bạn một số những kỹ năng khác như khả năng tự học hỏi, phân tích vấn đề, kỹ năng giao tiếp và làm việc nhóm, quản lý thời gian… Cùng mình phân tích một số kỹ năng mà người kiểm thử nên trau dồi trong quá trình làm việc nhé.
- Kỹ năng giao tiếp: Một trong những yêu cầu chính của tester là có kỹ năng mềm tốt để giao tiếp hiệu quả với những đồng nghiệp khác bằng cả lời nói và văn bản. Bạn sẽ là người tạo các tài liệu kiểm thử như test case, test plan, test strategy, bug report và nhiều thứ khác. Tất cả chúng cần phải dễ đọc và dễ hiểu. Hơn nữa, bạn thường xuyên sẽ làm việc với một nhóm nhà phát triển. Giao tiếp với họ khi có vấn đề xảy ra sẽ cần một chút kín đáo, tế nhị và một số kỹ năng ngoại giao.
- Kỹ năng phân tích: Một người kiểm thử phần mềm giỏi phải có kỹ năng phân tích sắc bén. Kỹ năng phân tích sẽ giúp chia một hệ thống phần mềm phức tạp thành các đơn vị nhỏ để hiểu rõ hơn và tạo ra thiết kế tài liệu test case được hiệu quả.
- Tổ chức và quản lý thời gian: Kiểm thử có thể là một công việc rất khắt khe, đặc biệt là trong giai đoạn chuẩn bị phát hành. Người kiểm thử cần có quy trình làm việc hiệu quả, và có kỹ năng quản lý thời gian tốt để mọi việc diễn ra suôn sẻ. Hầu hết mọi trường hợp bạn sẽ cần làm việc nhóm, nghĩa là công việc của bạn có thể ảnh hưởng trực tiếp đến công việc của người khác. Tổ chức và quản lý thời gian tốt giúp bạn không làm gián đoạn công việc chung.
- Thái độ cầu tiến: Điều mình muốn nói ở đây là sự định hướng phát triển nghề nghiệp, sự sẵn sàng học hỏi, chủ động trong công việc cũng như chủ động đề xuất cải tiến quy trình. Một kỹ sư QA giỏi luôn có mong muốn biết nhiều hơn. Do đó tự học là một trong những phẩm chất cá nhân quan trọng mà nhà tuyển dụng chú ý khi lựa chọn nhân viên tiềm năng. Cách tốt nhất để trau dồi kỹ năng của mình là không ngừng học hỏi, cống hiến hết mình cho hoạt động này, ngay cả khi bạn rảnh rỗi.
- Niềm đam mê: Tất nhiên rồi, để trở nên xuất sắc trong bất kỳ ngành nghề nào cũng đòi hỏi người ta phải có sự đam mê, nhiệt thành đáng kể dành cho nó. Một người kiểm thử phần mềm cũng cần có niềm đam mê công việc với lĩnh vực của mình. NHƯNG làm thế nào để bạn xác định liệu bạn có đam mê kiểm thử phần mềm hay không nếu bạn chưa bao giờ kiểm thử trước đây? Đơn giản HÃY THỬ và nếu kiểm thử phần mềm không khiến bạn hứng thú, bạn hãy chuyển sang thứ khác mà bạn quan tâm hơn.
Con Đường Sự Nghiệp Của Kỹ Sư Kiểm Thử
Con đường sự nghiệp cho một kỹ sư kiểm thử phần mềm điển hình về cơ bản sẽ như sau:
- Fresher kiểm thử
- Senior kiểm thử (2-3 năm kinh nghiệm)
- Điều phối viên kiểm thử (5-6 năm kinh nghiệm)
- Quản lý kiểm thử (8-11 năm kinh nghiệm)
- Quản lý kiểm thử cấp cao (trên 14 năm kinh nghiệm)
Về mặt chuyên môn, một khi bạn đã quen với kiểm thử thủ công, bạn cũng không muốn theo con đường quản lý, thì bạn có thể theo đuổi sự nghiệp theo hướng chuyên gia, chúng sẽ bao gồm:
- Kiểm thử tự động: Với tư cách là kỹ sư kiểm thử tự động, bạn sẽ chịu trách nhiệm cho việc thực hiện các trường hợp kiểm thử một cách tự động hóa thông qua các công cụ kiểm thử. Việc này sẽ giảm thiểu đáng kể thời gian đặc biệt với những bộ test case phải thực hiện lặp lại nhiều lần.
- Kiểm thử hiệu năng: Kiểm thử hiệu năng bao gồm kiểm tra khả năng đáp ứng của ứng dụng về thời gian tải, khả năng chịu tải tối đa của ứng dụng…
- Business Analyst: Một lợi thế mà người kiểm thử có được so với nhà phát triển là họ có kiến thức về nghiệp vụ sản phẩm. Một hướng phát triển nữa cho các kiểm thử viên là trở thành người phân tích nghiệp vụ (Business Analyst). Trong vai trò này, bạn sẽ chịu trách nhiệm phân tích và đánh giá mô hình kinh doanh cũng như quy trình làm việc của công ty mình.
Danh sách những cơ hội phát triển có thể được mở rộng hơn nữa, nhưng con đường sự nghiệp chính mà một kiểm thử viên có thể mở ra là trở thành kỹ sư kiểm thử chuyên nghiệp. Tư duy chiến lược, phương pháp tiếp cận định hướng nghiệp vụ (business-oriented approach), kiến thức vững vàng về công cụ và kỹ thuật kiểm thử là những yếu tố chính để xây dựng sự nghiệp thành công.
Kết Luận
Bước vào lĩnh vực IT có thể rất khó khăn. Để làm việc tốt trong nghề này bạn cần sẵn sàng và mong muốn học hỏi, không ngừng cải thiện kỹ năng của mình và có mục tiêu trở thành một chuyên gia trong lĩnh vực của mình. Đây không phải là con đường sự nghiệp dễ dàng, nhưng nó rất đáng giá.
Mình không học CNTT, cũng không bắt đầu công việc kiểm thử phần mềm. Mình học qua những đồng nghiệp của mình, qua những buổi chia sẻ, đào tạo training của những người đi trước. Một câu nói mà mình rất thích khi bắt đầu theo đuổi con đường này:
If not you, but who?
If not now, but then?
Nếu bạn có hứng thú với nghề kiểm thử phần mềm, hãy tự mình tìm hiểu và đưa ra quyết định nhé. Bởi “Không phải bạn thì là ai? Không phải bây giờ thì khi nào?”
Good luck for you!
P/s: Cám ơn chị Phạm Thanh An đã dìu dắt em từ những ngày đầu tiên ạ! Nhớ và biết ơn chị nhiều!