Lộ trình phát triển của nghề kiểm thử phần mềm (Software Testing)


Chuyện gì sẽ xảy ra nếu một phần mềm được các developer xây dựng nên và ngay lập tức bàn giao cho người sử dụng mà không qua kiểm thử? Vậy kiểm thử phần mềm là làm gì?

Kiểm thử phần mềm là gì?

Kiểm thử phần mềm (Software testing) là quy trình kiểm tra một hệ thống hay chương trình xem nó có đáp ứng được theo những yêu cầu đặt ra ban đầu của khách hàng hay của sản phẩm hay không. Quá trình kiểm thử sẽ xác định được các lỗi hay các khiếm khuyết của phần mềm. Như vậy, việc kiểm thử là quy trình không thể thiếu trong phát triển phần mềm để tạo ra sản phẩm chất lượng, không có lỗi.

Cũng như việc phát triển phần mềm, việc kiểm thử cũng có các quy trình chuẩn hóa nhằm đảm bảo các mục tiêu chất lượng được đáp ứng. Vòng đời kiểm thử (Software Testing Life Cycle – STLD) là quy trình được áp dụng phổ biến ngày nay.

Software Testing Lif Cycle

Software Testing Lif Cycle

5 cấp độ trong sự nghiệp của Software Tester

Khi bắt đầu công việc kiểm thử phần mềm (Software Testing), có một câu hỏi luôn xuất hiện trong tâm trí của mọi người: nghề nghiệp của tôi sẽ như thế nào trong tương lai? Một số con đường sự nghiệp hoặc vị trí công việc sẽ dẫn đến những ngõ cụt – không có cơ hội phát triển hoặc thăng tiến.

Những lộ trình sự nghiệp khác lại có thể tạo động lực học tập liên tục và tiến bộ không ngừng.

Đây là những gì đang diễn ra trong lĩnh vực Software Testing: theo thời gian và trải nghiệm thực tiễn, mọi người sẽ trở thành những Testers giỏi hơn, khao khát những vị trí tốt hơn với mức lương cao hơn, nhiều trách nhiệm hơn, nhiệm vụ khó khăn hơn và phải trau dồi nhiều hơn. Họ luôn tiếp tục học hỏi và nhờ đó mà năng lực vượt trội hơn những gì mà công việc yêu cầu.

Trong thực tế, không có sẵn một lộ trình nhất định nào dành cho một Tester để phát triển sự nghiệp, vì người ta có thể đi theo nhiều con đường khác nhau, chuyên sâu và phát triển trong một lĩnh vực testing nhất định hoặc chuyển sang các lĩnh vực khác. Do đó, cần định rõ mình đang muốn đi trên con đường nào để có thể biết được nên rèn luyện kỹ năng nào, hay thực hiện dự án nào, v.v.

Sơ đồ sau đây sẽ phác thảo 5 cấp độ mà bạn có thể đạt được trong sự nghiệp làm software testing. 

  • Cấp độ 1: Test Executor, mức độ junior, hiểu và thực thi các test case và báo cáo các bugs nếu có.
  • Cấp độ 2: Test Designer, là những người vận dụng các kỹ thuật về test design, phân tích chuyên sâu và quản lý testing metrics. Cho những ai chưa nắm rõ, testing metrics là phương thức đo lường định lượng, giúp đánh giá được tiến độ, chất lượng của việc kiểm thử. 
  • Cấp độ 3: Senior Tester, là những chuyên gia về kỹ thuật testing, nắm rõ các yêu cầu kiểm thử phần mềm cho các doanh nghiệp có các ứng dụng phức tạp như tài chính, sức khỏe, thương mại điện tử…
  • Cấp độ 4: Technical Tester, là những chuyên gia về Kiểm thử tự động (test automation), Kiểm thử hiệu suất (performance testing), hoặc Kiểm tra Bảo Mật (Security Testing)…
  • Cấp độ 5: Test Manager, là những người tổ chức và điều phối các nhóm kiểm thử (test team): quản lý metrics, lập kế hoạch chiến lược và đưa ra dự đoán.

Các công việc các tester có thể tham gia hoặc để phát triển nghề nghiệp

Dưới đây lĩnh vực hay công việc, vị trí mà Tester có thể trải qua hoặc tham gia để phát triển sự nghiệp của mình . Tuy nhiên, hãy luôn nhớ là mỗi người tự có hành trình độc đáo cho riêng mình và không phải ai cũng trải qua những công việc như vậy. 

