"Kiểm thử phần mềm, ai chẳng làm được." Nhận định này khiến phần lớn Developer chưa tìm được việc phù hợp đều ứng tuyển làm Tester.

Đọc bài phỏng vấn của một Tester đầy kinh nghiệm -  anh Huỳnh Công Thành - Founder của AskTester.com để tìm hiểu về:

  • Có phải ai cũng có thể làm Tester
  • Thất bại anh từng trải qua trong công việc và bài học rút ra
  • Lời khuyên anh dành cho các bạn Tester trẻ muốn cải thiện bản thân ngay hôm nay

kiem-thu-phan-mem-2

Anh Huỳnh Công Thành có gần 10 năm kinh nghiệm trong ngành Software Testing và trải qua nhiều vai trò như Manual Tester, Automation Tester, Test Lead tại LogiGear, FPT Software.

Anh hiện đang làm Test Lead trong nhóm Mobile tại Datalogic Vietnam.

Ngoài công việc toàn thời gian, anh cũng dành thời giờ cho việc giúp đỡ phát triển cộng đồng kiểm thử, đặc biệt là trang web chuyên Hỏi - Đáp về Testing AskTester.com

Cơ duyên nào đã đưa anh đến với ngành Testing?

Sau khi tốt nghiệp trường NIIT chuyên ngành phần mềm năm 2006, anh làm việc tại LogiGear với vai trò Junior Tester.

Tại thời điểm đó kiến thức của anh về Testing chỉ là con số "0" tròn trĩnh. Nhưng được sự hỗ trợ, đào tạo và giúp đỡ của các anh chị Senior, anh dần quen công việc "bén duyên" với Software Testing từ đó.

Điểm cộng và điểm trừ của ngành Testing là gì?

Testing là một phần trong chu kỳ phát triển phần mềm. Anh nghĩ nó có điểm những điểm cộng như:

  1. Được tiếp cận cập nhật công nghệ kỹ thuật mới, "hi-tech".
  2. Làm việc đội nhóm, phát triển kỹ năng làm việc.
  3. Cảm giác tự hào khi sản phẩm ra thị trường không có bug, người dùng thích. Điều đó chứng tỏ mình đã đóng góp giá trị tạo nên sự thành công cho phần mềm.
  4. Testing cũng là một trong những ngành "hot" hiện nay. Cơ hội phát triển và chế độ đãi ngộ rất cạnh tranh.

Về điểm trừ thì giá trị đóng góp của Testing không rõ ràng so với phát triển phần mềm.

Ví dụ: sản phẩm đầu ra của Developer là dòng code, tính năng sản phẩm hay sản phẩm hoàn thiện. Còn sản phẩm của Tester là góp phần giúp sản phẩm hoàn thiện, nhờ vào việc tìm bug.

Do đó Testing thường bị so sánh và chưa được đánh giá đúng mực

Công việc và trách nhiệm thường ngày của một Tester là gì?

Công việc thường ngày của một Tester sẽ bao gồm:

  1. Nhận yêu cầu của khách hàng
  2. Thiết kế Test Case
  3. Tiến hành các Test Case
  4. Báo cáo lỗi, báo cáo kết quả Testing

Nếu sản phẩm có bản cập nhật mới thì tham gia thực thi Regression Test.

Nếu là Automation Tester thì công việc sẽ xoay quanh:

  1. Nhận yêu cầu
  2. Viết script cho trường hợp kiểm thử
  3. Thực thi script
  4. Debug lỗi
  5. Báo cáo lỗi
  6. Báo cáo kết quả chạy Automation Test

Tuy nhiên, tuỳ vào dự án, sản phẩm, giai đoạn Testing, loại Testing mà công việc của từng Tester sẽ khác nhau.

Theo anh thì Tester khác Developer ở điểm nào?

Nhiều người vẫn thường nói "Developers make, Testers break".

Câu nói đó hoàn toàn không chính xác nhưng nó nói lên sự khác biệt cơ bản giữa Tester và Developer.

Developer viết code, xây dựng tính năng sản phẩm dựa theo yêu cầu đặc tả. Trong khi Tester đóng vai trò như người thanh tra, đánh giá và kiểm soát chất lượng của sản phẩm thông qua việc tìm lỗi.

Có điều gì mà mọi người thường hay hiểu lầm về "Tester"?

Theo anh, Testing là một công việc thú vị, mang lại nhiều giá trị và cũng ngày càng phổ biến nhưng nhiều người vẫn có nhiều ngộ nhận về nó, phổ biến nhất vẫn là "kiểm thử phần mềm, ai làm chẳng được".

Nhận định này khiến nhiều bạn trẻ cứ ứng tuyển vào ngành Testing mà không hề đắn đo rằng mình đã được đào tạo bài bản hay chưa. Hoặc phần lớn là Developer chưa tìm được việc phù hợp cũng ứng tuyển làm Tester.

