Automation Test

Kiểm thử tự động với Watir

Khái niệm WATIR:

Watir (Web Application Testing in Ruby) là một thư viện Ruby mã nguồn mở dành cho kiểm thử tự động. Watir tương tác với một trình duyệt giống như cách mọi người thường làm: nhấp vào các liên kết, điền vào biểu mẫu và xác thực văn bản.

Người dùng watir có thể xây dựng một web scraper (trích xuất nội dung trang web) để mô phỏng việc vào một trang web, đăng nhập, gửi bình luận hoặc tải dữ liệu về và nhiều thứ khác nữa.

Watir cho phép kỹ sư kiểm thử tạo ra những test case dễ đọc hiểu và maintain. Đây là một công cụ khá dễ sử dụng và linh hoạt.

Watir bao gồm Watir-classicWatir-Webdriver. Trong khi Watir-classic chỉ hỗ trợ Internet Explorer trên Windows, thì Watir-WebDriver còn hỗ trợ trên các trình duyệt phổ biến như Chrome, Firefox, Internet Explorer, Opera hoặc chạy ở chế độ headless (HTMLUnit).

Watir-webdriver là phiên bản hiện đại của Watir API xây dựng dựa trên Selenium. Hay có thể mô tả Watir-webdriver=Watir-classic +WebDiver + 1 số tính năng bổ sung khác

WATIR hoạt động như thế nào

Hiện nay gem watir-classic đã không còn được sử dụng nữa và tất cả source code của watir web-driver cũng đã được đưa vào gem Watir nên chúng ta sẽ tìm hiểu về cách hoạt động của Watir

Watir từ phiên bản 6.0 trở đi sử dụng Selenium web-driver. có nghĩa là chúng ta có thể tạo một trang web động với JavaScript. Một gem tương tự là Mechanize - phù hợp cho các trang tĩnh và không sử dụng nhiều JavaScript hoặc AJAX.

Watir-WebDriver hỗ trợ trên các trình duyệt phổ biến như Chrome, Firefox, Internet Explorer, Opera hoặc chạy ở chế độ headless (HTMLUnit).

Chế độ headless cho phép phân tích một trang không có giao diện - trong hầu hết các hệ thống UNIX, Watir yêu cầu cài đặt sẵn Xvfb (trên Ubuntu). Watir sử dụng PhantomJS để mô phỏng trình duyệt web và chạy một trang trong trình mô phỏng. Nếu muốn phân tích trang bằng các trình duyệt cần cài các driver tương ứng.

Cũng giống như những ngôn ngữ lập trình khác thì Ruby cho phép người dùng kết nối tới cơ sở dữ liệu, đọc tập tin dữ liệu, truy xuất tập tin XML và cấu trúc những đoạn code thành những thư viện để phục vụ mục đích tái sử dụng.

1 ví dụ cơ bản về Watir:

browser = Watir::Browser.new :chrome