Hành trình khởi đầu

Một người không có nhiều kinh nghiệm sẽ bắt đầu sự nghiệp Kiểm thử phần mềm với vai trò là một Tester sơ cấp (junior tester) và làm việc với tư cách là một thực tập sinh hoặc người học việc. Thông thường, một junior tester thường có dưới 2 năm kinh nghiệm. Các dự án rất đa dạng và được phân công theo nhóm và bao gồm các nhiệm vụ sau:

  1. Thực hiện kiểm tra phần mềm
  2. Báo cáo lỗi (bugs) hoặc khiếm khuyết (Defects) của phần mềm.
  3. Thiết kế các test cases đơn giản
  4. Thỉnh thoảng trợ giúp về các hoạt động đảm bảo chất lượng khác

Học hỏi tích lũy kinh nghiệm

Sau khi bắt đầu làm kiểm thử một thời gian, Tester có thể tích lũy nhiều kiến thức và kinh nghiệm thực tiễn về các công cụ và bài test khác nhau. Tester sẽ bắt đầu hiểu được cá lỗi đặc trưng của ứng dụng, hiểu nhiều hơn về cách thức xây dựng phần mềm. Họ cũng phát triển kỹ năng giao tiếp tốt hơn. 

Từ thời điểm này, Tester có thể chuyển sang cấp độ tiếp theo, đó là Tester bậc trung (semi-senior tester/ mid-level tester). Một tester ở cấp độ mid-level thường có 2-4 năm kinh nghiệm trong Testing. Các nhiệm vụ của họ thường là:

  1. Thực hiện kiểm tra lỗi phần mềm.
  2. Báo cáo lỗi bugs hoặc defects.
  3. Xây dựng các test cases hoàn chỉnh.
  4. Tham gia nhiều hơn vào các hoạt động đảm bảo chất lượng khác.

Sau giai đoạn này, semi-senior tester trở thành một Tester cao cấp (Senior Tester). Thông thường, một senior tester có 3-10 năm kinh nghiệm về testing và có các kiến thức chuyên sâu về kiểm tra để có thể kiểm thử các ứng dụng phức tạp của một số ngành công nghiệp như tài chính, y tế, công nghệ, v.v.

Tham gia Tư vấn

Những người có kinh nghiệm trong lĩnh vực software Testing có thể thử sức với các dịch vụ chuyên biệt như tư vấn. Đây là nơi các chuyên gia tư vấn sẽ tham gia với kiến ​​thức và kinh nghiệm của mình. 

Bạn giúp xác định các vấn đề và đề xuất phương pháp cải tiến cho các nhóm, đồng thời hướng dẫn các nhóm cách sử dụng các công cụ hoặc cách ứng dụng quy trình và phương pháp.

Trưởng nhóm kiểm tra (Test Leader)/ Test Manager

Khi đã có nhiều kinh nghiệm, tester có thể nắm giữ vai trò quản lý. Những người này chịu trách nhiệm tổ chức công việc cần được thực hiện và phân công nhiệm vụ cụ thể cho các Tester.

Tương ứng với số năm kinh nghiệm mà Người Quản Lý testing có thể được phân nhóm thành “junior test mamagers” hoặc “senior test managers”. Quy mô của các đội mà họ quản lý tương quan với mức kinh nghiệm mà họ có. 

Trong một số businesses, họ phải quản lý các thử nghiệm trên nhiều ứng dụng. Ở các trường hợp khác, họ chỉ cần chuyên tâm vào kiểm tra một ứng dụng. Kỹ năng giao tiếp, lãnh đạo và kỹ năng tổ chức là những điều thiết yếu để thành công ở vị trí này.

Nâng cấp nghề nghiệp với Test Automator/ Technical Tester

Có một số Tester tìm hiểu về lập trình (hoặc lập trình viên tìm hiểu về Testing) có thể phụ trách các công việc mang tính kỹ thuật chuyên sâu về Testing.

Những tester này có chuyên môn cao nhất và có khả năng thực hiện các test cases mang tính kỹ thuật cao. Những người có thể giúp tự động hóa các bài test tương tự lặp lại thường được gọi là Automators. 

Đồng thời, các testors chuyên sâu về kỹ thuật có thể tập trung vào vận hành và bảo mật. Những loại testing này dựa trên kiến ​​thức chuyên sâu về hệ điều hành, cơ sở dữ liệu, máy chủ, v.v.

Có giới hạn nào cho các vị trí testing?

Một số câu hỏi thường gặp là:

  • Điều gì sẽ xảy ra nếu tôi muốn thiết kế tests và thực hiện chúng nhưng lại không muốn trở thành người quản lý hoặc đi sâu vào kỹ thuật testing?
  • Liệu các giai đoạn phát triển có cố định hay không?
  • Sau khi đạt được những vị trí này thì còn có vị trí nào tiếp theo nữa không? Liệu có mức giới hạn nào về khả năng cao nhất hay không?

Khi bạn tiếp tục trong sự nghiệp testing của mình, bạn sẽ bắt đầu khám phá những lĩnh vực bạn không thích và sẽ có thiện cảm hơn đối với những công việc vừa sức với mình. 

Ví dụ, khi làm việc trong một nhóm và nhận thấy được sức mạnh tập thể, bạn có thể hứng thú với việc học cách tổ chức các dự án và phân chia công việc, hay trở thành người quản lý về testing.

Một ví dụ khác là bạn nhận thấy rằng một số bài test có thể được tự động hóa để tiết kiệm thời gian và loại bỏ sự lặp lại không cần thiết. Sau đó, bạn có thể cảm thấy mình muốn học về tự động hóa và đạt được kỹ năng mà trước đây bạn không có.

Tất nhiên, sau tất cả những lộ trình mà chúng ta đã đề cập trước đó, vẫn còn rất nhiều những con đường khác nữa. Bạn có thể trở nên chuyên sâu với các loại tests đa dạng cùng các công cụ khác nhau, trở thành chuyên gia testing trong lĩnh vực chuyên biệt nào đó. Bạn cũng có thể có hứng thú về việc nghiên cứu trong lĩnh vực Testing hoặc truyền cảm hứng cho những người khác trở thành testers thông qua các bài phát biểu tại hội nghị, tham dự các cuộc họp và phổ biến kiến thức thông qua blog,  phương tiện truyền thông xã hội, hoặc các khóa học và hội thảo.

Khi bạn bắt đầu công việc Testing, con đường sự nghiệp vẫn có thể thay đổi và không chỉ có một cách để phát triển. Một số người sẽ tiến bộ nhanh hơn qua các giai đoạn so với những người khác. Để tiến lên, bạn cần đảm bảo liên tục cải thiện các kỹ năng, phát triển nhân cách và khám phá tiềm năng của bản thân.

Các kỹ năng cần thiết để trở thành một Software tester

Để trở thành một Software Tester thì cần phải có các kỹ năng công nghệ (Technical Skills) và kỹ năng phi công nghệ (Non-technical Skills)

Kỹ năng phi công nghệ

Các kỹ năng sau đây rất cần thiết để trở thành một software tester giỏi:

  • Kỹ năng phân tích: Một software tester giỏi nên 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ỏ hơn để hiểu rõ hơn và tạo ra các test cases. 
  • Kỹ năng giao tiếp: Một software tester giỏi phải có kỹ năng giao tiếp bằng lời nói và bằng văn bản tốt. Các tài liệu liên quan công việc như test cases, kế hoạch test, chiến lược test, báo cáo lỗi, v.v. được tạo bởi những testers như vậy thường dễ đọc và dễ hiểu. Việc liên hệ với các developer (trong trường hợp có lỗi hoặc bất kỳ vấn đề nào khác) đòi hỏi một sự cẩn trọng và khéo léo.
  • Kỹ năng tổ chức và quản lý thời gian: Testing đôi khi có thể là một công việc khá thử thách, đặc biệt là trong quá trình phát hành code. Một software tester phải quản lý hiệu quả khối lượng công việc, có năng suất cao, thể hiện khả năng quản lý thời gian tối ưu và kỹ năng tổ chức.
  • Thái độ tích cực: Để trở thành một software tester giỏi, bạn phải có thái độ tích cực. Một thái độ ‘kiểm tra lỗi”, định hướng chi tiết, sẵn sàng tìm hiểu và đề xuất cải tiến quy trình. Trong ngành công nghiệp phần mềm, công nghệ phát triển với tốc độ vượt trội và một software tester giỏi nên nâng cấp các kỹ năng kỹ thuật của mình cho phù hợp với sự thay đổi của công nghệ. Thái độ của bạn phải phản ánh một mức độ độc lập nhất định về nhiệm vụ được giao và hoàn thành nó mà không cần sự giám sát trực tiếp.
  • Đam mê: Để có thể tỏa sáng trong bất kỳ ngành nghề hay công việc nào, người ta cần có một niềm đam mê nhất định với nó. Một software tester phải có niềm đam mê với lĩnh vực của mình. Nhưng làm thế nào để bạn xác định xem bạn có đam mê về software testing hay không nếu bạn chưa từng thử trước đây? Rất đơn giản. Bạn hãy thử công việc software testing một thời gian và nếu công việc này không thú vị, hãy chuyển sang một nghề khác khiến bạn quan tâm hơn.

