Selenium là gì? Một số kinh nghiệm làm việc với Selenium

Bài viết được sự cho phép của tác giả Kiên Nguyễn

1. Selenium là thuốc? Ồ không!

Selenium ở đây tất nhiên không phải là “Selenium là khoáng chất vi lượng quan trọng trong nhiều hoạt động như xử lý não bộ, miễn dịch và sinh sản

selenium
Không phải là thuốc nha mấy thím. Đang nhắc tới automation test tools

Selenium được nhắc tới trong bài viết là AUTOMATIONS TEST TOOLS (kiểm thử phần mềm hoặc website tự động).

Định nghĩa nhàm chán nhưng cũng cần phải biết là:

Selenium is an umbrella project for a range of tools and libraries that enable and support the automation of web browsers.

Selenium là dự án “ô dù” với mục đích tạo ra các công cụ (tools) và thư viện (libraries) tự động hóa các trình duyệt web.

Ngoài ra, một từ khóa quan trọng đễ dễ nhớ hơn là:

It provides extensions to emulate user interaction with browsers

Selenium cung cấp các tiện ích mở rộng mô phỏng sự tương tác của người dùng với browser.

Định nghĩa loằng ngoằng là vậy, nhưng với Selenium, ta có thể mô phỏng hầu hết những thao tác người dùng với trình duyệt (nhấp – click, cuộn – scroll, đóng tab, click check box, …)

selenium

2. Ưu điểm của Selenium

Hiện tại, danh sách Top 10 Automation Testing Tools đã bao gồm nhiều cái tên (mabl, randorex). Tuy nhiên, Selenium vẫn là một cái gì đó khó thay thế, vẫn nổi bật và có nhiều giá trị.

Giới QC trong giang hồ hẳn ai cũng biết về Automation test tools này. Vang danh khắp thiên hạ.

2.1 Hỗ trợ nhiều ngôn ngữ lập trình

Bản thân mình, trong quá trình làm việc cho công ty cũng được tiếp xúc với selenium một vài lần. Cụ thể là với Webdriver JavaJavascript và Python.

selenium
Hiện tại hỗ trợ tới 6 ngôn ngữ lập trình: Java, Python, C#, Ruby, JavaScript và Kotlin. So far, so good.
Nguồn/ Source: selenium.dev

2.2 Miễn phí – free

Khỏi phải nói, ưu điểm này thật sự là đáng tiền nhất của Selenium, so với các đối thủ khác như Ranorex hoặc MablSelenium hoàn toàn miễn phí. Chính vì vậy, nó thường được các doanh nghiệp IT Nhật Bản tin dùng.

Tất nhiên với Java, ta có ngay slogan quen thuộc: “Viết một lần – Chạy khắp nơi“, làm gì chả thích. “Run once time, run everywhere”.

2.3 Dễ hiểu, dễ sử dụng

2.4 Hỗ trợ đa trình duyệt với Webdriver

Selenium hỗ trợ test tự động trên nhiều browser. Hỗ trợ tốt khi khách hàng cần test trên nhiều phiên bản, nhiều loại browser khác nhau (thường thì chắc chắn sẽ yêu cầu như vậy).

Đối với môt số khách hàng từ Nhật hay cơ quan chính phủ, yêu cần website hoạt động tốt trên IE 9,10,11,. Việc viết test case một lần và chạy trên nhiều trình duyệt là vô cùng tiện lợi và nhanh chóng.

selenium
Hỗ trợ Internet Explorer, tin vui cho mấy anh em phát triển phần mềm chính phủ

2.5 Dễ dàng take evidence khi chạy

Thực tế khi làm việc, khách hàng lúc nào cũng yêu cầu evidence khi thực hiện chạy testcase.

Khi một website đã hoàn thiện để chạy automation test, nếu có lỗi xảy ra, ngoài ghi log hoặc báo file, yêu cầu cần thiết nhất luôn là chụp evidence (bằng chứng) ngay lúc đó.

Selenium hỗ trợ rất tốt cho những trường hợp muốn chụp lại màn hình. Kể cả trong trường hợp page ở website là scroll. Mình đã từng sử dụng Selenium để chụp những

3. Một số nhược điểm

Mặc dù có nhiều ưu điểm không phải automation test tools nào cũng có. Selenium vẫn tồn tại một số yếu điểm dưới đây:

3.1 Muốn chạy ổn, hãy cố handle timeout

Một nhược điểm cố hữu có các Automation test tools (không ngoại trừ Selenium) là timeout. Trường hợp sử dụng để kiểm thử cho websitetốc độ mạng có thể khác nhau giữa những lần chạy testcase. Chắc chắn là không giống nhau giữa các lần chạy.

Việc chạy automation test vào lúc mạng chậmtraffic đang stuck có thể làm fail một số testcase. Trong những trường hợp như vậy, cần xử lí tốt các trường hợp timeout.

Thực tế, trong quá trình làm việc, mình thấy các Exception Timeout thường do:

Mình đang test ở page 1 -> nhấn button A -> di chuyển tới page 2 -> tìm kiếm button B. Các hàm tìm kiếm có thể là (getElementById(), getElementByTag(), …).

Nuột nà là thế, nhưng do mạng chậm, nên lúc tới page 2 vẫn không tìm được button B -> văng Exception.

Trường hợp muốn handle exception, có thể đọc thêm bài viết này ở KieBlog.

3.2 Nếu không kiểm soát tốt, hết ram, chết đứng

Thông thường, mỗi testcase sẽ khởi chạy với một new instance của browser ta muốn chạy. Tuy nhiên, nếu có vấn đề, hoặc ta không thể handle các trường hợp cần đóng browser. Rất có thể có các trường hợp sau:

  • Không thể tìm đúng đối tượng trên browser do instance của browser cũ chưa tắt (close)
  • Quá tải ram do nhiều trình duyệt mở (nhất là chrome)
selenium
Không khó để tìm những câu hỏi rằng không thể đóng được browser đã mở.

Có rất nhiều nguyên nhân dẫn tới trường hợp này. Nếu trước đó đã có exception không được catch or throws, sẽ không thể close instance browser đã mở.

4. Tổng kết

Đọc tới đây, chắc hẳn các thím cũng có đã có cái nhìn “sơ sơ” về Selenium. Để hiểu sâu hoặc bắt đầu thực tế sử dụng, hãy chú ý xem các bài viết tutorials ở phần tham khảo.

Cảm ơn đã đọc bài của mình và hãy cố gắng sử dụng Selenium một lần cho biết nhé, nó bá đạo lắm đấy!.