Trong lĩnh vực phần mềm nói chung và automation testing nói riêng, thì khi nhắc đến Selenium người ta thường nghĩ ngay đến nó như là một tool đi liền với automation testing. Vậy Selenium là gì? Trong bài viết này chúng ta hệ thống lại những thông tin cốt lõi về Selenium giúp chúng ta nắm bắt nhanh về nó khi cần.
Tổng quan về Selenium
Selenium là gì
Selenium là một automation testing framework miễn phí (mã nguồn mở).
Nó được sử dụng để kiểm thử các ứng dụng web trên các trình duyệt (chrome, firefox, ms edge, …) và nền tảng khác nhau (Windows, Mac, Linux, …). Selenium hỗ trợ nhiều loại ngôn ngữ lập trình như: Java, C #, Python, ... để tạo ra các bộ test script.
Các thành phần của Selenium
Selenium không chỉ là một công cụ đơn lẻ mà là một bộ gồm 4 công cụ, mỗi công cụ đáp ứng nhu cầu kiểm thử khác nhau.
- Selenium IDE: Selenium Integrated Development Environment (IDE) là một plugin trên trình duyệt Chrome và Firefox. Ta có thể sử dụng chúng để ghi và phát lại(record and playback) các tương tác của người dùng theo một quy trình hay một test case nào đó.
- Selenium RC: Selenium Remote Control (RC), Selenium server khởi chạy và tương tác với trình duyệt web.
Năm 2008, Selenium team đã quyết định gộp Selenium RC và WebDriver để tạo ra Selenium 2 với nhiều tính năng mạnh mẽ hơn, mà hiện nay phần lớn các project Selenium đều sử dụng. - Selenium WebDriver: Selenium WebDriver là một automation testing tool dành riêng cho web, nó sẽ gửi lệnh khởi chạy và tương tác trực tiếp tới các trình duyệt.
- Selenium Grid: Selenium Grid được sử dụng để khởi chạy nhiều kịch bản test song song cùng một lúc, và có thể chạy trên nhiều máy, nhiều hệ điều hành và nhiều trình duyệt khác nhau.
Các tính năng nổi bật của Selenium
Tới thời điểm hiện tại, Selenium luôn nằm trong danh sách Top 10 Testing Automation Tools, vậy điều gì khiến Selenium có thể thu hút được lượng lớn người sử dụng? Đó chính là nhờ các tính năng nổi bật của Selenium
-
Selenium là mã nguồn mở. Do đó, mọi người có thể download source code về sử dụng, và thay đổi tùy theo nhu cầu.
-
Cộng đồng sử dụng rộng rãi. Thường xuyên được phát triển và cải tiến mạnh mẽ
Nguồn: Enlyft
-
Hỗ trợ cho nhiều 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
-
Các test case có thể được viết bằng nhiều ngôn ngư khác nhau như: Java, C#, Ruby, JavaScript, Python,… Ngoài ra, với mỗi ngôn ngữ lập trình, đều có các framework hỗ trợ như:
Nguồn: browserstack.com
-
Với Selenium GRID, các test case có thể được thực thi trên nhiều máy khác nhau cùng một lúc, giúp cho quá trình thực thi test được diễn ra nhanh hơn.
-
Có thể kết hợp với các hệ thống CI/CD như Jenkins, CircleCI để đẩy nhanh tiến độ kiểm tra, từ đó có thể rút ngắn thời gian release sản phẩm.
-
Hỗ trợ mobile testing. Bạn có thể kết hợp Selenium với một số tool như Appium, Selendroid để có thể tiến hành kiểm thử các ứng dụng mobile như: native, hybrid, và web mobile app.
Các tiêu chí để lựa chọn Selenium tool phù hợp cho dự án
Với hàng loạt các tính năng hấp dẫn cũng như sự đa dạng về các bộ Selenium tool, vậy làm thế nào để bạn có thể quyết định là nên sử dụng bộ tool nào cho dự án của bạn, chúng ta cùng tham khảo danh sách bên dưới.
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ể. |
Những hạn chế của Selenium
Mặc dù các tính năng của Selenium rất hấp dẫn, tuy nhiên thì nó cũng tồn tại một số hạn chế nhất định như:
- Vì Selenium là mã nguồn mở, nên các hỗ trợ về technical đều không hoàn toàn đáng tin cậy 100%. Các bạn phải tự đánh giá, kiểm chứng trước khi áp dụng cho dự án của bạn.
- Không giống như một số automation testing tools hỗ trợ IDE, với Selenium bạn phải bỏ nhiều thời gian để học và viết test case
(Selenium WebDriver là tool được sử dụng nhiều nhất trong bộ Selenium, tuy nhiên thì nó không hỗ trợ IDE như Selenium IDE, nên bắt buộc chúng ta phải viết step by step cho mỗi test case) - Nếu không sử dụng các framework có sẵn như WebdriverIO, Jasmine, thì việc cài đặt Selenium rất phức tạp vì nó sử dụng các công cụ và plugin khác nhau để hỗ trợ automation testing. Và chúng ta cần phải cấu hình chúng một cách thủ công.
- Ít hỗ trợ cho Image Testing. Với Selenium, để có thể kiểm chứng hình ảnh một cách chính xác, bạn cần phải kết hợp với một third-party software như Sikuli hoặc OpenCV
- Không hỗ trợ built-in reporting. Tuy nhiên, bạn có thể sử dụng một số reporting library như Allure Reporting, junit reporting,…
Tổng kết
Selenium là một trong những open-source automation testing framework nổi tiếng nhất. Nó hỗ trợ kiểm thử tự động cho các ứng dụng web trên các trình duyệt và hệ điều hành khác nhau. Hơn thế nữa, nó còn cho phép developer và tester có thể viết các test script cho kiểm thử tự động bằng bất kỳ ngôn ngữ lập trình nào mà họ cảm thấy thoải mái.
Với việc kết hợp Selenium với các tool CI/CD, nó sẽ giúp cho doanh nghiệp có thể đẩy nhanh quá trình release sản phẩm, thêm tính năng mới nhưng vẫn đảm bảo các tính năng cũ hoạt động bình thường, từ đó mang lại nhiều giá trị cho khách hàng.
Trong bài viêt này có sử dụng một số kiến thức từ: https://www.guru99.com/introduction-to-selenium.html