Kỹ năng công nghệ

  • Kiến thức cơ bản về Cơ sở dữ liệu / SQL: Hệ thống phần mềm chứa một lượng lớn dữ liệu. Dữ liệu này được lưu trữ trong các loại cơ sở dữ liệu khác nhau như Oracle, MySQL, v.v. Vì vậy, sẽ có tình huống khi dữ liệu này cần được xác thực. Trong trường hợp đó, các truy vấn SQL đơn giản hay phức tạp có thể được sử dụng để kiểm tra xem dữ liệu phù hợp có được lưu trữ trong cơ sở dữ liệu phụ trợ hay không.
  • Kiến thức cơ bản về các lệnh Linux: Hầu hết các ứng dụng phần mềm như Dịch vụ web (Web-Services), Cơ sở dữ liệu (Databases), Máy chủ ứng dụng (Application Servers) được triển khai trên các máy Linux. Vì vậy, điều quan trọng đối với tester là phải có kiến ​​thức về các lệnh Linux.
  • Kiến thức và kinh nghiệm thực tiễn về Công cụ quản lý kiểm tra (Test Management Tool): Test Management là một khía cạnh quan trọng trong kiểm tra phần mềm. Nếu không có kỹ thuật về Test Management thích hợp, quy trình kiểm thử phần mềm sẽ thất bại. Test Management không có gì ngoài việc quản lý các tạo phẩm liên quan đến testing. Ví dụ: Một công cụ như Testlink có thể được sử dụng để theo dõi tất cả các test cases được viết bởi team của bạn.
  • Các công cụ khác có sẵn cũng có thể được sử dụng cho Test Management. Vì vậy, điều quan trọng là phải có kiến ​​thức và kinh nghiệm làm việc với các tool tương tự bởi vì chúng được sử dụng trong hầu hết các công ty.
  • Kiến thức và kinh nghiệm thực tiễn về bất kỳ công cụ Defect Tracking –  Theo dõi các lỗi phần mềm (Defect Tracking) và hiểu rõ Vòng đời của lỗi (Defect life cycle) là cực kỳ quan trọng. Việc quản lý các khiếm khuyết về phần mềm cần sự hợp lý và có hệ thống. Toàn bộ các thành viên trong dự án cần phải biết về lỗi bao gồm cả các quản lý, developer và tester. Một số công cụ được sử dụng để  quản lý defects bao gồm QC , Bugzilla , Jira , v.v.
  • Kiến thức và kinh nghiệm thực tiễn về công cụ Tự động hóa (Automation tool): Nếu thấy mình là một “Automation Tester” sau một vài năm làm công việc Testing một cách thủ công, thì bạn phải thành thạo một công cụ và có kiến ​​thức chuyên sâu về các Automation tool.
  • Lưu ý: Chỉ có kiến ​​thức lý thuyết về Automation tool là không đủ để vượt qua cuộc phỏng vấn. bạn phải có kinh nghiệm thực tiễn, vì vậy hãy thực hành với tool mà bạn chọn để đạt được độ thành thạo nhất định. Kiến thức về bất kỳ ngôn ngữ script nào như VBScript, JavaScript , C # luôn hữu ích cho các tester nếu bạn đang có hứng thú với công việc automation. Một số công ty cũng sử dụng Shell / Perl scripting, và có rất nhiều yêu cầu cho các tester có kiến ​​thức tương tự. Tất cả đều phụ thuộc vào công ty và công cụ được sử dụng bởi công ty đó.

Mức lương của Tester

Mức lương trung bình của các Tester tại Việt Nam vào khoảng 700 USD theo khảo sát gần đây của Topdev. Tuy nhiên, nếu bạn có kinh nghiệm với automation testing thì lương có thể lên đến 2,500 USD hoặc hơn.

Theo itguru.vn

Japan IT Works



Việc làm theo chuyên ngành

Việc làm theo ngành

Việc làm theo tỉnh thành