Trong quá trình học, tìm hiểu và làm về Automation Test, mình đã gặp nhiều vấn đề nên mình viết ra đây để đưa ra 1 vài gợi ý về việc học gì và cách học như thế nào để có thể khắc phục những vấn đề ấy.
Nội dung bài viết
I. Những vấn đề có thể sẽ gặp phải
- Ngộ nhận Automation Test là Automation Test
Đừng confused, hãy đọc tiếp. =))))
Đây là chủ đề được tranh luận và được thấy khắp mọi nơi, đặc biệt là trên linkedin nơi có nhiều “lão làng” về tester trên thế giới hay thảo luận và chia sẻ thông tin. Vậy thì có gì khác biệt mà phải tranh luận giữa 2 cái từ ngữ giống nhau 100% kia?
Đa số mọi người vẫn đồng ý với Michael Boton và James Bach về việc gọi “Automation Test” là “Automation Check” vì theo họ, testing là 1 quá trình có rất nhiều khâu như learning about the system, performing tests, revealing problems, feeding back… Automation Test mà mọi người đang nói và làm hiện tại chỉ là dùng tool để execute tests, không hơn, không kém. Họ cũng chỉ trích việc dùng từ “manual test”, nhưng mà đấy là 1 câu chuyện khác. Chốt lại, chúng ta vẫn nói với nhau “Automation Test” để đỡ phải tranh cãi với người khác như PM, Dev, BA … nhưng chúng ta cần nhớ Automation Test thực chất là Automation Check.
- Ngộ nhận Automation Test là Selenium?
Rất nhiều bạn mới, kể cả mình khi bắt đầu tìm hiểu về Automation Test, vì không có bài giới thiệu đầy đủ nên ko có cái overview của Automation Test nói chung. Do đó, bị luẩn quẩn vào những bài giới thiệu của những người cũng không đủ kinh nghiệm và thế là Bùm, hiểu sai bét.
Overview của Automation Test gồm nhiều thứ như test type, test trategy, test tools, test design patterns và 1 phần quan trọng là xác định what to test. Cái technique xác định what to test này mình sẽ viết vào 1 bài khác.
Selenium chỉ là 1 test tool được sử dụng cho 1 loại test. Hết
- Bị sếp ép phải viết 1 cái POC (proof of concept) để demo cho team khi còn chưa hiểu về lập trình
Đây là thực tế, mình đã gặp không phải 1 mà nhiều trường hợp đã bị như vậy. Khổ thân, lúc mới đầu học selenium, ai cũng muốn được thực tập và làm nhiều để tăng skill, nhưng bị sếp dí cái task to uỵch vào mặt mà không biết phải làm thế nào. Thế là ngồi máy tính cả ngày để google, đọc các bài viết để chắp vá sao cho phục vụ được cái demo. Đoạn nào mà bị lỗi, thì ôm code đi chạy vạy khắp nơi hỏi người này người nọ. Sad but true.
Cái này cũng đúng cho trường hợp các bạn sinh viên thực tập, chọn đồ án tốt nghiệp có liên quan đến các tool test, đặc biệt là Selenium Webdriver.
II. Cách khắc phục
Cái problem thứ 3 là cái chúng ta sẽ mất rất nhiều thời gian để học và thực hành trước khi có thể giải quyết triệt để. Mình không giống như những tester khác, khuyên bạn học về tool, thành thạo các sử dụng tool mà mình khuyên bạn hãy học lập trình và học kỹ cái ngôn ngữ lập trình mà bạn sử dụng.
Gợi ý 1: Ép bản thân bằng cách set deadline và 1 phần thưởng / hình phạt nào đó.
Ngày trước, mình cố học selenium bằng java theo cách follow các tutorial ở trên mạng, rồi hì hục tự viết lại mà không cần nhìn hướng dẫn, ăn ngay lỗi NullPointerException. Lỗi phổ biến đến mức, mình search google ra cả mấy triệu kết quả, nhưng mà chả tìm được cái issue nào gần giống cái của mình để mà xem cách fix. Loay hoay nửa ngày, cũng chả dám hỏi dev vì sợ bị cười. T__T (khổ tâm vãi, không biết có bạn nào giống mình ko). Thôi đành xem lại tutorial và thấy mình bị miss mất step Khởi tạo Object. Xem đi xem lại, đọc lại nhiều lần, cũng chả hiểu vì sao cần khởi tạo Object, tôi chẳng phải đã viết Class rồi sao, đấy không phải Object ah? mà Object là cái gì thế, sao phải khởi tạo. Mình chấp nhận nó như 1 dạng học thuộc lòng rồi tiếp tục move on sang bài hướng dẫn khác.
Học kiểu này, sau 1 thời gian thì mình biết được cách sử dụng cơ bản của selenium nhưng thực tế thì mình lo lắng lắm vì mình không có khả năng control được code, muốn tùy biến hoặc sử dụng cho trường hợp khác thì không biết. Mình quyết định quay lại học Java basic, mình học ở trung tâm, học ở trên udemy, youtube, đọc cả sách thì vẫn thấy rất khó nuốt nhiều phần, có vẻ như mình không hợp với những cách đấy. Rồi mình quyết định là đăng ký thi chứng chỉ Java OCA và mình chỉ có 4 tháng để ôn luyện. Áp lực tiền bạc (150$) và danh dự (khoe trên linkedin :v) khiến mình học rất chăm chỉ và cẩn thận. Tuy rằng kỳ thi của mình bị Covid-19 thổi bay, nhưng đến hiện tại, mình cảm thấy tự tin hơn về kiến thức của mình. Updated: mình đã hoàn thành kỳ thi từ 10/2020. Mình cũng đã kịp hoàn thành xong kỳ thi Java OCP vào tháng 10/2022.
Note: Để ôn thi OCA, mình chỉ đọc 1 quyển sách duy nhất OCA Java SE 8 Programmer I Certification Guide.
Ôn thi OCP, mình đọc cuốn: OCP Oracle Certified Professional Java SE 11 và OCP Oracle Certified Professional Java SE 11 Developer Practice Tests
Gợi ý 2: Nếu bạn qua được phần basic, tốc độ học sẽ nhanh hơn rất nhiều
Người xưa nói đúng “vạn sự khởi đầu nan”, việc học các concept mới thật sự là tốn thời gian, các bạn nên kiên trì 1 chút hoặc 2 chút và có thể là nhiều chút. =)))) Trong thời gian 2 năm vừa rồi, đã không biết bao nhiêu lần mình mở sách Effective Java, đọc 1 vài trang rồi đổi sách khác. Mỗi lần như vậy, mình chỉ có thể ngửa mặt lên trời cảm thán “công lực chưa đủ, không luyện nổi”. Nhưng rồi cũng có lúc mình đọc hiểu trọn vẹn 1 ý tưởng trong sách, quả thực là tuyệt vời, dần dần, mình đọc hiểu được nhiều hơn, lưu ý nhiều hơn không có nghĩa là mình hiểu được hết, vẫn rất nhiều thứ mình chẳng hiểu gì cả. T__T
Bây giờ, mình quay lại học về selenium, ôi mọi thứ trở nên đơn giản hơn nhiều thế, mình hiểu được vì sao họ lại viết code như vậy (thi thoảng thôi :v). Chính vì hiểu hơn mà mình càng muốn học và học được nhiều hơn. Vòng luẩn quẩn đó thực sự rất tuyệt.
Gợi ý 3: Học là 1 quá trình lâu dài, bạn cảm thấy muốn bỏ cuộc vì bạn không có đủ động lực thôi
Không ai học phát là hiểu luôn, trong film chắc có, và mình đã không còn có sự thông minh nữa thì tốt nhất là phải có 1 động lực thật lớn để có thể duy trì việc học hành. Về nguyên nhân không duy trì được việc học thì có nhiều lắm, ko có thời gian, không có dự án, chạy cơm từng bữa, học không đúng cách, thầy đểu… Suy cho cùng thì động lực bên trong bạn vẫn là cái quan trọng nhất, động lực ấy là gì thì phải tùy thuộc vào mỗi người.
Bạn nào mà đọc đến đây thì chắc là cũng phải thuộc dạng động lực ghê lắm =)))) vì mình lan man, lải nhải loanh quanh, mãi không thấy giới thiệu tools test giống như cái các bạn hi vọng khi đọc tiêu đề bài viết. “Học gì và học như thế nào để có thể làm Automation Test” – chắc bạn hi vọng 1 list các tools, sách học cũng như là các trang web hướng dẫn lắm. Cái đấy đã được viết ở trên các blog khác nhau rồi. Ví dụ như đây:
- Blog Sangbui: https://sangbui.com/hoc-gi-de-tro-thanh-mot-tester/
- Blog Vntesters: https://vntesters.com/hoc-gi-de-tro-thanh-automation-tester/
Học để có việc làm, học để có kiến thức, học vì yêu thích say mê, học để đi cùng thế giới, v.v. mỗi mục tiêu khác nhau sẽ dẫn đến một cách học khác nhau và từ đó dẫn đến những cuốn sách khác nhau.
Blog vnhackers https://vnhacker.blogspot.com/2017/04/thap-thanh-cong.html
Gợi ý 4: Đừng dừng lại nếu bạn “có vẻ” biết khá nhiều thứ rồi.
Đôi khi mình gặp 1 vài bạn viết được cái “framework” cho cái dự án của bạn là đã muốn dừng lại, không muốn học thêm cái gì nữa. Nhưng khi mình xem thử cái code mà bạn viết hoặc bạn cóp nhặt từ khóa học trên udemy và trên mạng, mình thấy “1 đống rác”.
Kiến thức là biển rộng, đừng bao giờ tự giới hạn bản thân bạn. Hãy luôn học tập, tìm hiểu về ngôn ngữ lập trình bạn dùng, áp dụng good practices từ expert vào trong code của bạn. Khi bạn viết 1 dòng code, hãy nghĩ xem có cách nào khác ko? và vì sao bạn dùng cách này?
Nếu bạn chọn java là ngôn ngữ thì hãy tự học theo nội dung 2 khóa học (basic & intermediate) của mình. Nội dung của 2 khóa chính là những thứ mình đã trải qua và thấy nó rất có ích. Tất nhiên, nếu bạn không muốn tự học, hãy đăng ký 2 khóa trên, kiến thức trong đó đáng giá từng đồng bạn bỏ ra.
III. Tổng kết
Cuối cùng, lời khuyên của mình dành cho các bạn muốn học và làm Automation Test là “luôn giữ 1 động lực lớn, học căn bản step-by-step, đừng nóng vội, càng muốn học advance càng lâu lên advance“. Vậy thôi, chúc bạn thành công.
Em cảm ơn anh nhiều, bài viết của anh giúp em nhận ra nhiều điều và quan trọng nhất là em cần phải bắt đầu lại từ những thứ cơ bản nhất nếu muốn tiếp tục..
Chúc anh nhiều sức khoẻ để tiếp tục với automation testing.
Hi vọng bài viết có ích cho em. 😀
Cảm ơn vì bài viết có ích!!!
Thanks!
b ơi, có lớp offline ko?
Có bạn ơi, cả onl lẫn off.
1. https://giangtester.com/lop-training-java-for-testers/
2. https://giangtester.com/lop-training-ve-api-automation-su-dung-rest-assured/
Chào anh, em đã tham gia 1 khóa manual test và cũng đã hiểu và có 1 số kiến thức lý thuyết về manual test. Tuy nhiên hiện tại em muốn học làm luôn về Automation Test có đc không anh? Vì em thấy manual và auto là 2 mảng khác nhau ạ và em muốn được tiếp cận code sớm hơn
Hi em,
Em có thể bắt đầu học Auto Test bất cứ lúc nào vì thực ra đó là học code. Tuy nhiên, nghỉ hẳn manual để tìm việc chỉ Auto thì ko khả thi. Hãy cứ tiếp tục làm việc bình thường và học thêm code rồi sau đó áp dụng Auto Test dần dần.
Có vẻ với trải nghiệm khá “đặc biệt” của anh trong hành trình chuyển ngành sang IT nên câu chuyện anh kể nó cũng cuốn một cách kỳ lạ! Cám ơn những bài viết như này của anh, nó mang đến nhiều động lực cho “những hoàn cảnh tương tự” lắm á. Cám ơn anh lần nữa 😀
Thanks for your kind words ^^
Anh cho em hỏi lộ trình học Auto cypress/playwright cho tester trái ngành thế nào ạ?
Nó chỉ là 1 javascript tool thôi mà, có phải 1 sự nghiệp đâu mà có lộ trình hả em. Nếu em chưa biết bắt đầu từ đâu thì học javascript thôi. Anh liệt kê 1 số thứ mà em cần học và dùng đến.
+ Javascript cơ bản: syntax, function, array, execution context, scope, prototype.
+ Async: callback, promises, async await
+ ES6, module, nodejs packages.
+ VScode editor, shortcut, plugin (eslint, prettier).
+ Typescript, tsc.