Khái niệm
Hiểu nhanh về Robot Framework, đây là một framework mã nguồn mở cơ bản cho kiểm thử tự động, hướng tới kiểm thử chấp nhận (acceptance test) dành cho các web apps sử dụng trên trình duyệt web hoặc kiểm thử API.
Cơ bản ở đây không nói về khả năng của Framework, mà nghĩa là Generic, tức là Framework cung cấp những cái cơ bản nhất và nền tảng nhất để thực hiện kiểm thử.
Đương nhiên, việc chính của Robot Framework là cung cấp một nền tảng gồm các chức năng cơ bản nhất để người dùng từ đấy có thể tự tạo ra và thực hiện các test case kiểm thử tự động, vì thế, các Library của Robot Framework đa phần sẽ bao bọc lại các framework đã có sẵn và cũng open source như
- Library
SeleniumLibrarybọc lấy Selenium và cho Robot Framework khả năng tự động hoá kiểm thử trên trình duyệt - Library
AppiumLibrarybọc lấy Appium và cho Robot Framework khả năng tương tác với server Appium để thực hiện kiểm thử tự động trên nền tảng thiết bị di động Android
Và nhiều Library khác
Điểm mạnh
- Là một framework KDT (Keyword Driven Testing) - Kiểm thử dựa trên từ khóa, giúp cho việc viết test case trở nên dễ dàng hơn, dễ đọc hơn và dễ bảo trì hơn. Về cơ bản thì mỗi test case sẽ được viết như những hành động, đọc bằng tiếng Anh.
Ví dụ, từ khoá Element Should Be Visible có nghĩa là kiểm tra xem một phần tử trên trang web có hiển thị hay không, và nếu không hiển thị thì từ khoá sẽ Fail. Từ khoá này bọc lấy một function của Selenium là is_displayed().
Nếu sử dụng Selenium với Python, việc nhìn vào một dòng code
assert element.is_displayed() == True
Người dùng sẽ khó có thể hiểu được ý nghĩa của nó trừ khi có doc Selenium mở cạnh vá dí thẳng vào mặt, nhưng với Robot Framework, đọc từ khoá là hiểu nó đang làm gì.
-
Có thể mở rộng với nhiều thư viện khác nhau, không chỉ Selenium, Appium, mà còn có thể sử dụng thư viện khác như Database, API, SSH, ... Cái này thì mình nói qua ở trên rồi
-
Open Source - mã nguồn mở. Một cái rất hay của mã nguồn mở là có thể tùy chỉnh, sửa đổi, mở rộng theo ý muốn của mình, và cũng có thể đóng góp lại cho cộng đồng. Ví dụ với từ khoá
Element Should Be Visible, người dùng có thể dễ dàng tìm đến source code của từ khoá này và xem nó đang sử dụng function nào của Selenium, từ đó có thể hiểu rõ hơn về cách hoạt động của từ khoá. -
Có thể cấu trúc theo mô hình Page Object, giúp cho việc bảo trì test case trở nên dễ dàng hơn. Cụ thể Page Object Model là gì, mình sẽ có một bài viết riêng.
Typical question: What is Robot Framework? - Robot Framework là gì?
Typical question: What those types of testing frameworks? - Có những loại framework kiểm thử nào?
Typical question: What is Keyword Driven Testing? - Kiểm thử dựa trên từ khóa là gì?
Selenium Library
Trong blog này của mình thì ở phần Robot Framework mình sẽ tập trung đi qua phần Selenium Library, vì Browser Automation là cái dễ làm và dễ setup nhất, những cái tinh tuý nhất của Robot Framework cũng sẽ đi qua với ví dụ sử dụng Selenium Library. Nếu có thời gian thì sau này mình sẽ lướt qua một số Library khác như Appium để auto test trên thiết bị di động, và Request Library để test API.
Selenium Library là một trong những Library quan trọng nhất của Robot Framework, nó bọc lấy Selenium và cung cấp các từ khoá để thực hiện kiểm thử tự động trên trình duyệt web. Vì thế, mình mới muốn đi qua bằng Selenium Library khi viết về Robot Framework, nó sẽ cover đủ các phần, từ viết script, cách đọc log, bắt bug, v.v...
Đầu tiên, Selenium Library chỉ là một Library, tức là cung cấp các từ khoá, các từ khoá này bọc các function của Library, thế nên, bản chất là Robot Framework đang sử dụng Selenium.
Cấu trúc Selenium
Selenium về cấu trúc có 4 phần chính:
- IDE: Selenium IDE, một công cụ để ghi lại và chạy test case trên trình duyệt, nó chỉ là một extension thôi, dễ dùng, nhưng không quá mạnh mẽ.
- WebDriver: Selenium WebDriver là một API để tương tác với trình duyệt, nó cung cấp các function để thao tác với trình duyệt, như click, send_keys, find_element, v.v...
- Grid: Selenium Grid là một công cụ để chạy test case trên nhiều trình duyệt và nhiều thiết bị cùng một lúc, giúp cho việc chạy test case trở nên nhanh hơn.
- Remote Control: Đã quá tuổi và cho ra rìa, không còn được sử dụng nữa.
- Ngoài ra có thể coi như có một thành phần nữa là Client API, nó nằm ngay trong WebDriver nên có thể gộp ở trong đấy. Về cơ bản thì WebDriver đã hỗ trợ nhiều ngôn ngữ lập trình như Java,Python, JavaScript,... giả sử Robot Framework sử dụng binding của Python để vận hành Selenium thì đấy gọi là Client API
Có thể làm gì với Selenium Library
Selenium Library về cơ bản giúp chúng ta làm những gì Selenium làm được, ví dụ một số từ khoá sau:
Open Browser: Mở trình duyệtGo To: Đi đến một trang webClick Element: Click vào một phần tửInput Text: Nhập dữ liệu vào một phần tử
Hay sẽ có các từ khoá để thực hiện các assertion - kiểm tra, như:
Element Should Be Visible: Kiểm tra xem một phần tử có hiển thị hay khôngElement Text Should Be: Kiểm tra xem text của một phần tử có đúng như mong đợi hay khôngTitle Should Be: Kiểm tra xem title của trang có đúng như mong đợi hay không
Và còn nhiều từ khoá khác nữa, mình sẽ đi qua một số từ khoá trong các bài viết sau, nhưng nó ở hết trên Doc rồi, lên mà đọc SeleniumLibrary
Typical question: What is Selenium Library? - Selenium Library là gì?
Typical question: What are the components of Selenium? - Có những thành phần nào trong Selenium?
Typical question: What are some keywords of Selenium Library? - Có những từ khoá nào trong Selenium Library?