Công cụ kiểm thử Selenium Webdriver

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số kỹ thuật và công cụ kiểm thử ứng dụng trong kiểm thử tự động ứng dụng web (Trang 37)

CHƯƠNG 3 : MỘT SỐ CÔNG CỤ KIỂM THỬ PHẦN MỀM

3.4. Công cụ kiểm thử Selenium Webdriver

Selenium WebDriver là bộ thư viện cung cấp các API để tương tác với các thành phần HTML trên trình duyệt Web, mà cụ thể đây là các điều khiển trên ứng dụng Web. Như đã biết, các điều khiển trên giao diện người dùng của ứng dụng Web được hiển thị bằng mã HTML và được định danh duy nhất bởi thuộc tính id hoặc thuộc tính name. Các hàm trong Selenium WebDriver sẽ hỗ trợ tương tác với các điều khiển thông qua ID hoặc Name của chúng. Selenium WebDriver có thể kết hợp với nhiều ngơn ngữ lập trình và hỗ trợ hầu hết các trình duyệt phổ biến hiện nay.

Chi tiết cách sử dụng Selenium WebDriver xin tham khảo thêm tại

http://docs.seleniumhq.org/docs/. Trong luận văn chỉ xin đề cập tới một số

hàm và từ khóa cơ bản thường dùng của thư viện này.

Bảng 2.1. Hàm và từ khóa thường dùng của Selenium WebDriver.

STT Tên hàm / từ khóa và giải thích Cách sử dụng

1

IwebDriver: Khai báo đối tượng điều khiển trình duyệt Web.

IWebDriver w =

newFirefoxDriver(); Khai báo đối tượng w điều khiển trình duyệt Firefox.

2

Navigate().GoToUrl(“URL”): Truy cập tới đường dẫn chỉ định.

w.Navigate().GoToUrl(“

http://login.toi88.com”

);

: Điều khiển trình duyệt truy cập tới đường dẫn “login.toi88.com”

3

IWebElement: Khai báo đối tượng điều khiển thành phần trên ứng dụng Web.

IwebElement e =

w.FindElement(By.Id(“txtU s erName”))

Khai báo đối tượng “e” điều khiển thành phần có id là “txtUserName” trên ứng dụng Web.

4 Clear(): Xóa dữ liệu có trong thành phần được điều khiển.

e.Clear(): Xóa dữ liệu trong thành phần e.

5

SendKeys(“Value”): Gán dữ liệu cho thành phần được điều khiển.

e.SendKeys(“UET”): Gán dữ liệu có nội dung là “UET” cho thành phần e.

6

Click(): Ra lệnh thực hiện sự kiện click cho thành phần được điều khiển.

e.Click(): Thành phần e thực hiện sự kiện click.

7

GetAttribute(“property”): Lấy nội dung thuộc tính HTML được chỉ định từ thành phần đang được điều khiển.

e.GetAttribute(“innerHTML ”

): Lấy nội dung trong thành phần e.

8 Close(): Tắt trình duyệt. w.Close(): Tắt trình duyệt. Đánh giá về ưu và nhược điểm của Selenium WebDriver:

 Ưu điểm:

o Hỗ trợ nhiều ngơn ngữ lập trình. o Hỗ trợ nhiều trình duyêt Web. o Đơn giản, dễ sử dụng.

 Nhược điểm:

o Không hoạt động tốt với các thành phần Ajax.

o Không hoạt động tốt với các thành phần như hộp thoại hay cảnh báo.

o Thời gian thực thi ca kiểm thử chậm bởi Selenium WebDriver đòi hỏi phải bật và tắt trình duyệt Web mỗi lần thực hiện ca kiểm thử.

CHƯƠNG 4: ỨNG DỤNG CÔNG CỤ HỖ TRỢ KIỂM THỬ SELENIUM WEBDRIVER TRONG KIỂM THỬ ỨNG DỤNG WEB 4.1. Lý do chọn bài toán ứng dụng

Như chúng ta đã biết có hai cách chính để nhập dữ liệu vào ứng dụng

Web đó là thơng qua việc truyền các tham số qua URL hoặc qua các hộp Input. Để đảm bảo tính trực quan và dễ sử dụng đối với người dùng thì cách thứ hai đã và đang được áp dụng trên các ứng dụng Web. Các Input được đặt trên form và tương ứng cho các tham số cần truyền vào cho một chức năng cụ thể trong ứng dụng Web nên có thể nói form là giao diện nhập dữ liệu đầu vào cho chức năng, ví dụ về Form được minh họa như trong hình ... với tên Form là “Thêm người dùng” cùng 5 Input là “Tên đăng nhập”, “Mật khẩu”, “Họ tên người dùng”, “Địa chỉ email” và “Số điện thoại”.

Việc kiểm tra tính hợp lệ của các dữ liệu đầu vào là rất quan trọng do dữ liệu đầu vào không chỉ yêu cầu phải đúng kiểu dữ liệu mà còn đòi hỏi phải đúng định dạng của loại dữ liệu đó, ví dụ như định dạng email, dạng số, ngày tháng,...Do đó các ứng dụng Web cần phải có khả năng kiểm tra tính hợp lệ của dữ liệu đầu vào một cách hiệu quả thì các tiến trình xử lý tiếp theo mới được đảm bảo hoạt động tốt. Khi kiểm thử viên tiến hành kiểm thử một form trên ứng dụng Web, việc đầu tiên thường là kiểm tra xem khả năng bắt lỗi (kiểm tra tính hợp lệ) trên các input có chính xác hay khơng sau đó mới kiểm tra đến chức năng đó có thực hiện và cho ra kết quả chính xác hay khơng. Cơng việc này địi hỏi phải rất tỉ mỉ và mất nhiều thời gian do một input thường không chỉ có một điều kiện đầu vào mà cịn rất nhiều điều kiện khác nhau, có thể khơng kiểm tra riêng rẽ mà cịn kết hợp lại với nhau.

Hiện nay có rất nhiều cơng cụ hỗ trợ cho việc kiểm thử tự động ứng dụng Web, tuy nhiên hầu hết các công cụ chỉ hỗ trợ cho việc thực thi tự

động các ca kiểm thử còn việc thiết kế các ca kiểm thử lại rất hạn chế. Đối với một số kiểm thử viên chưa có nhiều kinh nghiệm hoặc những người khơng có kiến thức về kiểm thử thì rất khó để có thể thiết kế đầy đủ các ca kiểm thử nhằm kiểm tra xem chức năng đang xem xét có khả năng kiểm tra tính hợp lệ hay không hợp lệ của các dữ liệu đầu vào một cách chính xác.

Bằng việc sử dụng ngơn ngữ lập trình Javascript hoặc các ngơn ngữ khác có khả năng hoạt động phía máy khách, các ứng dụng Web có thể thực hiện việc kiểm tra tính hợp lệ của các input ngay tại phía máy khách mà không cần phải kiểm tra tại phía máy chủ ứng dụng Web, điều này nhằm tăng tốc độ xử lý và giảm tải cho phía máy chủ. Tuy nhiên nếu người sử dụng sử dụng cài đặt các plug-in chặn mã trên trình duyệt hoặc thiết lập không cho Javascript được hoạt động thì việc kiểm tra sẽ bị vơ hiệu hóa. Trong trường hợp này, nếu ứng dụng Web phụ thuộc quá nhiều vào việc kiểm tra tính hợp lệ bằng việc kiểm tra trên máy khách mà quên hoặc thiếu sót trong việc kiểm tra tính hợp lệ ở phía máy chủ thì nhiều khả năng lỗi có thể xảy ra. Do đó, việc kiểm tra tính hợp lệ ở phía máy chủ cũng rất quan trọng và không thể bỏ qua.

Xuất phát từ những vấn đề đã nêu trên, ý tưởng thực hiện một cơng cụ kiểm thử tự động có khả năng sinh ra các ca kiểm thử và thực hiện các ca kiểm thử đó nhằm xác định ứng dụng Web có thể kiểm tra tính hợp lệ của dữ liệu đầu vào chính xác là điều rất cần thiết khơng chỉ hỗ trợ cho những người chưa có nhiều kinh nghiệm mà cịn giúp giảm thời gian và chi phí để thiết kế, thực thi các ca kiểm thử. Trong luận văn này, tôi xin giới thiệu công cụ kiểm thử tự động được phát triển theo ý tưởng đã đặt đề ra.

4.2. Kiểm thử tự động ứng dụng Gmail 4.2.1. Giới thiệu bài tốn 4.2.1. Giới thiệu bài tốn

• Vấn đề đặt ra là kiểm thử hai chức năng cơ bản cho ứng dụng web của trang https://accounts.google.com/ là chức năng đăng nhập và chức năng soạn thảo gửi email.

• Ứng dụng được kiểm thử trên 2 trình duyệt là FireFox và Google Chrome. • Chức năng đăng nhập: Chức năng này là một chức năng đăng nhập thuần túy vào các ứng dụng web thông thường giống như các ứng dụng khác như yahoo, google hay các forum. Các yếu tố cần kiểm tra:

- Nếu đăng nhập đúng tên và mật khẩu thì sẽ tải đến trang chủ của ứng dụng và tiến hành gửi email

- Nếu đăng nhập với tên và mật khẩu để trống thì sẽ đưa ra thông báo “Hãy nhập email hoặc số điện thoại”.

- Nếu nhập thiếu mật khẩu thì sẽ đưa ra thơng báo “Vui lòng nhập mật khẩu của bạn”.

- Nếu đăng nhập với tên và mật khẩu sai thì sẽ đưa ra thơng báo “Rất tiếc! Google khơng nhận dạng được email đó” hoặc “Mật khẩu sai! Hãy thử lại”.

• Chức năng gửi email: Kiểm tra gửi email tới một địa chỉ email hợp lệ khác thành cơng.

4.2.2. Chuẩn bị testcase cho bài tốn Test Test

CaseID ĐIỀU KIỆN TEST KẾT QUẢ MONG ĐỢI OK/NG

TC01 Đăng nhập với Email và Pass trống.

1. Mở trang chủ:

https://accounts.google.com. 2. Click nút “Next”.

Không cho phép đăng nhập thành công và hiện thông báo “Hãy nhập email hoặc số điện thoại”.

TC02 Đăng nhập với Pass trống. 1. Mở trang chủ: https://accounts.google.com. 2. Nhập email: loptrungk28ctn@gmail.com. 3. Click nút “Next”. 4. Click nút “Signin”.

Không cho phép đăng nhập thành công và hiện thơng báo “Vui lịng nhập mật khẩu của bạn”.

TC03 Đăng nhập với Email sai. 1. Mở trang chủ:

https://accounts.google.com. 2. Nhập email:

loptrungctn@gmail.com. 3. Click nút “Next”.

Không cho phép đăng nhập thành công và hiện thị thông báo “Rất tiếc, Google không nhận dạng được Email đó”.

TC04 Đăng nhập với Pass sai. 1. Mở trang chủ:

https://accounts.google.com. 2. Nhập email: loptrungctn @gmail.com.

Không cho phép đăng nhập thành công và hiển thị thông báo “Mật khẩu sai. Hãy thử lại”.

3. Nhập pass: 123456. 4. Click nút “SignIn”.

TC05 Đăng nhập với Email và Pass hợp lệ 1. Mở trang chủ: https://accounts.google.com. 2. Nhập email: loptrungk28ctn@gmail.com. 3. Nhập pass: 23102012. 4. Click nút “SignIn”.

5. Click vào biểu tượng gửi mail của trang google account.

6. Click nút “Soạn” 7. Nhập tới: kimtuyen15@gmail.com 8. Nhập chủ đề: “Hello”. 9. Nhập nội dung: “SeleniumWebDriver”. 10. Click nút “Gửi”.

Thư được gửi thành công

4.2.3. Xây dựng kịch bản kiểm thử tự động

Do vẫn tồn tại những hạn chế về kinh nghiệm cũng như sự phức tạp khi tìm hiểu về cơng cụ kiểm thử selenium, trong luận văn này em án xin phép được trình bày demo một số testcase cơ bản của chức năng đăng nhập và gửi email bằng công cụ Selenium WebDriver, đồng thời thực hiện báo cáo dựa trên framework kiểm thử TestNG. Chương trình demo được xây dựng trên

ngơn ngữ lập trình Java, với sự tích hợp plugin của cơng cụ kiểm thử tự động Selenium WebDriver.

 Đăng nhập bằng FireFox:

Hình 4. 1. Đăng nhập thành cơng trên Firefox

Tổng số trường hợp kiểm thử: 5 Số trường hợp kiểm thử thành công: 5 Số trường hợp kiểm thử thất bại: 0

Báo cáo kết quả kiểm thử các trường hợp thất bại

Bảng tóm tắt các trường hợp testcase đã chạy

KẾT LUẬN

Sau một thời gian làm việc, nghiên cứu dưới sự hướng dẫn tận tình của thầy giáo TS. Nguyễn Văn Núi, tôi đã đạt được các kết quả sau đây:

1. Trình bày đầy đủ và chính xác các vấn đề liên quan đến phần mềm, kiểm thử phần mềm, kiểm thử tự động.

2. Giới thiệu công cụ kiểm thử phần mềm Selenium.

3. Giới thiệu Selenium IDE và Selenium WebDriver, các thao tác cơ bản để sử dụng bộ công cụ này.

4. Áp dụng các kiến thức đã nghiên cứu thực hiện ứng dụng kiểm thử tự động Web.

Hướng phát triển của luận văn:

Trong thời gian tới, tôi sẽ tiếp tục nghiên cứu sâu hơn về các vấn đề của kiểm thử phần mềm, và đặc biệt là bộ công cụ kiểm thử ứng dụng Selenium, để có thể vận dụng vào kiểm thử các ứng dụng lớn hơn trong thực tế công việc.

Xây dựng công cụ như một ứng dụng Web để có thể chạy trên nhiều hệ điều hành khác nhau.

Thu thập kinh nghiệm từ các kiểm thử viên để các ca kiểm thử hiệu quả và đầy đủ hơn.

PHỤ LỤC

Phụ lục 1 - Giới thiệu về Selenium

Selenium là một công cụ kiểm thử phần mềm tự động, được phát triển bởi ThoughtWorks vào năm 2004 với tên ban đầu là JavaScriptTestRunner. Đến năm 2007, tác giả Jasson Huggins rời ThoughtWorks và gia nhập Selenium Team một phần của Google và phát triển thành Selenium như hiện nay.

Cấu trúc của Selenium gồm 4 phần: Selenium IDE, Selenium RC (Selenium 1- Selenium Remote Control), Selenium Grid, Selenium WebDriver (Selenium 2).

Hình 4. 4. Cấu trúc của Selenium

Selenium hỗ trợ kiểm thử trên hầu hết các trình duyệt Web phổ biến hiện nay như: FireFox, Internet Explorer, Chrome và hỗ trợ trên rất nhiều ngơn ngữ lập trình phổ biến như: C#, Java, Python, PHP…. Khơng những như vậy, Selenium cịn có thể kết hợp với những công cụ kiểm thử khác như: TestNG, Junit, Nunit….

Các đặc điểm của Selenium:

các test tool khác. Vì là mã nguồn mở nên chúng ta có thể sử dụng mà khơng phải lo lắng về phí bản quyền hay thời hạn sử dụng.

- Các cơng cụ hỗ trợ: Vì là mã nguồn mở nên Selenium có một cộng đồng hỗ trợ khá mạnh mẽ. Bên cạnh đó, Google là nơi phát triển về Selenium nên chúng ta hồn tồn n tâm về sự hỗ trợ miễn phí khi có vấn đề về Selenium.

- Selenium hỗ trợ nhiều ngơn ngữ lập trình.

- Selenium hỗ trợ chạy trên nhiều hệ điều hành khác nhau với cùng một kịch bản. (Điều này phụ thuộc vào khả năng viết kịch bản của người viết). - Selenium không hỗ trợ trên Windows App. Selenium chỉ hỗ trợ chúng ta

tương tác với Browser mà không hỗ trợ chúng ta làm việc với các Windows App, kể cả Windows Dialog như Download/Upload. Do đó để xử lý các trường hợp cần tương tác với hệ thống hay một app thứ ba chúng ta cần một hay nhiều thư viện khác nhau như: AutoIT hay Coded UI.

Phụ lục 2 - Selenium IDE 1. Giới thiệu về Selenium IDE

Selnium IDE là một add-on của Mozilla FireFox phiên bản 2.0 trở lên, ban đầu được phát triển bởi Shinya Kasatani theo hướng sử dụng Selenium Core mà không cần cài đặt Selenium vào máy chủ ứng dụng. Nó được xây dựng sử dụng JavaScript, do vậy mà nó có thể tương tác với DOM (Document Object Model), sử dụng được những cách gọi Javascript.

Selenium cho phép ghi lại những hành động trong luồng công việc cần kiểm tra bằng các chức năng Record và Playback.

Selenium IDE cũng chứa một menu ngữ cảnh cho phép lựa chọn yếu tố giao diện người dùng từ các trình duyệt đang hiển thị trang và sau đó chọn từ một danh sách các lệnh Selenium và các thông số được xác định theo ngữ cảnh của phần giao diện người dùng lựa chọn.

2. Hướng dẫn cài đặt Selenium IDE

Để kiểm tra xem trên trình duyệt FireFox đã được cài đặt Selenium IDE. Người dùng có thể bật vào trình duyệt này và nhấp vào Tools MenBar. Quan sát trên mục menu đổ xuống xem đã có Selenium IDE hay chưa? Nếu chưa có thì thực hiện những bước sau để cài đặt Selenium IDE:

Bước 1: Vào trang http://seleniumhq.org/download để download Selenium IDE Bước 2: Sau khi cài đặt xong Selenium IDE, bạn có thể kích hoạt để sử dụng

bằng cách vào Menu Tools chọn Selenium IDE hoặc có thể dùng phím tắt (Ctrl + Alt + S).

Hình 4. 5. Thao tác mở Selenium IDE trên thanh cơng cụ

Màn hình chính của Selenium IDE sẽ như sau:

Giải thích một số kí hiệu của Selenium IDE:

• Base URL: Đây là nơi điền URL của ứng dụng web được tiến hành kiểm thử. • Thanh trượt: : Đây là thanh trượt nằm dưới nhãn trên màn hình. Dùng để điều chỉnh tốc độ nhanh/chậm khi chạy test case.

• Nút : Chạy tất cả các test case. • Nút : Chỉ chạy test case được chọn. • Nút : Tạm dừng một test case đang chạy.

• Nút : Bỏ qua một test case khi nó đã bị tạm dừng.

• Nút : Nút thu được sử dụng để thu các test case qua những thao tác bạn tác động đến trang web cần kiểm thử.

• Nút : Áp dụng quy tắc Rollup: tính năng tiên tiến cho phép lặp đi lặp lạcác câu lệnh Selenium được nhóm lại thành một hoạt động riêng lẻ. Tài liệu hướng dẫn chi tiết về quy tắc Rollup được trình bày ở mục UI-Element Documentation trên menu Help.

• Record: Sao chép lại hành động của chúng ta và ghi ra danh sách action. • Table/Source: Danh sách các action trong test case.

• Command: Danh sách các action mà Selenium IDE đang hỗ trợ. • Target: Định nghĩa control mà chúng ta đang tương tác.

• Value: Dữ liệu test.

• Log: Thơng tin về action đang được thực thi.

• Reference: Hướng dẫn sử dụng action đang được chọn.

• UI-Element and Rollup: Được sử dụng ở mức advance, khi mà chúng ta

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số kỹ thuật và công cụ kiểm thử ứng dụng trong kiểm thử tự động ứng dụng web (Trang 37)

Tải bản đầy đủ (PDF)

(69 trang)