Từ manual sang automation test
Bài đăng này đã không được cập nhật trong 5 năm
Từ manual sang automation test
Ngày nay, thời buổi mà công nghệ thông tin phát triển vô cùng mạnh mẽ, kéo theo đó là sự phát triển của rất nhiều các ngành nghề liên quan. Trong đó có sự phát triển bùng nổ của rất nhiều các ứng dụng web, vì thế mà các yêu cầu về nhân lực trong mảng này cũng đòi hỏi các ứng viên cần phải có kỹ năng tốt hơn nữa về lập trình, technical, các kỹ năng về automation, và nhiều thứ khác nữa…
Để đáp ứng nhu cầu của thị trường, cũng như sự cần thiết về việc nâng cao và phát triển sâu, rộng hơn về các kỹ năng chuyên môn, nhiều manual tester đã có những cân nhắc trong việc bước sang mảng automation nhiều thách thức cũng nhiều cơ hội hơn.
Có thể nói rằng việc chuyển từ manual sang automation là một bước đi ‘khôn ngoan’ trước nhu cầu tuyển dụng ngày càng nhiều của các công ty cho vị trí software QA, kèm theo những yêu cầu cũng ngày càng cao về các kỹ năng liên quan đến technical dành cho các ứng viên.
Đứng trước sự chuyển dịch này, có thể đối với một số người thích ổn định hơn thì họ sẽ cảm thấy có gì đó không thoải mái lắm. Tuy nhiên, ngược lại cũng có những người lạc quan hơn, họ thấy đây là một cơ hội tốt để phát triển thêm các kĩ năng cho bản thân cũng như nhiều cơ hội nghề nghiệp hơn dành cho mình, và mình tất nhiên là thuộc nhóm lạc quan rồi. Hihi 🙂
Nhu cầu của thị trường khá rộng lớn, bạn sẽ có thêm nhiều cơ hội phát triển hơn từ thăng tiến đến tiền đồ nếu bạn có những kỹ năng phù hợp với những yêu cầu cần thiết. Vì thế, bài viết này dành cho những ai đang có ý định chuyển từ manual tester sang automation tester, hoặc là ai đó muốn tìm hiểu thêm về automation thôi, thì cũng có thể tham khảo các bước dưới đây để biết được một cách hệ thống hơn những gì cần chuẩn bị khi bước sang con đường ngang này nhé!
1. Xác định nhu cầu của thị trường
Trước khi bắt đầu xác định cần chuẩn bị những gì, ta sẽ thử lướt qua xem thị trường tuyển dụng cho vị trí automation này có gì đã, bởi vì khi đã xác định được người tuyển dụng người ta cần gì rồi thì mình sẽ có chiến lược phát triển kỹ năng phù hợp với các vị trí ấy.
Để xác định được những yếu tố đó, cách thực tế và cũng hiệu quả nhất đó là tìm kiếm trên các trang web có đăng tin tuyển dụng như ITviec, Vietnamworks, LinkIn, Indeed, Dice, Monster, CareerBuilder … cho các vị trí với keyword như là:
Test Automation Engineer Automation Developer Automation Testing/Automation Tester QA Automation Engineer Software Development Engineer in Test (SDET) Từ đây, bạn có thể thấy được ngay là các nhà tuyển dụng đang tìm kiếm ứng viên với những yêu cầu như thế nào, ví dụ:
Những kỹ năng và công nghệ nào đang được các nhà tuyển dụng tìm kiếm nhiều? Những yêu cầu cụ thể cho những kỹ năng đó là gì? Các nhà tuyển dụng có yêu cầu số năm kinh nghiệm làm việc cho vị trí đó hay không? Nếu có thì là bao nhiêu? Mảng nào trong đó có xu hướng cần nhiều nguồn lực hơn so với những mảng khác? Mức lương mong đợi cho vị trí này là bao nhiêu? Việc sử dụng các công cụ và công nghệ đó phần lớn là mã nguồn mở hay các phần mềm thương mại? … Bạn có thể có nhiều thông tin hơn khi tham khảo các mục tuyển dụng của các công ty cho vị trí này bằng cách khai thác ở các link mình đã để trên kia nhé.
Nói chung là cơ hội nghề nghiệp thì rất nhiều, quan trọng bạn phải là người có năng lực đáp ứng được yêu cầu của các nhà tuyển dụng. Vì thế, sau khi xác định được nhu cầu thị trường, bạn sẽ lựa chọn cho mình một hướng đi (có thể không chọn mà tiếp tục với manual cũng không sao nhé ), để từ đó phát triển mở rộng và nâng cao kỹ năng, có thể bằng cách là tham gia vào các dự án, ứng dụng trong thực tế. Nó sẽ giúp bạn có nền tảng vững chắc và từ đấy bứt phá tới thành công.
2. Lựa chọn một ngôn ngữ lập trình
Trên thực tế hiện nay không ít các manual tester cảm thấy ‘ngại’ khi học lập trình, chỉ cần nghĩ đến việc tìm hiểu xem ứng dụng phía dưới của mình chạy như thế nào hay việc xử lý các vấn đề ra sao, rồi project áp dụng các công nghệ nào thôi là đã khiến cho các tester cảm thấy hoa mắt chóng mặt rồi còn đâu mà lập trình nữa. Đây có thể là một lý do điển hình trong rất nhiều các lý do khác khiến cho các manual tester cảm thấy ‘nhác’ khi xác định đi theo hướng lập trình.
Nhưng để làm một automation tester chính hiệu thì bạn không thể không biết gì về lập trình được. Bởi lập trình chính là nền móng của automation. Và nếu lựa chọn của bạn là automation thì bạn phải vượt qua được cái ngại đó để bắt đầu.
Bạn yên tâm là tất nhiên mình sẽ đi từ những cái cơ bản nhất, dễ nhất trở đi, có rất nhiều trang web hỗ trợ bạn bồi dưỡng các kiến thức này, bạn chỉ cần kiên trì và chăm chỉ thực hành thì lập trình cũng chỉ là chuyện nhỏ thôi. 😀
OK, khi đã có tinh thần vượt qua nỗi sợ hãi đầu tiên là lập trình. Câu hỏi tiếp theo, chúng ta sẽ học ngôn ngữ lập trình nào đây?
Từ việc đánh giá nhu cầu của thị trường, ta có thể xác định được đâu là ngôn ngữ lập trình được săn đón nhiều nhất, có thể là Java, C#, Ruby, Javascript hay Python… Và trong số rất nhiều các ngôn ngữ lập trình, bạn chọn ngôn ngữ nào cũng đều được.
Bạn có thể lựa chọn một ngôn ngữ nào đó mà bạn cảm thấy nó không khó với bạn hoặc chỉ đơn giản là bạn cảm thấy thích nhất, quan trong ở đây là bạn lựa chọn nó và cảm thấy tự tin và thoải mái khi làm việc với lựa chọn đó của bạn.
Python được coi là một trong những lựa chọn khá ổn dành cho những bạn mới bắt đầu, bởi đây là một ngôn ngữ lập trình cấp cao, code rất dễ đọc và dễ hiểu và cũng dễ học nữa. Khi đã nắm chắc cái này thì việc bạn chuyển sang ngôn ngữ khác không phải là vấn đề quá khó khăn . Bạn có thể tham khảo một số trang web có các khóa học bài học free dành cho người mới như: Udemy, Codecademy, Guru99, …
Dưới đây là một số nội dung lớn cần lưu ý khi bạn bắt đầu với bất kì ngôn ngữ lập trình nào mà bạn đã chọn, nó sẽ là những tiền đề hữu ích giúp bạn làm chủ và hiểu sâu hơn về automation:
Lập trình hướng đối tượng: classes, objects, instances, inheritance, attribute,… Các modules, thư viện cơ bản của ngôn ngữ lập trình bạn đã chọn Cấu trúc dữ liệu: Dictionaries, lists, tuples,… Kiểu dữ liệu: Strings, Characters, Integers, floating point, Boolean, NoneType… Biến Xử lý Errors/Exception Các toán tử và thứ tự ưu tiên xử lý Các phép toán so sánh và toán tử logic Procedures/Functions/Methods Control Flow – xử lý các vòng lặp : If-statements, for-loops, while-loop Đọc và ghi dữ liệu từ các file bên ngoài như từ file excel, file text, XML… Hãy nhớ rằng, lập trình chính là nền tảng cơ bản cần phải có của automation, học lập trình được thì bạn sẽ học automation được!
3. Lựa chọn công cụ Automation
Vâng, nhắc lại một lần nữa, một tư duy lập trình và một kỹ năng lập trình tốt, sẽ là nền tảng và yếu tố quan trọng đối với các hoạt động trong khi làm automation.
Sau khi đã lựa chọn và làm quen với một ngôn ngữ lập trình nào đó rồi, bước tiếp theo bạn cần làm đó là học cách sử dụng một công cụ automation.
Rất nhiều các công ty ngày nay đều hướng tới sử dụng các công cụ mã nguồn mở vì yếu tố đầu tiên cần nói đến là nó tiết kiệm chi phí.
Một open source cho automation tương đối phổ biến hiện nay là Selenium webdriver. Cơ bản về Selenium này mình cũng đã nói trong những bài đầu tiên rồi đó. Bạn là người mới bắt đầu thì đây có lẽ là lựa chọn khá ổn.
Một vài nội dung lớn mà bạn cần quan tâm trong quá trình tìm hiểu để giúp cho code automation của bạn đảm bảo tính tin cậy, khả năng bảo trì nâng cấp và quan trọng là tính hiệu quả của nó, như sau:
Design Patterns: Page object model Các cách khác nhau để thực hiện tìm locator của các phần tử web (CSS Selector, XPATH, ID, Name, etc) Switching Windows/iFrames Refactoring Unit Testing Framework Testing in the Cloud/Parallel Testing Data Driven Test Thực hiện kiểm thử trên nhiều trình duyệt khác nhau (Firefox, Internet Explorer, Chrome, Safari, Opera, etc) Implicit and Explicit Waits Action Chains Từ việc đánh giá nhu cầu thị trường, đến việc lựa chọn một ngôn ngữ lập trình rồi sau đó là lựa chọn công cụ automation, bước tiếp theo của bạn là….
4. Practice, Practice, Practice
Không phải ngẫu nhiên mà từ practice được lặp lại những ba lần thế này, và mình cũng không muốn dịch sang tiếng Việt vì sợ sẽ làm mất đi cái ý nghĩa mà người viết người ta muốn truyền đạt. Dù thế nào thì đây cũng là yếu tố vô cùng, mình nhắc lại là vô cùng quan trọng trong việc tiếp thu và sau đó là nâng cao các kỹ năng của bản thân.
Điều này không chỉ là đối với việc học lập trình, mà còn đối với tất cả các lĩnh vực khác nữa, nếu bạn muốn thành thạo, muốn phát triển nâng cao kỹ năng trong một việc gì đó, thì bạn không thể ngồi ngắm nó hay suy nghĩ về nó là có thể khá lên được, chỉ có bắt tay vào làm trực tiếp, bạn mới hiểu được nó, cũng như là tìm ra được cách để giải quyết vấn đề phát sinh trong quá trình ấy.
Việc học một cái gì đó mới mẻ luôn là một thử thách đối với tất cả mọi người, tuy nhiên từ đây ta cũng có thể có được những cơ hội mới nhiều hấp dẫn. Thử thách nhưng không phải là quá khó để vượt qua, nếu bạn đầu tư thời gian cũng như là công sức một cách nghiêm túc thì tin mình đi, nó không phải là vấn đề! 😀
Ban đầu, bạn có thể bắt đầu với những đoạn chương trình nhỏ, vừa sức, có thể kết hợp kiểu vừa học vừa chơi chẳng hạn. Sau này khi đã quen hơn với những cú pháp thì bạn có thể nâng dần độ khó của các bài tập, rồi dần dần tích hợp với các test script tự động đơn giản. Nhiều khi trông những script của mình chạy cũng thấy hứng thú hơn rất nhiều đấy. Từ những cái đó, bạn có thể là tìm hiểu kỹ hơn về cách hoạt động, những vấn đề liên quan khác. Hiểu rồi thì làm thật nhiều, tin mình lần nữa đi, trình độ của bạn sẽ tăng lên từng ngày!!!
Cùng là một đoạn đường đó, nếu bạn không đi thì sẽ không bao giờ tới đích, nhưng nếu bạn cần mẫn bước đi từng ngày rồi cuối cùng bạn cũng sẽ đến thôi, à thêm nữa là nếu bạn đi nhanh thì bạn sẽ không mất nhiều thời gian, và ngược lại đi chậm thì sẽ lâu hơn tí, nhưng mà không sao đâu, vì dù thế nào đó cũng sẽ luôn là một trải nghiệm tuyệt vời trong cuộc đời bạn. Vì vậy, hãy tự tin, kiên trì, và đừng từ bỏ nhé!
Lời cảm ơn cho những ai đã cố gắng đọc hết bài này, vì dịch và truyền ý hơi ngổn ngang mặc dù mình đã cố gắng chỉnh sửa ạ! 😀
Đã có phần tiếp theo rồi nhé, các bạn đọc tiếp ở đây nha!
Nguồn tham khảo:
https://simpleprogrammer.com/2017/07/28/start-automation-testing-part-1/
http://testdemy.com/how-to-get-started-in-software-automation-testing-part-i/
All rights reserved