Công nghệ thông tin trong những năm gần đây liên tục phát triển. Thị trường nhân lực của ngành này cũng vì thế mà sôi động và nhộn nhịp hơn cả. Nhắc tới công nghệ thông tin là người ta nghĩ đầu tiên đến lập trình viên (Developer), quản trị, an ninh mạng, thiết kế phần mềm, quản lý hệ thống, kĩ sư cầu nối… Đó là những vị trí quen thuộc, phổ biến. Tuy nhiên có một vị trí tiềm năng mà ít người để ý đó là trở thành một tester. Để hiểu rõ hơn về mảng này, ở bài viết hôm nay, mình xin chia sẻ cụ thể Tester là gì, những điều cần thiết để trở thành một Tester.
Đúng như tên gọi của nó, công việc chính của một Tester đó là kiểm tra chất lượng phần mềm, cho phần mềm chạy thử trước để khảo sát. Tức là một tester sẽ kiểm tra chất lượng phần mềm thông qua thực hiện công việc so sánh điều kiện thực tế của phần mềm so với điều kiện yêu cầu như bugs, defects, errors… Mình hay gọi đây là dân chuyên đi vạch lá tìm sâu. Và phải có một đội ngũ chuyên trách như vậy thì chất lượng các sản phẩm phần mềm mới đảm bảo hơn được khi đến tay khách hàng có thể hạn chế mức rủi ro một cách thấp nhất. Một phần mềm có thể chạy nếu không cần qua kiểm duyệt. Nhưng xác xuất sai sót chắc chắc sẽ cao. Và trường hợp phần mềm có vấn đề mà đem đi ứng dụng thì chẳng khác nào bán một cái xe bị lỗi kỹ thuật cả.
Tester có nhiều mảng như QA, QC, đặc biệt là Manual Tester và Automation Tester… Manual Tester là người kiểm thử phần mềm một cách thủ công. Mặc dù không yêu cầu cao về kiến thức lập trình tuy nhiên muốn làm một Manual Tester đòi hỏi bạn phải rành test manual, có đam mê và tư duy tìm lỗi. Trong khi đó, Automation Tester lại là người kiểm thử dựa trên các công cụ hỗ trợ tự động. Kết quả kiểm thử của một Automation Tester đa phần sẽ đáng tin cậy hơn, tuy nhiên để đảm nhận vị trí này đòi hỏi bạn phải nắm vững các kiến thức lập trình.
Cơ hội việc làm: Bởi vì nghề này ở Việt Nam vẫn còn khá nhiều “định kiến”, việc đào tạo chuyên sâu cũng chưa phổ biến, hầu hết các tester đều xuất thân từ developer, làm trái ngành… cho nên vẫn tồn tại hiện tượng khan hiếm nhân lực, đặc biệt là đội ngũ nhân lực có tay nghề. Đây là một lợi thế cho những bạn có ý định theo đuổi nghề này một cách chuyên nghiệp. Mặc dù là một nghề tiềm năng và dễ dàng hơn những công việc cùng khối ngành, tuy nhiên, không phải ai cũng có thể trở thành một Tester chuyên nghiệp, có tâm và có tầm. Bạn cần phải xác định rõ ràng và kĩ lưỡng hướng đi cho mình, bên cạnh đó không ngừng nỗ lực học tập, trau dồi kiến thức, kinh nghiệm. Bạn phải nắm vững được cơ chế hoạt động của các phần mềm vậy thì mới bắt bệnh và bốc thuốc được. Vậy thì những kỹ năng bạn cần có đó là gì. Dưới đây sẽ là một số tip mà mình nghĩ sẽ hữu ích.
Muốn trở thành một Tester không khó, quan trọng là bạn có đủ nỗ lực trau dồi hay không thôi. Khi nhận bất cứ một nhiệm vụ, công việc testing nào, yếu tố quyết định đó là bạn biết mình nên và sẽ làm gì.
Mặt này thì là quan trọng nhất rồi. Anh không có kiến thức thì cho dù anh có đam mê, thiện chí đế đâu tôi cũng không thể tin tưởng giao nhiệm vụ cho anh được. Cụ thể, ngoài một số yêu cầu cơ bản đối với Tester như kiến thức nền tảng căn bản về máy tính, tin học văn phòng, sử dụng internet, cách cài đặt phần mềm thì đòi hỏi tiên quyết đầu tiên là cần phải biết đọc, phân tích phần mềm mới có thể kiểm thử, phát hiện lỗi sai nếu có. Bạn cũng nên tìm hiểu và biết về các kiến thức lập trình, cụ thể ở các mảng như SQL, HTML hay CSS. Không cần quá chuyên sâu như dân lập trình nhưng ít nhất một Tester cũng phải biết cái mình đang kiểm thử nội dung nó như thế nào. Điều này khá quan trọng bởi vì công việc thường ngày của Tester đa phần sẽ là viết code để kiểm tra phần mềm. Bất kỳ trong một công việc gì cũng thế, bạn càng trang bị cho mình nhiều kiến thức thì bạn càng có lợi thế và cơ hội cao.
Thứ hai đó là có những kiến thức tổng quan về testing (nắm rõ các khái niệm, thuật ngữ chuyên ngành, nắm được quy trình kiểm thử), có khả năng thiết kế test case hiệu quả. Quy trình kiểm thử phần mềm cơ bản có bước như sau:
(1) Test planning and control (lập kế hoạch và kiểm soát phần kiểm thử)
(2) Test analysis and design (phân tích và thiết kế)
(3) Test implementation and execution (thực thi và chạy test)
(4) Evaluating exit criteria and reporting (đánh giá và báo cáo)
(5) Test closure activities (kết thúc hoạt động kiểm thử)
Còn một lưu ý nữa khi testing đó là khả năng Description bug (mô tả lỗi). Khi làm việc cùng developer và khách hàng thì bạn nên cẩn thận quá trình này vì nó là bước diễn đạt ý tưởng của chính mình. Thông thường sẽ có bốn bước Description bug như sau: Summary (phần tóm tắt, sơ lược bug, đây giống như phần title (tiêu đề)), Bug Steps (các bước viết bug), Actual result (miêu tả thực trạng của bug), Expected Result ( Kết luận của Tester sau quá trình thử nghiệm và báo cáo, đưa ra các giải pháp của mình).
Phần cuối mình sẽ cung cấp tổng quan một số kiến thức bổ trợ cho hai hướng testing cụ thể Manual Tester và Automation Tester như sau:
Manual Tester: Create a Test Plan (cách tạo một kế hoạch kiểm thử cụ thể), Design Test case (thiết kế test case), Test Design Techniques (Kỹ thuật thiết kế test case), Test reporting, Daily status reports (viết báo cáo), Defect management (tìm kiếm, phân tích, loại bỏ và quản lý các sai sót), Mobile application testing (chạy thử trên ứng dụng mobile), Windows, Website testing & Tools support, Risk based testing process and implementation: Đánh giá rủi ro khi kiểm thử …
Automation Tester: ngôn ngữ lập trình, Automation Tool/Framework cần thiết như: Ranorex, TestComplete, Selenium, Appium, Jmeter…
Về kỹ năng: có hai kỹ năng mà theo mình là quan trọng nhất đó là kỹ năng làm việc nhóm và giao tiếp. Kỹ năng đầu tiên sẽ giúp bạn dễ dàng kết nối với các thành viên khác, đặc biệt là developer. Công việc của một nhà kiểm thử có thể hiểu là cầu nối giữa nhà phát triển phần mềm và người sử dụng phần mềm. Developer thì hoàn thiện phần mềm, còn khách hàng thì an tâm hơn về sản phẩm. Kỹ năng thứ hai thì đặc biệt hơn: Tester là người giao tiếp, trao đổi với nhiều bên như quản lý, developer, khách hàng và nếu không giỏi giao tiếp thì rất khó truyền đạt cho người khác hiểu ý của bạn.
Về phẩm chất: Đó là đam mê, kiên trì, lì đòn và cầu tiến. Bạn phải thích công việc mình làm thì mới có đủ nhiệt huyết để theo đuổi nó. Nếu không chỉ cần gặp một vài khó khăn là tự dưng bạn sẽ thấy hoang mang và chán liền. Kiên trì và lì đòn? Đúng vậy, làm bất cứ việc gì, đặc biệt là trong mảng công nghệ, phải luyện nhiều thì mới nâng cao tay nghề, có nhiều kinh nghiệm. Đa số những anh chị em làm testing mà tôi quen đều khá “lì lợm”. Họ có thể bỏ ra nhiều thời gian hơn yêu cầu để kiểm thử phần mềm một cách cẩn thận, ưng ý nhất. Họ giao tiếp, tương tác tốt thật đấy, nhưng khi vào guồng công việc thì cực kỳ nghiêm túc và tập trung. Cuối cùng là cầu tiến. Hoạt động trong mảng công nghệ mà bạn cứ khư khư ôm những tàn dư “vang bóng một thời” thì sao tiếp cận cái mới, làm sao bắt kịp xu hướng tiến bộ được? Một là mỗi ngày một phát triển hai là sớm muộn bạn cũng sẽ tự đá mình, tự đào thải bản thân ra khỏi ngành thôi.
Một Tester chuyên nghiệp thì cần rất nhiều yếu tố. Năng lực làm việc và phẩm chất sẽ tạo nên thương hiệu riêng cho mỗi tester.
Xét cho cùng sứ mệnh của một Tester đó là hỗ trợ cả nhóm phát triển phần mềm một cách hoàn thiện nhất, đem đến trải nghiệm tuyệt vời nhất cho khách hàng, cho người sử dụng. Trong hoàn cảnh ai ai cũng chạy đua để đạt được vị trí và tạo thương hiệu riêng cho mình thì bạn không thể nghiễm nhiên dửng dưng được. Bạn phải hiểu mình đang làm gì, mình cần có gì và không ngừng hoàn thiện, nâng cao trình độ, kỹ năng mới tiến xa được. Đó là tất cả là những kinh nghiệm xương máu, là những lời khuyên mà mình dành cho các bạn. Hi vọng những chia sẻ trên sẽ có ích đối với tất cả các bạn.