Trong lĩnh vực công nghệ thông tin, khái niệm về Selenium đã không còn quá xa lạ. Để hiểu rõ về khái niệm và các thành phần của Selenium là gì? Cùng tham khảo bài viết chi tiết dưới đây.
Selenium là gì?
Selenium là một công cụ mạnh mẽ để kiểm soát trình duyệt web thông qua chương trình. Nó có chức năng cho tất cả các trình duyệt, hoạt động trên tất cả các hệ điều hành chính và các tệp lệnh của nó được viết bằng nhiều ngôn ngữ khác nhau như Python, Java, C#…. Selenimum có 4 thành phần chính là:
- Selenium IDE
- Selenium RC
- Selenium Webdriver
- Selenium GRID
Khi Selenium RC và WebDriver kết hợp với nhau tạo thành một framework duy nhất tiếp đó sẽ hợp thành Selenium hai và Selenium một bằng Selenium RC.
Để tận dụng hết sức mạnh tối đa của nó thì bạn có thể xây dựng một dự án để tiến hành automate các công việc mang tính nhàm chán lặp đi lặp lại các thao tác liên tục.
Các thành phần của Selenium
Selenium là một trong những định nghĩa chung nhất cho việc miêu tả chi tiết về một phần mềm chuyên dụng trong kiểm thử tự động. Mỗi một loại trong nó sẽ đáp ứng được những yêu cầu kiểm thử khác nhau cho từng mục đích sử dụng.
Selenium IDE
Là công cụ chính trong Selenium Suite. Nó là một môi trường phát triển tích hợp hoàn chỉnh (IDE) cho các kiểm thử Selenium. Selenium IDE được triển khai dưới dạng tiện ích trình duyệt, cho phép ghi lại, chỉnh sửa và gỡ lỗi các bài kiểm thử chức năng. Selenium IDE ban đầu được tạo ra bởi Shinya Kasatani và tặng cho dự án Selenium vào năm 2006. Trước đây nó ít được bảo trì và bắt đầu được duy trì tích cực vào năm 2018.
Các tập lệnh có thể được tự động ghi lại và chỉnh sửa thủ công, cung cấp hỗ trợ tự động hoàn thành và khả năng di chuyển các lệnh xung quanh một cách nhanh chóng. Các tập lệnh được ghi bằng Selenese, một ngôn ngữ tập lệnh kiểm thử đặc biệt dành cho Selenium. Selenese cung cấp các lệnh để thực hiện các hành động trong trình duyệt (nhấp vào liên kết, chọn một tùy chọn) và để truy xuất dữ liệu từ các trang kết quả.
Selenium RC
Selenium Remote Control (RC) là một máy chủ được viết bằng Java, chấp nhận các lệnh cho trình duyệt thông qua HTTP. RC cho phép viết các bài kiểm thử tự động cho ứng dụng web bằng kỳ ngôn ngữ lập trình nào. Cho phép tích hợp Selenium tốt hơn trong các khung kiểm thử đơn vị hiện có. Để làm cho các bài kiểm thử được viết dễ dàng hơn.
Selenium hiện cung cấp trình điều khiển máy khách cho PHP, Python, Ruby, . NET, Perl và Java. Trình điều khiển Java cũng có thể được sử dụng với Javascript (thông qua công cụ Rhino). Cần có một phiên bản của máy chủ Selenium RC để khởi chạy test case html – có nghĩa là cổng phải khác nhau cho mỗi lần chạy song song. Tuy nhiên, đối với test case Java/ PHP, chỉ cần một phiên bản Selenium RC chạy liên tục.
Selenium WebDriver
Đây là phiên bản kế thừa của Selenium RC. Selenium Webdriver chấp nhận các lệnh (được gửi bằng Selenese hoặc thông qua API ứng dụng khách) và gửi chúng tới trình duyệt. Điều này được thực hiện thông qua trình điều khiển trình duyệt dành riêng, trình điều khiển này sẽ gửi lệnh tới trình duyệt và truy xuất kết quả. Hầu hết các trình điều khiển trình duyệt thực sự khởi chạy và truy cập một ứng dụng trình duyệt (Firefox, Chrome…) Ngoài ra còn có trình điều khiển trình duyệt HtmlUnit
Selenium WebDriver không cần máy chủ đặc biệt để thực hiện kiểm thử. Thay vào đó, nó trực tiếp khởi động một phiên bản trình duyệt và điều khiển. Tuy nhiên, Selenium Grid có thể được sử dụng với WebDriver để thực hiện kiểm tra trên các hệ thống từ xa. Nếu có thể, WebDriver sử dụng chức năng cấp hệ điều hành gốc thay vì các lệnh Javaccript dựa trên trình duyệt để điều khiển trình duyệt. Điều này bỏ qua các vấn đề về sự khác biệt giữa các lệnh gốc và lệnh Javaccript, bao gồm cả các hạn chế về bảo mật.
Selenium Grid
Là một máy chủ cho phép kiểm thử sử dụng các phiên bản trình duyệt Web chạy trên các hệ thống từ xa. Với Grid, một máy chủ đóng vai trò là trung tâm. Các kiểm thử liên lạc với trung tâm để có quyền truy cập vào các phiên bản trình duyệt. Trung tâm có một danh sách các máy chủ cấp quyền truy cập vào các phiên bản trình duyệt (các nút Webdriver) và cho phép kiểm thử sử dụng các phiên bản này. Selenium Grid cho phép chạy kiểm thử song song trên nhiều máy và quản lý tập trung các phiên bản trình duyệt và cấu hình trình duyệt khác nhau (thay vì từng kiểm thử riêng lẻ)
Khả năng chạy kiểm thử trên các phiên bản trình duyệt từ xa rất hữu ích để phân bổ tải kiểm thử trên một số máy và chạy kiểm thử trong các trình duyệt chạy trên các nền tảng hoặc hệ điều hành khác nhau. Cái sau đặc biệt hữu ích trong trường hợp không phải tất cả các trình duyệt được sử dụng để kiểm thử đều có thể chạy trên cùng một nền tảng.
Đặc trưng của Selenium
- Một framework kiểm thử web di động và mã nguồn mở
- Là sự kết hợp giữa các công cụ và DSL (Ngôn ngữ dành riêng cho miền) để thực hiện các loại kiểm thử khác nhau
- Các lệnh Selenium được phân loại theo các lớp khác nhau giúp dễ hiểu và triển khai hơn
- Selenium hỗ trợ thực hiện kiểm thử song song , giúp giảm thời gian thực hiện
- Yêu cầu ít tài nguyên hơn khi so sánh với các đối thủ cạnh tranh như UFT, RFT…
- Hỗ trợ nhiều ngôn ngữ lập trình: C#, Java, Python, PHP, Ruby, Perl và JavaScript và hệ điều hành: ndroid, iOS, Windows, Linux, Mac, Solaris
- Hỗ trợ nhiều trình duyệt: Google Chrome, Mozilla Firefox, Internet Explorer, Edge, Opera, Safari…
Hạn chế của Selenium
- Không hỗ trợ kiểm thử cho các ứng dụng dành cho máy tính để bàn
- Selenium yêu cầu chuyên môn của nhóm phát triển và các nguồn lực để quản lý
- Selenium là một framework nặng về bảo trì và rất khó mở rộng quy mô khi một framework phát triển
- Vì là mã nguồn mở nên người ta phải dựa vào các diễn đàn cộng đồng để giải quyết các vấn đề kỹ thuật của bạn.
- Không thể thực hiện kiểm thử tự động trên các dịch vụ Web như SOAP hoặc REST bằng Selenium
- Không có bất kỳ khả năng báo cáo sẵn nào, người ta phải dựa vào các plugin cài thêm như JUnit, TestNG để có báo cáo kiểm thử
- Không thể thực hiện kiểm tra trên hình ảnh. Cần phải tích hợp Selenium với Sikuli để kiểm tra hình ảnh
Các tính năng nổi bật của Selenium
Tới thời điểm hiện tại, Selenium vẫn nằm trong top 10 công cụ tự động hóa kiểm thử, và điều gì đã làm nên sức hấp dẫn của Selenium? Đó chính là nhờ vào những tính năng nổi bật của nó.
Selenium là mã nguồn mở, điều này cho phép người dùng tải xuống mã nguồn và tùy chỉnh theo nhu cầu cụ thể của họ.
Với cộng đồng người dùng rộng lớn, Selenium thường được phát triển và nâng cấp mạnh mẽ. Nó hỗ trợ đa dạng trình duyệt như Chrome, Firefox, Safari, Internet Explorer, Opera và Microsoft Edge.
Hỗ trợ trên nhiều hệ điều hành: MacOS, Linux, Windows và UNIX.
Việc viết test case có thể sử dụng nhiều ngôn ngữ khác nhau như Java, C#, Ruby, JavaScript, Python… Mỗi ngôn ngữ lập trình đi kèm với các framework hỗ trợ riêng. Selenium GRID cho phép thực hiện các test case trên nhiều máy tính cùng lúc, tăng tốc độ thực thi test.
Selenium có khả năng kết hợp với các hệ thống CI/CD như Jenkins, CircleCI để tối ưu tiến độ kiểm tra, từ đó giảm thiểu thời gian phát hành sản phẩm.
Hỗ trợ kiểm thử trên di động. Selenium có thể kết hợp với các công cụ như Appium, Selendroid để thực hiện kiểm thử trên các ứng dụng di động như: native, hybrid và web mobile app.
Các chọn Selenium thích hợp cho các Tester
Với đa dạng tính năng hấp dẫn và các bộ công cụ Selenium, việc lựa chọn bộ công cụ phù hợp cho dự án của bạn trở nên quan trọng. Hãy xem xét các gợi ý dưới đây để quyết định sử dụng bộ công cụ nào phù hợp nhất:
Tool | Tiêu chí lựa chọn |
---|---|
Selenium IDE | – Tìm hiểu về các concepts của tự động hoá kiểm thử và Selenium, bao gồm: + Command type: open, clickAndWait, assert, verify, … + Locators: như ID, name, xpath, css selector, … + Thực thi các đoạn mã Javascript thông qua run script + Exporting test cases theo nhiều format khác nhau – Để tạo ra các kịch bản test mà không cần kiến thức về lập trình – Tạo ra các test cases hoặc test suites đơn giản, sau đó có thể export và sử dụng bằng Selenium WebDriver tool – Để kiểm tra một ứng dụng web mà chỉ yêu cầu test trên Firefox và Chrome |
Selenium WebDriver | – Để thực thi các test script trên nhiều loại trình duyệt khác nhau – Sử dụng một ngôn ngữ cụ thể nào đó để tạo ra test script – Để kiểm tra ứng dụng có nhiều chức năng sử dụng AJAX – Để tạo ra test report dễ đọc, dễ debug |
Selenium Grid | – Để chạy nhiều kịch bản test trên nhiều hệ điều hành và nhiều trình duyệt khác nhau trong cùng một lúc – Để chạy một số lượng lớn test cases và phải hoàn thành trong thời gian sớm nhất có thể. |
Selenium đã góp phần tạo nên danh tiếng như một framework kiểm thử tự động mã nguồn mở hàng đầu. Nó mở ra cánh cửa cho việc tự động kiểm thử ứng dụng web trên nhiều trình duyệt và hệ điều hành. Điều đặc biệt, Selenium cho phép nhà phát triển và kiểm thử viết các test script bằng bất kỳ ngôn ngữ lập trình nào họ yêu thích.
Bằng cách kết hợp Selenium với các công cụ CI/CD, doanh nghiệp có thể nhanh chóng đưa sản phẩm ra thị trường, bổ sung tính năng mới mà vẫn đảm bảo hiệu suất của các tính năng hiện tại. Điều này không chỉ mang lại giá trị cho khách hàng mà còn tạo ra cơ hội lớn cho sự phát triển liên tục.