Bài viết nhằm mục đích chia sẻ, định hướng cho các bạn có ý định đi theo kiểm thử phần mềm (tester) sẽ có thêm hiểu biết và lựa chọn đúng con đường của mình. Để hiểu rõ hơn về “ Công việc của một Tester” chúng ta nên đi qua bài viết sau:
1. Những công việc của Tester?
Công việc chính của tester là thực hiện kiểm tra chức năng, hoạt động, tính ứng dụng của các sản phẩm trước khi tung ra thị trường và bán cho khách hàng. Tùy thuộc vào các dự án của công ty mà tester sẽ được phân công công việc như thế nào. Tester thường chia ra làm 2 hướng chính là Manual test và Automation test.
– Manual testing: Đây là công việc ban đầu được nhiều bạn lựa chọn, với lựa chọn này bạn không cần nhiều kiến thức về lập trình cũng như sẽ ít đụng vào code trong lúc làm, tuy nhiên cần phải nắm khá vừng về các định nghĩa, kỹ thuật test manual và có tư duy tìm lỗi tốt.
– Automation testing: Các bạn đang làm Developer mà mong muốn chuyển sang làm Tester, hoặc các bạn đã làm manual lâu năm muốn học hỏi thêm điều mới mẻ và nâng cao trình độ của mình. Automation test có thể nói là Dev trong Test, công việc chính là sẽ viết code để thực hiện việc kiểm tra một cách tự động và phần lớn thời gian sẽ làm việc với code như một developer. Người làm automation sẽ không cần thiết phải nắm sâu về các kiến thức test manual nhưng thay vào đó phải biết rõ về các automation tools & frameworks cũng như có thể làm việc được trên nhiều ngôn ngữ lập trình khác nhau như Java, C#, AutoIT, Python, C++ v.v, tùy theo yêu cầu dự án.
Automation không phải là nâng cao của manual vì đây là 2 hướng chính khác nhau của Tester, cả hai đều quan trọng cũng như có độ khó nhất định nếu phải học và tìm hiểu sâu. Người làm manual tốt không chắc có thể viết code được và người làm automation cũng chưa chắc sẽ có được tư duy, khả năng quan sát & kiến thức kiểm thử manual nên bạn cứ chọn một hướng phù hợp với khả năng và bắt đầu học, không nên tìm hiểu cùng lúc cả hai trong giai đoạn mới vào sẽ tốn rất nhiều thời gian.
2. Kiến thức mà một Tester cần có?
Làm tester cũng giống như tất cả các ngành khác trong lĩnh vực phần mềm là cần một nền tảng căn bản về máy tính. Kiến thức căn bản này bạn có thể học được trong chương trình cao đẳng, đại học. Hiện nay giáo trình đào tạo cao đẳng, đại học về công nghệ thông tin của các trường cũng khá đầy đủ, bao quát nhiều kiến thức như hệ điều hành, database, lập trình, mạng…. Những kiến thức này tuy có vẻ không ứng dụng được gì trong lúc học nhưng sẽ rất hữu ích cho việc học test và đi làm sau này, nếu bạn tập trung học trong giai đoạn sinh viên thì sau khi ra trường việc học thêm một khóa về kiểm thử là khá nhanh và đơn giản hơn nhiều.
Nếu bạn học ngành khác nhưng muốn chuyển sang làm test ( chưa có kiến thức căn bản) thì sẽ khó khăn và tốn nhiều thời gian hơn vì bạn phải học từ đầu, và sẽ bị sót kiến thức khi không được đào tạo bài bản. Nhưng nói vậy không có nghĩa là không thể, cũng có nhiều bạn đang làm test và khá thành công nhưng xuất phát từ các ngành khác như kế toán, marketing. Nếu bạn cũng đang học trái ngành mà có đam mê về Tester thì có 2 bước cần làm ngay từ bây giờ đó là dành thời gian học cách sử dụng tốt máy tính, tin học văn phòng, đọc thêm các sách căn bản về máy tính, lập trình. Giai đoạn này sẽ tốn khoảng 3 đến 6 tháng (hoặc hơn) do mức độ tập trung thời gian tìm hiểu của bạn, tuy hơi dài nhưng sẽ rất có giá trị. Tiếp theo bạn cần học thêm về các kiến thức chuyên ngành testing, giai đoạn này sẽ ngắn hơn, thường là khoảng 2 đến 3 tháng.
Tiếng Anh – Ngôn ngữ toàn cầu, cái này không liên quan test nhưng rất quan trọng. Có tiếng anh cơ hội để bạn làm việc ở các công ty nước ngoài là rất lớn. Ngoài ra các văn bản, sách báo tham khảo chủ yếu bằng tiếng Anh nên nếu bạn có kiến thức tốt thì nguồn tài liệu tham khảo để học hỏi sẽ rất là nhiều và chất lượng.
Tóm lại, có 3 kiến thức tester cần trang bị là Nền tảng về máy tính + Kiến thức Test căn bản + Tiếng Anh
3. Muốn thành tester nên học gì?
3.1. Kiến thức chung:
Kiến thức căn bản về máy tính, tin học văn phòng căn bản, cài đặt phần mềm, sử dụng internet.
Kiến thức về lập trình: Căn bản SQL, HTML, CSS. Đây là các ngôn ngữ theo tôi nên có. Bạn không cần học sâu để viết code như lập trình nhưng ít ra đọc phải hiểu và có thể chỉnh sửa đc code đơn giản.
Kiến thức tổng quan về test, bao gồm việc hiểu các định nghĩa cơ bản, các thuật ngữ, quy trình phát triển phần mềm, quy trình test. Bạn có thể học theo cuốn ISTQB Foundation hoặc tham khảo các mục gợi ý sau:
– What is Software Testing? – Tìm hiểu phần này để biết được testing là gì? các định nghĩa, khái niệm căn bản về kiểm thử phần mềm.
– Why is Software Testing Important? – Tại sao testing lại quan trọng và cần thiết? nếu không có tester thì sản phẩm sẽ ra sao?
– Software Development life cycle: Vòng đời phát triển phần mềm, vị trí của testing trong các giai đoạn phát triển sản phẩm.
– Software Test life cycle: Vòng đời của kiểm thử, thứ tự các công việc kiểm thử.
– Defect Life Cycle: Vòng đởi của lỗi và trạng thái qua các giai đoạn.
– Quality Assurance vs. Quality control, -Verification vs Validation: Phân biêt sự giống nhau và khác nhau giữa một số khái niệm.
– Software Testing Levels: Các mức độ trong kiểm thử, đi từ nhỏ nhất đến các mức độ cao nhất.
– Software Testing types: Các loại testing thư Functional testing, Non-functional testing, Structural testing, Change related testing.
3.2. Phần kiến thức riêng:
– Manual Test:
Đây là danh sách các kiến thức bạn nên tìm hiểu sâu thêm nếu sẽ làm test theo hướng manual.
Create a Test Plan: Các thành phần cần có trong một test plan cơ bản, cách viết test plan.
Design Test case: Cách tạo và viết một testcase thông dụng.
Test Design Techniques: Các kỹ thuật thiết kế testcase, giúp cho testcase hiệu quả và tối ưu hơn.
Test reporting, Daily status reports – cách viết report để báo cáo kết quả test của mình.
Defect management: Finding defects, Logging defects, Tracking and managing defects – Học cách report & quản lý một bug cũng như sử dụng tools tracking thông dụng như Jira, Mantis, Bugzilla, Application Lifecycle Management (ALM).
Mobile application testing (iOS, Android, Windows Phone): Cách cài đặt và test ứng dụng mobile, cách giả lập thiết bị điện thoại trên máy tính.
Windows, Website testing & Tools support: Cách test một ứng dụng desktop, một trang web và giả lập các trình duyệt khác nhau trên máy tính.
Risk based testing process and implementation: Đánh giá rủi ro trong kiểm thử, đây là phần nâng cao nhưng cũng nên tìm hiểu qua.
Coding: SQL, HTML, CSS.
Một số trang để tự học các kiến thức về manual testing căn bản, các trang này cung cấp đầy đủ các kiến thức bên trên cũng như mở rộng thêm khá nhiều kiến thức liên quan đến test khác:
Software Testing Tutorial – Guru99
Software Testing Tutorial – Tutorials Point
Software Testing Class
Software Testing Help
W3Schools (HTML, CSS)
SQL Tutorial – W3Schools
SQL Tutorial – TutorialsPoint
– Automation Test:
Học thêm về lập trình: Java, C#(.Net) là hai ngôn ngữ căn bản mà những người làm automation hay sử dụng, ngoài ra có các ngôn ngữ khác dùng để hỗ trợ như AutoIT, Python.
Học về các Automation Tool/Framework phổ biến như: Ranorex, Selenium, Appium, TestComplete.
Các Tools khác như: Jmeter, SoapUI.
Các địa chỉ học về Automation & Lập trình:
Selenium User Guide
Selenium Tutorials – Guru99
Selenium Training Tutorials – Software Testing Help
Ranorex User Guide
Jmeter
SoapUI
Java2S
Python tutorial – TutorialsPoint
C# Tutorial – TutorialsPoint
Nếu chưa biết nên bắt đầu từ đâu tôi gợi ý là bắt đầu vơi bộ tools Selenium (thường dùng Java) hoặc Ranorex (C# hoặc .Net nói chung). Với Selenium (miễn phí) bạn có thể làm được automation cho website còn Ranorex thì có thể làm được trên website, mobile application và desktop application nhưng có tốn phí khá cao.
4. Học test ở đâu thì tốt?
Có ba cách cơ bản để học test là tự học, học ở trung tâmvà học nhóm. Đa số các tester thuộc thế hệ 8x hay 9x đời đầu đều tự học mà làm vì giai đoạn đó testing chưa phát triển và cũng chưa có trung tâm chuyên đào tạo, các trường đại học cũng chưa đưa vào chương trình dạy. Nhưng tôi thấy đa số tester ở giai đoạn này thường xuất thân từ CNTT nên việc tự học và học thêm về test cũng khá nhanh. Để tự học test bạn có thể vào các nguồn tôi cung cấp ở phần bên trên, nó khá đầy đủ kiến thức căn bản.
Thứ hai là có thể đi học ở trung tâm hay một nhóm nào đó, các trung tâm thường có các khóa đào tạo ngắn hạn trong khoảng 3 tháng đỗ lại, một số trung tâm thì có chương trình dài hơn nhưng thường không quá 6 tháng. Tôi tự học và chưa trải nghiệm qua trung tâm nào nên cũng không rõ chất lượng ở những nơi đó, nhưng tôi cũng rất vui lòng nếu bạn gởi email cá nhân đến tôi để tham khảo về các trung tâm bạn đang định học, tôi sẽ thông qua một số mối quan hệ và bạn bè để hỏi giúp ban chất lượng của những nơi đó.
Ngoài ra còn một cách học khác là học nhóm, dạy kèm test, cách này tôi đang áp dụng ở một vài nhóm và thấy khá hiệu quả vì nó vừa linh động về thời gian và số lượng học viên thường giới hạn ít nên sẽ dễ tiếp thu hơn, thời gian học khoảng 1 đến 2 tháng. Nếu bạn quan tâm đến những khóa học này cũng có thể email đến tôi, khi nào bắt đầu khóa mới về testing căn bản tôi sẽ cho bạn biết.
5. Kết luận
Ở thời đại mà chất lượng sẽ quyết định sự tồn tại của sản phẩm phần mềm thì tầm quan trọng của Tester ngày càng được nâng cao và đóng vai trò không thể thiếu, các dự án cũng cần nhiều tester hơn nên trong tương lai nghề test sẽ phát triển mạnh mẽ, việc định hướng và trang bị kiến thức sớm từ bây giờ là rất cần thiết. Sau khi nắm được các kiến thức căn bản, bạn hãy tìm một công ty hay một dự án nào đó để bắt đầu thực hành luôn, giai đoạn này rất quan trọng vì chỉ thực hành thực tế bạn mới hình dung rõ ràng hơn các khái niệm đã đọc cũng như học thêm cái mới trong quá trình đó. Hy vọng bài này sẽ cung cấp những thông tin giúp bạn có thể bắt đầu vào việc học thuận tiện hơn và trang bị đầy đủ kiến thức cho bản thân mình.