Cũng vì ngộ nhận "Kiểm thử ai chẳng làm được" nên một số bạn ngoài nền tảng kiến thức kỹ thuật tốt lại có tố chất của một Teser giỏi nhưng không chọn làm Tester vì "làm Tester nghe không 'oách' bằng Developer" hay vì ngộ ngận là thu nhập của Tester không cao.

Thực tế từ anh và bạn bè anh cho thấy thu nhập của Tester hoàn toàn có thể cạnh tranh với Developer.

Lúc nãy anh có đề cập đến tố chất của một Tester giỏi, anh có thể giải thích chi tiết hơn?

Tố chất mà anh muốn nói ở đây là kỹ năng đặt câu hỏi, đặt vấn đề.

Testing không chỉ gói gọn trong việc xác nhận sản phẩm có vận hành đúng theo yêu cầu của khách hàng hay không, mà còn là đánh giá xem những yêu cầu đó có hợp lý hay chưa dưới góc nhìn người dùng.

Việc đặt câu hỏi tốt sẽ giúp gợi mở nhiều vấn đề quan trọng của sản phẩm. Từ đó giúp cung cấp thông tin đầy đủ cho chủ sản phẩm hoặc quản lý dự án, để đánh giá đúng về tình trạng sản phẩm.

Ví dụ, khi nhận yêu cầu Test một sản phẩm, đa số Tester chỉ dừng ở mức nhận yêu cầu, viết - chạy test case.

Nếu sản phẩm vận hành đúng theo yêu cầu đặc tả ban đầu thì cho Test Case "Passed".

Tuy nhiên, trong quá trình Test, anh luôn đặt cho mình những câu hỏi sau:

  • Tại sao tính năng được thiết kế như vậy? Nó giúp ích gì cho người dùng?
  • Sẽ như thế nào nếu người dùng làm [X] thay vì làm [Y] sau đó làm [Z]? .. v .. v ...

Sau đó, anh đã gợi ý cho Project Manager về thao tác [Y] để thêm vào sản phẩm, vì đó là hành vi mà người dùng có khả năng thực hiện. Khách hàng cũng đồng ý và sản phẩm cũng tốt hơn.

Ngoài ra, anh nghĩ sự tò mò, sáng tạo cũng đóng vai trò quan trọng trong con đường sự nghiệp của một Tester.

Vì tò mò giúp bạn luôn muốn tìm hiểu, khám phá thêm về sản phẩm. Còn sáng tạo giúp bạn nghĩ ra nhiều trường hợp kiểm thử thú vị mà các đặc tả, tài liệu hướng dẫn ban đầu chưa bao phủ hết.

Anh từng mắc phải sai lầm gì? Anh vượt qua như thế nào và anh học được gì từ đó?

Đa phần những sai lầm liên quan đến công việc hàng ngày không đáng quan tâm, vì đó là quá trình sai - sửa sai mà ai cũng phải trải qua.

Tuy nhiên có một sai lầm anh từng mắc phải và hy vọng các bạn không vấp phải. Đó là việc giới hạn khả năng hay kiến thức mình biết được, hay còn gọi là lười nâng cao kiến thức.

Có thời gian dài anh chỉ làm công việc được giao. Sáng đi chiều về và mục đích cao nhất là hoàn thành công việc được giao đúng thời hạn.

Anh thậm chí không quan tâm ngành Testing đang có những công nghệ nào mới, kỹ thuật nào mới, cộng đồng Testing trên thế giới ra sao… Cho đến khi tham gia một số cộng đồng, diễn đàn Testing và nhận ra rằng những gì mình biết còn quá hạn hẹp.

Bài học anh muốn nói ở đây là không ngừng học hỏi. Điều này nghe có vẻ sáo rỗng vì có thể bạn đã nghe quá nhiều nhưng thực tế thì nhiều bạn vẫn còn thờ ơ với việc này.

Bạn không tin? Hãy thử hỏi mình một vài câu hỏi sau:

  • Cuốn sách hay website nào về Testing mà bạn yêu thích hay đang theo dõi?
  • Chuyên mục nào trong sách/ website đó mà bạn thích nhất?
  • Lần cuối cùng bạn đọc sách hay một bài viết về Testing là khi nào?

Cá nhân anh, sau khi nhận ra mình có một lỗ hổng lớn so với thời đại, ngoài việc tham gia vào nhiều cộng đồng Tester, anh còn thường xuyên cập nhật kiến thức mới ở Developsense.com của Michael Bolton, Satisfice.com của James Bach, StickyMinds.com của TechWell. 

kiem-thu-phan-mem-1
Anh Thành cùng đồng nghiệp

Nếu một bạn muốn trở thành Tester thì theo anh, bạn đó nên học hỏi gì ngay hôm nay?

Tất nhiên là học về Testing. (Cười.)

Có nhiều sự lựa chọn như tham gia các khóa học online/offline, thi chứng chỉ, hay học hỏi từ bạn bè, cộng đồng, v.v…

Ở trên, anh đã chia sẻ một số blogger rồi nên giờ anh gợi ý các bạn một số khóa học online sau:

Tương lai phát triển cho con đường sự nghiệp Testing như thế nào vậy anh?

Testing hiện đang “hot” nên con đường phát triển gần như là không có giới hạn.

Về lý thuyết bạn có thể đi theo hướng: Tester → Test Lead → Test Manager → Test Director.

Điều quan trọng là bạn không nên tự giới hạn năng lực bản thân. Hãy cố gắng trau dồi, nâng cấp kỹ năng và sẵn sàng đón nhận khi thử thách, cơ hội đến.

Có điều gì thú vị về nghề Testing mà mãi đến gần đây anh mới nhận ra?

Càng gắn bó lâu với nghề test anh càng nhận thấy Testing thực ra cũng không hẳn chỉ là “break software”.

Trong những năm đầu mới làm test, anh thấy rất phấn khích, xen lẫn tự hào mỗi lần tìm được bug làm “crash” sản phẩm và gây “lao tâm khổ tứ” Developer. Anh gần như xem bug là kết quả cuối cùng của Tester cũng như đấu tranh quyết liệt để Developer có thể sửa lỗi của mình.

Tuy nhiên, càng làm lâu thì cảm giác đó không còn nữa. Đừng hiểu sai ý anh, không phải là anh không tự hào về thành quả công việc hay khuyến khích các bạn đừng tìm bug. Ý anh là việc một sản phẩm nhiều lỗi cũng không có gì là tốt cả.

Suy cho cùng, mục đích cuối cùng của Testing vẫn là việc hỗ trợ team Developer tìm lỗi, ngăn ngừa lỗi để cũng ra được sản phẩm đúng thời hạn và “đủ tốt”.

Làm nghề được 14 năm rồi, đã bao giờ anh có ý định chuyển nghề? Và điều gì đã giúp anh theo đuổi nghề Testing cho đến tận bây giờ?

Con số “14 năm” nghe có vẻ nhiều nhưng thực ra 14 năm cũng không có gì to tát. Nhiều sếp, đồng nghiệp của anh thậm chí có thâm niên 20-30-40 năm trong nghề. Họ vào nghề lúc… anh còn chưa ra đời. Vậy đấy, ở khía cạnh nào đó, anh chỉ như mới vào nghề.

Quay lại câu hỏi của em là anh có từng ý định chuyển nghề không. Nói không cũng không đúng vì nhiều lúc gặp khó khăn trong công việc hay có thời điểm anh cảm thấy như tới ngưỡng và không tìm thấy động lực, anh cũng có ý định bỏ nghề.

Những lúc đó, anh thường tìm thấy động lực ở “hóa đơn tiền điện, tiền nước”, “giấy báo học phí” của con được gửi về nhà hàng tháng (cười).

Đùa thôi… nhưng quan trọng là anh vẫn cảm thấy Testing phù hợp với mình và vẫn còn nhiều cơ hội phát triển trong nghề. Tương lai xa thì cũng không nói trước được điều gì.

Anh có trực tiếp tham gia vào quy trình tuyển chọn Tester không? Nếu có thì anh đánh giá dựa trên những tiêu chí nào?

Ở vị trí hiện tại, anh cũng tham gia trực tiếp phỏng vấn tuyển chọn Tester cho nhóm anh.

Có nhiều tiêu chí để tuyển chọn. Tuy nhiên, anh ưu tiên những tiêu chí sau:

  • Phù hợp văn hóa công ty, nhóm: Nghĩa là khi phỏng vấn, anh đánh giá xem ứng viên liệu có phù hợp với văn hóa của công ty và nhóm của mình hay không.
  • Kỹ năng chuyên môn: Yêu cầu kỹ năng cũng tùy thuộc vào level của Tester. Trong nhiều trường hợp, ứng viên không nhất thiết phải đáp ứng đầy đủ yêu cầu của vị trí. Quan trọng là bạn đó phải cho anh thấy khả năng, tiềm năng của một Tester trong tương lai. Còn chi tiết như thế nào thì gặp anh phỏng vấn sẽ rõ (cười).
  • Đa dạng: Anh ưu tiên những bạn có những kỹ năng kiến thức đặc biệt để có thể bổ sung và tạo sự đa dạng trong team. Mục đích là tăng cường sự hỗ trợ cũng như tính linh hoạt trong team.
  • Tiếng Anh: Có tiếng Anh tốt là điểm cộng lớn với anh.