browser.goto \'google.com\'
browser.text_field(title: \'Search\').set \'Hello World!\'
browser.button(type: \'submit\').click

puts browser.title

#=> \'Hello World! - Google Search\' browser.quit

Cách thức hoạt động của water cũng giống như các tool kiểm thử tự động khác:

Người dùng viết các câu lệnh => water xử lý và thực thi chúng thông qua giao diện của các trình duyệt web giống như các tương tác giữa người dùng và trang web đó.

So sánh với một số ứng dụng kiểm thử khác

Tính năng Watir Selenium TestComplete UFT Katalon Studio
Nền tảng phát triển test Đa nền tảng Đa nền tảng Windows Windows Đa nền tảng
Ứng dụng có thể sử dụng Web apps Web apps Windows desktop, Web, mobile apps Windows desktop, Web, mobile apps Web and mobile apps
Ngôn ngữ viết script Ruby Java, C#, Perl, Python, JavaScript, Ruby, PHP JavaScript, Python, VBScript, JScript, Delphi, C++ and C# VBScript Java/Groovy
Hệ điều hành được hỗ trợ Windows, Mac, Linux Windows, Mac, Linux Windows, Mac Windows Windows, Mac, Linux
Yêu cầu kĩ năng lập trình Không nhiều như Selenium Webdriver / UFT.Nhưng cần kiến thức tốt về Ruby Kỹ năng nâng cao cần thiết để tích hợp các công cụ khác nhau Không yêu cầu, Cần kỹ năng tạo test scripts Không yêu cầu. Cần kỹ năng tạo test scripts Không yêu cầu. Cần kỹ năng tạo test scripts
Mức độ tăng hiểu biết khi tìm hiểu về công cụ Trung Bình Cao Trung Bình Trung Bình Trung Bình
Độ khó khi cài đặt và sử dụng Dễ. Cấu hình WATIR web driver sử dụng ruby command, yêu cầu phần lớn chỉ là cài đặt Ruby Khó. Yêu cầu cài đặt và tích hợp nhiều công cụ và thư viện Dễ dàng cài đặt và chạy Dễ dàng cài đặt và chạy Dễ dàng cài đặt và chạy
Thời gian tạo script Mất nhiều thời gian tương đương Selenium Webdriver Mất nhiều thời gian Mất ít thời gian Mất ít thời gian Mất ít thời gian
Lưu trữ đối tượng và bảo trì Ruby đã xây dựng các khả năng Liên kết và nhúng (Object) và nhúng (OLE) XPath, UI Maps Xây dựng dựa vào kho đối tượng để lấy ra các đối tượng thông dụng Xây dựng dựa vào kho đối tượng để lấy ra đối tượng chính xác xây dựng dựa vào kho đối tượng, Xpath, nhận dạng lại đối tượng
Hỗ trợ kết nối tới Cơ sở dữ liệu (CSDL) Có thể kết nối đến CDSL Selenium không thể kết nối tới CSDL của chính nó.Mà nó phụ thuộc vào sự hỗ trợ của một số ngôn ngữ khác ví dụ như Java có JDBC API Có thể làm việc với CSDL sử dụng ADO và BDE Sử dụng Visual Basic script và ODBC, để kết nối với CSDL Có thể kết nối tới CSDL nhờ sử dụng java
Tạo và lưu kết quả test Sử dụng RSpec framework WATIR có thể tạo HTML report để giữ kết quả test Selenium Webdriver có thể tạo kết quả test bằng việc tương tác với frameworks khác (như TestNG) Có thể truy xuất kết quả test sử dụng định dạng như MHT HTML XML PDF tcLogX Sau mỗi lần thực hiện test QTP/UFThiển thị kết quả test , mỗi dòng test script sẽ hiển thị pass/fail Tạo report của test suites với những định dạng như HTML, CSV, PDF và Junit sử dụng context menu trong test explorer
Framework được hỗ trợ Cucumber, RSpec, Test/Unit C# : Nunit Java: JUnit/TestNG Python: pyunit, py.test, robot Javascript:WebdriverJS, WebdriverIO, Nightwatch JS Data-driven testing framework Data Driven automation framework Keyword Driven automation framework
Giấy phép (License type) Mã nguồn mở Mã nguồn mở (Apache 2.0) Độc quyền Độc quyền Miễn phí
Chi phí sử dụng Miễn phí Miễn phí Phí bản quyền và maintain Phí bản quyền và maintain Miễn phí

Các bước cài đặt

Bước 1: Cài đặt RUBY và gem WATIR

1. Cách cài đặt trên Windows

Trước khi cài Watir, cần tải và cài đặt ruby+devkit lên máy . Truy cập trang: https://rubyinstaller.org/downloads/

  • Chọn phiên bản ruby phù hợp với hệ điều hành máy tính của bạn.

  • Ví dụ : Windows 10 64 bit sẽ download phiên bản: Ruby+Devkit 2.5.1-1 (x64)

1.1 Cài đặt Ruby sau khi đã tải về

  • Chạy trình cài đặt Ruby:

  • Chọn chấp nhận điều khoản và ấn Next chuyển qua bước tiếp theo

  • Chọn thư mục cài đặt và ấn Install

  • Đợi quá trình cài đặt kết thúc

  • Chọn option 3 - MSYS2 and MINGW development toolchain

Sau khi cài xong ruby bạn có thể kiểm tra lại xem ruby đã đươc cài thành công hay chưa bằng cách gõ đoạn lệnh ruby -v

1.2 Cài đặt Devkit

Trước khi cài devkit bạn cần chuyển đổi thư mục lưu sang C:\devkit -> mở command prompt -> gõ lệnh cd c:\devkit Run devkit:

gõ đoạn lệnh: ruby dk.rb init -> [nhấn Enter] -> ruby dk.rb install -> [nhấn Enter] -> cài đặt devkit thành công

1.3 Cài đặt watir

  • Mở command prompt gõ đoạn lệnh: gem install watir --no-ri --no-rdoc

  • Bạn có thể chạy đoạn lệnh gem install rspec để cài đặt rspec hỗ trợ việc test sau này

  1. Cách cài đặt trên Ubuntu

2.1 Trước khi cài Watir, cần cài đặt ruby lên máy. Bạn có thể chạy trên Terminal những câu lệnh sau:

  • Cài đặt git nếu chưa có:

sudo apt-get install git

  • Cài đặt ruby-install
wget -O ruby-install-0.6.0.tar.gz https://github.com/postmodern/ruby-install/archive/v0.6.0.tar.gz
tar -xzvf ruby-install-0.6.0.tar.gz
cd ruby-install-0.6.0/
sudo make install
ruby-install ruby 2.x

x là phiên bản ruby

  • Sau khi các câu lệnh chạy hoàn thành. Kiểm tra xem ruby đã được cài thành công chưa:

ruby --version

  • Câu lệnh này sẽ trả về dạng

ruby 2.x (yyyy-mm-dd) [x86_64-linux-gnu]

2.2 Khi đã cài ruby hoàn tất, tiếp theo bạn cần cài Watir

Câu lệnh chạy trên Terminal để cài đặt Watir gem install watir

Bước 2: Cài đặt các driver hỗ trợ các trình duyệt (áp dụng cho cả 2 hệ điều hành)

Tải drivers tương ứng với các trình duyệt tại đây:

  • Google Chrome: chromedriver

  • Mozilla Firefox: geckodriver

  • Microsoft Edge: Microsoft WebDriver

  • Microsoft Internet Explorer: IEDriver

  • Apple Safari: safaridriver (nếu bạn có Safari 10 thì nó đã được tích hợp sẵn)

Với Windows bạn chỉ cần bỏ cái tập tin .exe này vào thư mục cài đặt ruby. Riêng đôi với Ubuntu sau khi tải file về bạn cần thêm các file driver này vào PATH, sử dụng câu lệnh:

export PATH=${HOME}/drivers:${PATH}

/drivers là tên folder chứa các file driver

Ngoài ra bạn có thể sử dụng một số online service như:

Vậy là bạn đã hoàn thành các bước cài đặt. Bạn có thể sử dụng terminal hoặc IDE để bắt đầu chạy các đoạn script test

Ứng dụng vào việc kiểm thử

Để thao tác được với Watir, cần có môi trường phát triển hay còn gọi là IDE sau:

  •      ScITE (Free) : đã có khi tải ruby
    
  •      Notepad ++ (Free)
    
  •      Eclipse
    
  •      Ruby in Steel (Free - $199) (Add-on to VS.Net)
    
  •      Komodo IDE ($295) / Komodo Edit (Free)
    

Thao tác cơ bản với các object trên trang:

  1. Khởi động:

Chạy file browser driver trong folder C:\Ruby25-x64\bin

Tải thư viện Watir:

require \'watir\'

Mở trình duyệt:

browser = Watir::Browser.new:chrome # firefox or ie

Mở trình duyệt với URL cụ thể: (mở với trình duyệt mặc định: chrome)

browser = Watir::Browser.start("http://google.com")

Di chuyển đến URL cụ thể:

browser.goto("http://amazon.com")

Đóng trình duyệt

browser.close

Truy cập tới 1 Element:

Cấu trúc

Text box hoặc text area

t = browser.text_field(:name, "username")

Button

b = browser.button(:value, "Click Here")

Drop down list

d = browser.select_list(:name, "month")

Check box

c = browser.checkbox(:name, "enabled")

Radio button

r = browser.radio(:name, "payment type")

Form

f = browser.form(:name, "address")
 f = browser.form(:action, "submit")

Link

l = browser.link(:url, "http://google.com")
 l = browser.link(:href, "http://google.com")

Table: trỏ tới 1 ô trong bảng (hàng 2 cột 1)

td = browser.table(:name, \'recent_records\')[2][1]

Kiểm tra nội dung:

Trả về html của trang hoặc element:

browser.html
 e.html

Trả về text của trang hoặc element:

browser.text
 e.text

Trả về title của tài liệu

browser.title

Lấy text từ status bar

browser.status

Trả về true nếu text mô tả xuất hiện trên trang

browser.text.include? \'llama\'

Trả về nội dung của bảng dạng array

browser.table(:id, \'recent_records\').to_a

Ví dụ:

  1.  Object: Link
    

Web browser view:

Welcome to Camus team

HTML source:

<a href=http://www.camus.vn/>Welcome to Camus team</a>

Watir code:

Browser.link(:text, “Welcome to Camus team”).click -OR-
Browser.link(:url, “http://www.camus.vn”).click
  1. Object: Selection Boxes

Web browser view:

HTML source: <select name="language">

<option value="1"></option> <option value="2">Japanese</option> <option value="3">Vietnamese</option> </select>

Watir code: Browser.select_list(:name, “language”).select(“Vietnamese”)

  1.  Object: Checkbox
    

Web browser view:

HTMl source: <input type=”checkbox” name=”checkme” value=”1”>

Watir code:

Browser.checkbox(:name,”checkme”).set  -OR-
Browser.checkbox(:name,”checkme”).clear

Kết luận

Watir là một công cụ mã nguồn mở và miễn phí vì thế bạn có thể sử dụng nó tùy theo nhu cầu của bản thân, thay đổi nếu bạn muốn. Nó có thể được vận dụng linh hoạt vào việc test tự động các ứng dụng browser-based. Bên cạnh đó bạn có thể tìm kiếm sự trợ giúp khi cần bởi cộng đồng người dùng Watir đang ngày một nhân rộng. Một lý do thuyết phục cho điều này đó là Watir sử dụng Ruby để tạo script, một trong những ngôn ngữ lập trình phổ biến nhất hiện nay. Nó hỗ trợ đa trình duyệt đa nền tảng và hỗ trợ thực hiện test trên các sản phẩm được tạo ra từ bất kỳ ngôn ngữ/ công nghệ nào.

Nguồn tham khảo:

http://watir.com/ https://www.sitepoint.com/watir-webdriver-control-browser/ https://www.deviqa.com/our-services/watir http://thequalitytesting.blogspot.com/2007/12/how-does-watir-work.html

Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration