Viết về technical nhiều rồi, nay mình viết 1 vài suy nghĩ của mình về UI Auto test và selenium.
- UI Auto Test là yêu cầu phổ biến nhất của những tin tuyển dụng về Automation Testers. Có thể là web hoặc mobile app. Thường thì bạn chỉ cần biết 1 trong 2 vì khác nhau về kỹ thuật thôi còn phương pháp thì khá giống nhau.
- Selenium là 1 library để control browser từ code, đã được coi là tiêu chuẩn của W3C, rất nhiều UI Auto Framework thì đều sử dụng selenium (ở phía bên trong), tất nhiên là cũng có framework khác không sử dụng selenium như Cypress.
- Đừng nên nhầm lẫn Selenium là UI Auto Test vì Selenium chỉ là 1 library còn UI Auto Test nhiều hơn thế rất nhiều, nếu chỉ biết mỗi selenium thì không làm nổi UI Auto Test đâu. Học Selenium dễ, rất dễ và trong 1 thời gian ngắn (nếu bạn hiểu basic programming).
- Series selenium-basic
- Series selenium-advanced
- UI Auto Test thì đòi hỏi bạn phải có những gì? Đó là các kỹ năng xác định Why, What, When, Where, How to test. Ví dụ:
- Test case này nên test ở level nào? dùng UI Auto thì test case có đủ độ coverage, có tốn nhiều thời gian, công sức không? có trùng với test ở chỗ khác không?
- Test này nên run lúc nào, trong bộ regression hay bộ smoke, sanity test.
- Chrome và Firefox đã đủ hay chưa? Màn 1920 hay màn 1600 là ok? Còn máy Mac thì sao nhỉ?
- Nên parallel test với bao nhiêu Thread / Process đây? Làm thế nào để run nhiều test cùng lúc mà kết quả chính xác, ổn định.
- …
Đừng hỏi mình những câu hỏi trên vì nó hoàn toàn dựa vào từng tình huống, từng test case, không có câu trả lời cố định. Ý mình muốn nói là bạn hãy nghĩ xa hơn, thay vì chỉ nghĩ học Selenium là xong.
- Làm UI Auto có chán không?
- Vui khi bắt đầu, chán nản về sau. Vì action của test mình có thể theo dõi 1 cách trực quan nên nó khá thú vị khi bắt đầu, nhưng về sau test không ổn định, failed vì những lý do ngớ ngẩn, debug tốn thời gian, làm mình cảm thấy chán nản. Chưa kể đến việc thời gian run lâu cũng là 1 cực hình, vì mình phải chờ chạy xong mới có cái để báo cáo.
- Nên học Selenium Java hay Python?
- Bạn học ngôn ngữ nào cũng được, java thì support tốt hơn 1 tí vì cộng đồng đông đảo. Học Python thì nhanh hơn nếu bạn xuất phát từ con số 0.
Không thể tự học java vì lười, hãy đăng ký lớp java for tester!
- Như đã nói ở trên selenium thì đơn giản nhưng có thể viết được 1 cái project có tổ chức, rõ ràng, mạch lạc, dễ maintain thì bạn phải biết nhiều hơn thế. Ví dụ:
- Clean code, biết refactor những đoạn code rối, tránh lặp code.
- Good practices cho từng ngôn ngữ
- Các libs khác phục vụ cho từng mục đích
- Build tool + plugin nếu bạn sử dụng Compiled language như Java, C#
- IDE để viết code
- Thực tế các công ty làm UI Auto như thế nào?
- Thường họ để cho Auto Testers tự chọn cách làm, nếu trình độ của người testers đó kém thì code sẽ kém, trình độ ngon thì code sẽ ngon.
- Testers có 2 cách chính để thực hiện build project đó:
- Tự viết Framework, sử dụng tùm lum các thứ với nhau.
- Sử dụng Framework có sẵn như serenity BDD, robot framework.
- Làm cách nào cũng được nhưng bài toán chung thì vẫn phải có lời giải:
- Test run nhanh, support chạy song song nhiều test cases cùng lúc
- Đổi môi trường test dễ dàng
- Mở rộng số test case, không phải sửa lại code ở quá nhiều nơi, cũng như phá cấu trúc của framework
- Dễ dàng kết hợp được với các CI tools
- Report phải dễ nhìn, dễ tổng hợp kết quả. Log đầy đủ thông tin khi failed hoặc error xảy ra.
Đây là những suy nghĩ của mình về UI Automation và Selenium, nó có thể hơi lung tung, ý tứ không được sắp xếp, nhưng thôi, mình cũng không có nhiều thời gian. Hi vọng bạn đọc và tự rút ra được kinh nghiệm cho bản thân.
“nếu chỉ biết mỗi selenium thì không làm nổi UI Auto Test đâu”. Mình chưa hiểu ý của câu này lắm. Ad có thể nói rõ hơn chỗ này được k ạ!
Cả bài viết này để giải thích cho câu đó rồi bạn. Nếu vẫn chưa rõ thì bạn đọc lại bài viết và đọc chậm thôi.