3 lời khuyên anh dành cho các bạn Tester trẻ để họ có thể thực hành và cải thiện bản thân ngay hôm nay?

1) Không ngừng học hỏi, nâng cao kiến thức vì công nghệ thay đổi hàng ngày hàng giờ. Bạn có thể tham gia diễn đàn, hội thảo, meetup về Testing để trao dồi, rèn luyện kỹ năng.

2) Viết blog. Ngoài việc giúp bạn rèn luyện kỹ năng viết, trình bày (kỹ năng trình bày đóng vai trò quan trọng trong Testing), viết blog còn giúp bạn nâng cao kiến thức Testing vì khi viết bạn sẽ phải nghiên cứu cặn kẽ, thấu hiểu vấn đề sâu rộng, tổng hợp thông tin chi tiết.

Hơn hết, những kinh nghiệm, kiến thức bạn chia sẻ, không chỉ giúp bạn tự “ôn tập,” mà còn giúp ích cho những bạn khác.

Bạn không cần phải đợi đến khi trở thành “expert” để có thể viết blog và chia sẻ. Bạn cũng không cần năng khiếu về viết lách để có thể viết blog.

Hãy tạo ngay một blog và bắt đầu viết. Nếu không có công nghệ mới gì để viết, hãy viết về kinh nghiệm bạn từng trải qua, hay thậm chí là một lỗi/ thất bại và bài học bạn rút ra.

Anh Phạm Huy Hoàng – chủ blog “Tôi đi code dạo” chia sẻ: Hãy viết blog vì mình trước đã và phải viết cái mình thích hoặc mình thấy hay.

3) Cải thiện khả năng tiếng Anh.

Tiếng Anh đóng vai trò quan trọng trong công việc (đặc biệt là các dự án outsource). Tuy nhiên, có một thực tế là nhiều bạn luôn phàn nàn, hay “bị” phàn nàn về kỹ năng tiếng Anh khi làm việc nhưng lại lười không chịu học tiếng Anh, hay bỏ ngang giữa chừng vì không thấy hiệu quả như mong muốn.

Học tiếng Anh giống một cuộc đua marathon đường dài. Không phải chạy cự ly ngắn 100m như Usain Bolt. Bạn cần phải kiên nhẫn và nhất quán mới mong đạt được hiệu quả như mong muốn.

Anh đánh giá thế nào về mức độ phát triển của nghề Testing trong những năm qua và dự đoán cho thời gian sắp tới?

Quan điểm của anh thì nghề Testing vẫn còn đang rất “hot” về lương cũng như cơ hội việc làm, thậm chí anh nghĩ nó sẽ vẫn “hot” ít nhất trong 5-10 năm tới.

Lí do đơn giản là khi nào người ta còn làm phần mềm thì Testing vẫn là hoạt động không thể thiếu. Chưa kể, Việt Nam cũng đang nhận được nhiều thiện cảm của giới phần mềm về nguồn nhân lực Developer, Tester.

Tuy nhiên, cơ hội thì nó cũng đi kèm với thách thức. Một vài thách thức anh có thể nhìn thấy và đang diễn ra:

1) Yêu cầu về “Testing” rộng hơn

“Testing” hiện đã không còn mang ý nghĩa đơn thuần là “manual testing” nghĩa là viết test case, chạy test case thủ công đơn thuần.

Testing ngày nay gần như bao hàm ý nghĩa là Tester sẽ làm những gì cần thiết để test sản phẩm của mình. Đó có thể là chạy test case thủ công, đó cũng có thể là phải viết automation để tự động hóa công việc test thủ công của mình. Đó cũng có thể là hỗ trợ developer phân tích debug lỗi hay đóng góp ý tưởng để cải thiện tính năng sản phẩm v.v

2) Công nghệ thay đổi nhanh

Để có thể bắt kịp xu hướng và test một cách hiệu quả, Tester phải thường xuyên cập nhật kiến thức về công nghệ thông tin, kiến thức, kỹ thuật test mới.

3) Tiếng Anh

Mặc dù tiếng Anh đã được nhìn nhận và cải thiện nhiều nhưng nhìn chung thì tiếng Anh vẫn được xem là một trong những thách thức muôn thuở của anh em kỹ sư chúng ta. Thậm chí, trong nhiều trường hợp, tiếng Anh lại có khi mang tiếng nói quyết định đối với khả năng đi xa trong nghề của bạn.

Do đó, nếu bạn thấy tiếng Anh mình chưa đủ tốt, thì làm gì thì làm, học tiếng Anh vẫn nên là ưu tiên của bạn.

Chúc các bạn tìm thấy thành công với nghề test.

À, anh vẫn thỉnh thoảng viết blog chia sẻ kiến thức về test ở AskTester.com, các bạn có hứng thú ghé ngang để cùng trao đổi về test nhé.

Nguồn: itviec