Định hướng nghề nghiệp - Trở thành Tester hay Developer?
Bài đăng này đã không được cập nhật trong 3 năm
Bài viết này Tôi muốn chia sẻ một số quan điểm và nhận xét liên quan tới công việc KTPM nhằm giúp các bạn sinh viên mới ra trường cũng như các bạn đang đứng ở “ngã ba đường” chọn lựa nghề nghiệp (trở thành tester hay developer) tránh được những “ngộ nhận” về công việc KTPM. Qua đó, tôi hy vọng giúp các bạn có một cái nhìn thấu đáo hơn về ngành này để có thể có được một chọn lựa phù hợp với khả năng, mong muốn và nhu cầu thực tế của thị trường nhân lực IT ở Việt Nam. Dưới đây là bốn ngộ nhận phổ biến trong cách nhìn nhận về ngành KTPM.
1. Ai cũng có thể làm KTPM thậm chí không cần phải qua đào tạo
Nếu chỉ nhìn vào khoảng thời gian 1 người mới tiếp cận với KTPM cho đến khi họ có thể làm được việc thì đúng là không lâu. Chung quy bạn sẽ được trang bị những kiến thức cơ bản về KTPM như:
- Đọc/hiểu yêu cầu của ứng dụng
- Lập kế hoạch và chiến lược kiểm thử
- Kỹ thuật phân tích thiết kế test cases
Dựa trên yêu cầu của phần mềm và các quy trình cơ bản để thực thi kiểm thử. Tuy nhiên đó mới chỉ là những kiến thức cơ bản nhất để bạn có thể bước đi trên con đường nghề nghiệp này.
Thực tế không ít công ty thậm chí còn không có giai đoạn đào tạo cơ bản này. Họ sẽ giao việc cho Tester ngay sau khi cung cấp những thông tin về dự án và sản phẩm đang được phát triển. Tester sẽ phải tự học và nhiều người đã có thể kiếm ra được kha khá lỗi bằng cách làm như vậy. Điều này tạo nên ngộ nhận là công việc KTPM khá dễ, ai cũng có thể làm được và có thể trở thành chuyên gia trong thời gian ngắn hoặc lâu lắm là 2-3 năm.
Thực tế thì khoảng cách về kỹ năng và hiệu quả công việc giữa Tester làm được việc và Tester xuất sắc là khá lớn. Kiểm thử phần mềm đòi hỏi những kỹ năng chuyên môn mà không phải ai cũng có thể sở hữu hoặc trang bị trong một sớm một chiều. Sự đam mê công nghệ, mong muốn đóng góp để cho ra đời một sản phẩm phần mềm với chất lượng hoàn hào, khả năng tư duy sáng tạo, quan sát, trình bày, phân tích và lập trình v.v là những kỹ năng cốt yếu để một Tester có thể làm tốt công việc. Trên thực tế, quá trình đào tạo trong nghành KTPM chủ yếu là quá trình tự học để hoàn thiện kỹ năng.
** 2. Công việc KTPM không đòi hỏi kỹ năng lập trình**
Không ít người nghĩ rằng KTPM được thực hiện theo kiểu thủ công (manual testing hay kiểm thử bằng tay). Như vậy thì những kiến thức như phân tích thiết kế, lập trình, cơ sở dữ liệu, quản lý dự án v.v. được học trong mấy năm ĐH sẽ bị mai một. Trên thực tế, kiến thức và kỹ năng bạn trang bị trong những năm ĐH sẽ giúp bạn trau dồi khả năng tư duy, phân tích để giải quyết vấn đề trong lĩnh vực CNTT. Cho dù bạn chọn lựa trở thành lập trình viên (Developer), người phân tích yêu cầu (Business Analyst) hoặc kiểm thử viên (Tester) thì đó là những kiến thức nền tảng để tiếp cận được công việc trong 1 dự án phát triển phần mềm. Hiên nay, công việc KTPM đòi hỏi Tester phải làm nhiều việc hơn so với trước đây. Ngoài việc kiểm thử các chức năng (functional testing), họ còn phải ít nhiều biết làm kiểm thử tự động (automation testing) và kiểm thử hiệu năng (performance testing) cho sản phẩm. Một người Tester ngày nay sẽ cần phải tìm hiểu và xây dựng giải pháp/công cụ phục vụ kiểm thử tự động/hiệu năng. Và đó có lẽ đã trở thành “chuyện thường ngày ở huyện” cho một Tester. Để đánh giá được công cụ nào “ngon, bổ, rẻ” đòi hỏi người Tester phải nắm vững kỹ thuật, phải biết lập trình để xây dựng thêm tính năng cho phù hợp với nhu cầu dự án.
3. Công việc KTPM không đòi hỏi nhiều khả năng phân tích, sáng tạo
Thống kê cho thấy nếu chỉ dựa vào tài liệu về yêu cầu của ứng dụng (requirements) để tiến hành việc kiểm thử (cho dù các tài liệu này được viết ở mức tốt nhất có thể) thì kết quả cũng chỉ có thể kiếm được khoảng 70% những lỗi có thể xảy ra của ứng dụng. Trách nhiệm của Tester là làm sao phát hiện thêm được càng nhiều càng tốt, trong số 30% lỗi còn lại. Họ phải phân tích xem với công nghệ và phương pháp cài đặt hiện tại có những rủi ro gì về chất lượng. Họ phải vượt ra khỏi các suy nghĩ thông thường (“think out-of-the-box”) về môi trường người dùng cuối; về những kịch bản sử dụng ứng dụng có thể dẫn đến những vấn đề không mong muốn
Về những rủi ro khi phần mềm này tương tác với những phần mềm khác v.v. Hơn nữa, một sản phẩm phần mềm có thể được phát triển bằng công nghệ mới nhất, có nhiều tính năng và rất ít lỗi, nhưng lại không giúp người dùng giải quyết một cách hiệu quả các vấn đề của người dùng trong công việc của họ thì đó vẫn là sản phẩm kém chất lượng. Tester thời hiện đại cần tham gia rất sớm vào dự án phát triển phần mềm mà không làm nhiều việc liên quan tới “kiểm thử” trong thời gian khởi đầu dự án.
Trong giai đoạn này, họ sẽ cùng làm việc với nhóm phát triển phân tích, đánh giá yêu cầu, phân tích các sản phẩm tương tự và đưa ra những đề xuất để cải thiện tính năng của sản phẩm mà cả nhóm đang cùng thực hiện. Thông qua việc đánh giá công nghệ, kiến trúc họ sẽ phải xác định các rủi ro về chất lượng (quality), bảo mật (security), hiệu năng (performance), tính dễ sử dụng (usability) v.v. Khi nhóm phát triển bắt đầu cài đặt là lúc họ lập ra chiến lược kiểm thử, chuẩn bị môi trường sao cho càng giống với môi trường thật càng tốt, nghiên cứu công cụ v.v . Thực tế có tương đối ít công cụ giúp bạn làm tốt những việc này. Vậy nên khả năng phân tích càng tốt và tính sáng tạo càng cao thì công việc của bạn sẽ càng hiệu quả và lý thú.
4. Công việc KTPM không có nhiều thử thách và cơ hội phát triển nghề nghiệp
Cùng với sự suy thoái kinh tế toàn cầu, cạnh tranh trong lĩnh vực CNTT có lẽ hiện nay đang ở mức cao nhất. Một công ty đưa ra sản phẩm hoặc dịch vụ phần mềm sẽ ít có cơ hội sửa sai nếu như sản phẩm hoặc dịch vụ đó không đáp ứng được nhu cầu của người dùng. Điều này đặt một gánh nặng rất lớn lên đội ngũ phát triển phần mềm nói chung và Tester nói riêng.
- Cụ thể hơn là chất lượng công việc phải cao hơn
- Thời gian dành cho kiểm thử ít đi
- Kiểm thử sẽ phải được thực hiện trên nhiều môi trường và tình huống khác nhau
- Tester sẽ phải toàn diện hơn để có thể đảm nhận nhiều loại công việc khác nhau trong từng giai đoạn của dự án v.v.
Điều này đòi hỏi Tester phải tận dụng cơ hội và thời gian nhàn rỗi để trau dồi thêm kiến thức, kỹ năng nhằm chuẩn bị cho những thử thách sắp tới hơn là chỉ “đóng khung” trong công việc của dự án hiện tại.
Một số câu hỏi thường gặp
Câu hỏi:
- Nghành Tester có điều gì thích thú?
- Mức lương hiện nay của Tester khoảng bao nhiêu?
Trả lời:
(KTPM) giúp bạn luôn không ngừng học hỏi, biết thêm kiến thức trong nhiều lĩnh vực khác nhau, bạn sẽ là những người tiên phong được trải nghiệm, được "phá" những sản phẩm mà chưa ai biết, thật tuyệt vời Lương là chỉ số đánh giá hiệu quả công việc của bạn trong Doanh nghiệp (DN). DN trả lương vì những gì bạn đóng góp, những gì bạn làm chứ không phải là những gì bạn biết. Do đó, mức lương của bạn là do bạn và tình hình DN. Mức lương sẽ được xác định cụ thể ngay khi bạn phỏng vấn tại DN bạn nhé.
Câu hỏi:
- Bước chân vào nghề KTPM cần những kỹ năng.
- Để làm việc tốt và gắn bó lâu dài với nghề, chúng ta cần chuẩn bị những gì và hiện thức nó như thế nào?
Trả lời:
Bước chân vào nghề KTPM, bạn cần biết cách hoạt động của ứng dụng phần mềm, bạn đam mê cái mới, thích ""phá"" cho hư,… thì bạn hoàn toàn có thể gia nhập đội ngũ Tester.
Để làm việc tốt và gắn bó lâu dài, bạn cần liên tục học hỏi thêm kiến thức trên nhiều lĩnh vực, trao dồi thêm kỹ năng mềm, nâng cao khả năng tiếng Anh. Như vậy bạn nhất định sẽ thành công...
Câu hỏi:
Là một Tester cần biết ngôn ngữ Lập trình cơ bản nào? Sự hấp dẫn của công việc Kiểm thử phần mềm (KTPM) như thế nào? Đã làm các anh trung thành với công việc KTPM?
Trả lời:
Bạn nên chọn một ngôn ngữ lập trình chính cho mình, sau đó, khi gia nhập dự án Test, tùy theo yêu cầu, công ty sẽ có training thêm để bạn có thể làm tốt công việc của Tester. Công việc KTPM giúp bạn luôn không ngừng học hỏi, biết thêm kiến thức trong nhiều lĩnh vực khác nhau, bạn sẽ là những người tiên phong được trải nghiệm, được ""phá"" những sản phẩm mà chưa ai biết, thật tuyệt vời
Câu hỏi:
Vì sao phải kiểm tra bằng tay khi mình đã có kiểm thử tự động (KTTĐ) ?
Trả lời:
thường được dùng kết hợp với kiểm thử bằng tay để tận dụng hiệu quả nguồn tài nguyên (kiểm thử tự động có thể chạy 24h/ngày) và giả lập được các tình huống mà nếu sử dụng kiểm thử bằng tay sẽ tốn rất nhiều chi phí (VD: 1000 connection cùng 1 thời điểm,…). Cả 2 phương pháp này đều cần thiết trong dự án và không thể nói phương pháp nào quan trọng hơn. Kiểm thử bằng tay có lợi thế là được sử dụng sớm trong dự án, tính tùy biến cao (bạn có thể chuyển hướng nếu cách đang đi ít có khả năng phát hiện lỗi ...) và là phương pháp chính để phát hiện lỗi. Kiểm thừ tự động chỉ được sử dụng hiệu quả khi phần mềm đã phần nào ổn định, không có nhiều thay đổi lớn và được sử dụng để test hồi quy. Hơn nữa chi phí đầu tư ban đầu cho kiểm thử tự động đôi khi rất lớn.
Câu hỏi:
- Kiểm thử tự động có những khó khăn nào?
- Có người nói Tester không cần phải biết code, có người nói code rất giỏi mới test được, như vậy ý kiến nào đúng?
Trả lời:
Kiểm thử tự động sẽ không có sự linh động, tùy biến như kiểm thử tay. Tester sẽ viết script để yêu cầu các bước test sẽ như thế nào, kết quả mong muốn là gì, nếu có gì bất ngờ khác với những kết quả mà Tester ghi nhận thì máy không thể tự nhận xét và đưa ra gợi ý như người làm Test manual được. Bạn không biết code nhưng bạn biết những đặc điểm chính của ngôn ngữ đó, cách ứng dụng được xây dựng và hoạt động trên môi trường ngôn ngữ đó là bạn có thể test được rồi. Thực tế là có khá nhiều bạn thành công với nghề Tester mặc dù là tốt nghiệp không chuyên CNTT (Kinh tế, XHNV, ...) Dĩ nhiên khi bạn code giỏi thì bạn sẽ am tường môi trường, bạn sẽ có thêm nhiều Test case chuyên sâu hơn nhưng quan trọng của Tester là ""mindset"" thử ""phá"" xem thế nào vẫn là quan trọng nhất nha bạn.
Câu hỏi:
Theo em biết, ở VN những Tester đa phần là lập trình không tốt nên mới theo ngành Kiểm thử, nhưng em thấy trong yêu cầu Tester phải viết được các tool automation thì làm sao có thể viết được?
Trả lời:
Đó là quan điểm hoàn toàn không chính xác và hiện nay thực tế đã chứng minh đó là một hướng đi khác, một lựa chọn khác của các bạn trong lĩnh vực CNTT. Yêu cầu của Tester không phải là phải viết được Tool Automation, mà yêu cầu của Tester là làm sao phải kiếm được Bug, giúp phần mềm chất lượng hơn, không làm mất uy tín - thương hiệu của nhà sản xuất. Nếu bạn là tester mà giỏi lập trình, bạn có thể đi theo hướng automation test và xây dựng framework cho test tự động. Nếu bạn không giỏi lập trình bạn vẫn có thể test bằng tay và sử dụng những framework để hỗ trợ việc test. Test tự động hay test bằng tay vẫn có sự phát triển riêng.
Câu hỏi:
Khi test 1 phần mềm, làm sao để biết rằng test thế nào là đủ?
Trả lời:
Có nhiều dạng lỗi phần mềm (giao diện, chức năng, hiệu suất,…) nên trước khi bắt đầu 1 dự án Test, cả KH và công ty sẽ thống nhất mục tiêu của dự án Test là gì để tập trung vào các phần cần Test. Do đó, để biết test như thế nào là đủ phải xác định kết quả dự án Test mà KH mong muốn là gì mà có định lượng phù hợp.
Câu hỏi:
Yêu cầu cần và đủ của 1 Tester là gì?
Trả lời:
Yêu cầu cần và đủ của Tester là kiến thức, kinh nghiệm và lòng đam mê với nghề. Đây là hành trang để bạn có thể gia nhập đội ngũ Tester chuyên nghiệp.
Câu hỏi:
Developer và Tester không thể tồn tại nếu thiếu nhau, nhưng khi làm việc thì thường xuyên xảy xa xung đột. Anh/chị có thể cho em biết có quy trình hoặc phương pháp nào giúp Developer và Tester kết hợp làm việc hoàn hảo và tránh xung đột trong công việc?
Trả lời:
Thông thường, cách làm việc ổn thỏa nhất giữa Tester và Developer là "nói có sách - mách có chứng", tôn trọng nhau và vì lợi ích chung của dự án, của công ty, ai cũng bớt đi một chút cái "tôi" thì sẽ có tiếng nói chung em nha.
Nguồn tham khảo
http://blog.itviec.com/2015/04/tester-thanh-cong/
http://diendan.congdongcviet.com/archive/index.php/t-9952.html
All rights reserved