1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu ứng dụng phương pháp và công cụ kiểm thử phần mềm tự động

65 43 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 65
Dung lượng 1,6 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Và ứng dụng Selenium Webdriver để xây dựng một phần mềm kiểm thửtự động website đáp ứng được nhu cầu của người dùng, đảm bảo được tính chính xác của công cụ kiểm thử và đặc biệt có thể á

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-

TÔ THỊ NGA

NGHIÊN CỨU - ỨNG DỤNG PHƯƠNG PHÁP VÀ CÔNG CỤ

KIỂM THỬ PHẦN MỀM TỰ ĐỘNG Chuyên ngành : Công nghệ thông tin

Trang 2

LỜI CAM ĐOAN

Tôi tên là: Tô Thị Nga, học viên lớp 2015B CNTT – Trường Đại học Bách Khoa

Hà Nội Tôi xin cam đoan toàn bộ nội dung của luận văn do tôi tự học tập, nghiên cứu trên Internet, sách báo, các tài liệu trong và ngoài nước có liên quan Không sao chép hay sử dụng bài làm của bất kỳ ai khác, mọi tài liệu đều được trích dẫn cụ thể Tôi xin chịu hoàn toàn trách nhiệm về lời cam đoan của mình trước Quý Thầy Cô, Khoa và Nhà trường

Hà Nội, ngày 22 tháng 11 năm 2017

Người cam đoan

Tô Thị Nga

Trang 3

LỜI CẢM ƠN

Lời đầu tiên tôi xin chân thành cảm ơn TS Nguyễn Thanh Hùng – Bộ môn Công nghệ phần mềm - Viện Công nghệ thông tin và truyền thông - Đại học Bách khoa Hà Nội người đã hướng dẫn vô cùng tận tình, tâm huyết để tôi có thể hoàn thành luận văn này

Tôi cũng chân thành cảm ơn các thầy cô trong bộ môn Công nghệ thông tin

đã tận tình chỉ bảo và giúp đỡ tôi trong suốt thời gian học và trong quá trình thực hiện luận văn này

Và cuối cùng tôi xin cảm ơn tất cả gia đình, bạn bè, những người đã sát cánh cùng chia sẻ với tôi những lúc khó khăn giúp tôi có động lực để hoàn thành tốt luận văn này

Học viên

Tô Thị Nga

Trang 4

MỤC LỤC

LỜI CAM ĐOAN 2

LỜI CẢM ƠN 3

DANH MỤC KÝ HIỆU CHỮ VIẾT TẮT 8

DANH MỤC BẢNG VẼ 9

DANH MỤC HÌNH VẼ 10

PHẦN MỞ ĐẦU 10

PHẦN NỘI DUNG 12

CHƯƠNG I : TÌM HIỂU TỔNG QUAN VỀ KIỂM THỬ TỰ ĐỘNG VÀ CÔNG CỤ TỰ ĐỘNG 12

1 Ý nghĩa, khái niệm kiểm thử tự động phần mềm 12

1.1 Kiểm thử tự động phần mềm là gì 12

1.2 Tại sao cần phải kiểm thử tự động phần mềm 12

2 Quy trình kiểm thử tự động phần mềm 13

2.1 Mô hình chung của kiểm thử tự động phần mềm 13

3 Một số công cụ kiểm thử phần mềm tự động 15

3.1 Nghiên cứu công cụ kiểm thử tự động QuickTest Professional 15

3.1.1 Loại phần mềm hỗ trợ 15

3.1.2 Các thành phần quan trọng của QTP 15

3.1.3 Ưu , nhược điểm của QTP 16

3.2 Nghiên cứu công cụ kiểm thử hiệu năng 17

3.2.1 Khái quát về kiểm thử hiệu năng 17

3.2.2 Nghiên cứu về công cụ Load Runner 17

Trang 5

4 Nghiên cứu công cụ Selenium 18

4.1 Tóm tắt lịch sử Selenium 18

4.2 Đặc điểm của Selenium 18

4.3 Cấu trúc Selenium 19

4.3.1 Selenium IDE (Integrated Development Environment) 19

4.3.2 Selenium Gird 20

4.3.3 Selenium RC 21

4.3.4 Selenium WebDriver 22

4.4 Ưu, nhược điểm của Selenium 23

4.4.1 Ưu điểm 23

4.4.2 Nhược điểm 24

5 Chi tiết về Selenium Webdriver 24

5.1 Tổng quan về đối tượng UI (Locators) 24

5.2 Cơ chế các script được viết ra bằng Selenium Webdriver 27

5.3 Các thư viện cần thiết để chạy SeleniumWebDriver 28

5.3.3 Các hàm xử lý chung trong SeleniumWebDriver 29

6.Kết luận chương 30

CHƯƠNG II TỰ ĐỘNG HÓA KỊCH BẢN KIỂM THỬ SỬ DỤNG SELENIUM ……….31

BÀI TOÁN ĐẶT RA 31

1 Ý tưởng bài toán: 31

2 Phân tích yêu cầu 32

2.1 Yêu cầu đặc tả 32

2.2 Biểu đồ Usecace 33

Trang 6

2.2.1 Đặc tả Usecase Import file Test Case 34

2.2.2 Đặc tả Usecase Import file Config 35

2.2.3 Đặc tả Usecase Chạy kịch bản kiểm thử 35

2.2.4 Đặc tả Usecase Dừng chạy kịch bản kiểm thử 36

2.2.5 Đặc tả Usecase Quản lý Test Case import 37

2.2.6 Đặc tả Usecase Xóa TestCase 38

2.2.7 Đặc tả Usecase Quản lý Test Result 38

2.3.Biểu đồ hoạt động 39

3 Triển khai vấn đề 40

3.1 Tạo Project sử dụng thư viện Maven 40

3.2 Tạo Page Object Model (POM) 41

3.2.1 Page Object làgì? 41

3.3 Cấu trúc project 42

4.Chuẩn bị môi trường kiểm thử 42

5.Chuẩn bị dữ liệu kiểm thử 44

6.Tạo file Cấu hình 46

7 Kết luận chương 47

CHƯƠNG III: TRIỂN KHAI VÀ KIỂM THỬ HỆ THỐNG 48

1 Cài đặt triển khai hệ thống 48

2 Kết quả 52

2.1 Giao diện của công cụ kiểm thử 52

2.2 Các tính năng hiển thị trên công cụ 53

2.3 Xuất kết quả kiểm tra 54

3 Kiểm thử phần mềm 55

Trang 7

3.1 Lên kế hoạch kiểm thử 55

3.2 Thiết kế kịch bản kiểm thử công cụ 56

3.2.1 Kiểm thử giao diện 56

3.2.2 Kiểm thử chức năng 56

4 Áp dụng kiểm thử 59

5 Kết luận chương 60

CHƯƠNG IV: ĐÁNH GIÁ KẾT QUẢ 62

1 Đánh giá kết quả 62

2 Hướng phát triển 63

KẾT LUẬN 64

TÀI LIỆU THAM KHẢO 65

Trang 8

DANH MỤC KÝ HIỆU CHỮ VIẾT TẮT

HTML (Hyper Text Markup

Language) Ngôn ngữ đánh dấu siêu văn bản

Trang 9

DANH MỤC BẢNG VẼ

Bảng 1 : Mô hình chung của kiểm thử tự động phần mềm 9

Bảng 4 : Thư viện cần thiết để chạy Selenium WebDriver 34

Bảng 6 : Các hàm thường sử dụng trong Selenium Webdriver 35 Bảng 7 : Đặc tả Usecase Import file Test Case 40

Bảng 9 : Đặc tả Usecase Chạy kịch bản kiểm thử 42 Bảng 10 : Đặc tả Usecase Dừng chạy kịch bản kiểm thử 42 Bảng 11 : Đặc tả Usecase Quản lý Test Case import 44

Bảng 13 : Đặc tả Usecase Quản lý Test Result 51

Bảng 16 : Test case chức năng Mua hàng online 57 Bảng 17 : Kết quả chạy kiểm thử export ra excel 53 Bảng 18 : Test Case kiểm thử chức năng phần mềm 55 Bảng 19 : Test Case kiểm thử chức năng phần mềm 57

Trang 10

DANH MỤC HÌNH

Hình 1.4.1 Sơ đồ cầu trúc Selenium 18

Hình 1.4.2 : Kiến trúc Selenium IDE 19

Hình 1.4.3 Tương tác của Selenium RC đến máy chủ 21

Hình 1.4.4 Tương tác của Selenium Webdriver 22

Hình 1.4.5 Xác định phần tử Web theo ID 24

Hình 1.4.6 Xác định phần tử Web theo Name 24

Hình 1.4.7 Xác định phần tử Web theo LinkText 25

Hình 1.4.8 Xác định phần tử Web theo TagName 25

Hình 1.4.9 Xác định phần tử Web theo ClassName 26

Hình 1.4.10 Xác định phần tử Web theo CSS 26

Hình 2.1 Mô hình ý tưởng của phần mềm 30

Hình 2.2.1 Usecase tổng quan cho hệ thống 32

Hình 2.2.2 Biểu đồ hoạt động cho flow kiểm thử website dựa theo kịch bản 38

Hình 2.3.1 Cấu trúc POM 39

Hình 2.3.3 Cấu trúc Project 42

Hình 2.4.1 Màn hình đăng ký 42

Hình 2.4.2 Màn hình Login tài khoản học viên 43

Hình 2.4.3 Luồng kiểm thử nghiệp vụ đặt hàng trên website tiki 43

Hình 2.5.1 File cấu hình 45

Hình 3.2.1 Giao diện phần mềm 51

Hình 3.2.2 Kết quả export ra html 54

Trang 11

PHẦN MỞ ĐẦU

Thế giới CNTT đang trong giai đoạn bùng nổ phát triển, các công ty phát triển phần mềm muốn hòa nhập cùng xu hướng này cần phát triển phần mềm đáp ứng nhu cầu ngày càng cao của người sử dụng, ngoài ra các công ty phần mềm cũng cần phát triển mô hình kinh doanh theo quy trình chuẩn Do đó, kiểm thử phần mềm và quy trình phần mềm chuẩn là xu hướng phát triển mới hiện nay

Để tạo ra sản phẩm công nghệ thông tin hay phần mềm có chất lượng thì hoạt động kiểm thử phần mềm đóng vai trò rất quan trọng, trong khi đó hoạt động này lại tiêu tốn và chiếm tỷ trọng khá lớn công sức và thời gian trong một dự án

Qua thực tế cho thấy, có rất nhiều công cụ trong việc kiểm thử tự động phần mềm đáp ứng được việc giảm nhân lực, giảm thời gian, hạn chế sai sót Tuy nhiên , vẫn cần phải thao tác từng testcase với việc xây dựng kịch bản bởi script và hầu như việc đó luôn đòi hỏi người kiểm thử phải có khả năng về lập trình

Đề tài “NGHIÊN CỨU - ỨNG DỤNG PHƯƠNG PHÁP VÀ CÔNG CỤ KIỂM THỬ PHẦN MỀM TỰ ĐỘNG” nhằm đưa ra cái nhìn tổng quan về lĩnh vực kiểm thử tự động, giới thiệu về một số loại công cụ kiểm thử Và ứng dụng Selenium Webdriver để xây dựng một phần mềm kiểm thửtự động website đáp ứng được nhu cầu của người dùng, đảm bảo được tính chính xác của công cụ kiểm thử và đặc biệt có thể áp dụng cho những người không có nhiều kiến thức về lập trình

Nội dung luận văn bao gồm :

Chương 1 : Tìm hiểu tổng quan về kiểm thử tự động và công cụ tự động Chương 2 : Tự động hóa kịch bản kiểm thử sử dụng Selenium

Chương 3 : Triển khai và kiểm thử hệ thống

Chương 4 : Đánh giá kết quả

Trang 12

PHẦN NỘI DUNG CHƯƠNG I : TÌM HIỂU TỔNG QUAN VỀ KIỂM THỬ TỰ ĐỘNG VÀ

cụ kiểm thử tự động có thể lấy dự liệu từ file bên ngoài (excel, csv, …) nhập vào ứng dụng, so sánh kết quả mong đợi (từ excel, csv) với kết quả thực tế và xuất ra báo cáo kết quả kiểm thử Nó giúp các kỹ sư kiểm thử (người kiểm thử) không phải lặp đi lặp lại các bước nhàm chán

1.2 Tại sao cần phải kiểm thử tự động phần mềm

Kiểm thử phần mềm tự động với mục đích :

 Giảm bớt công sức và thời gian thực hiện quá trình kiểm thử

 Tăng độ tin cậy

 Giảm sự nhàm chán cho con người

 Rèn luyện kỹ năng lập trình cho kiểm thử viên

 Giảm chi phí cho tổng quá trình kiểm thử

Khi nào cần kiểm thử tự động phần mềm?

 Không đủ tài nguyên:

o Những trường hợp kiểm thử cần thực hiện nhiều lần, thường xuyên phải thực hện regression test, một số lượng testcase lớn cần thực hiện trong một thời gian ngắn

o Kiểm thử cần thực hiện ở nhiều môi trường khác nhau

o Những project có tính ổn định, đặc điểm kĩ thuật được xác định trước, test màn hình chức năng không thay đổi trong tương lai

o Những trường họp kiểm thử xác nhận hoạt động cơ bản (di chuyển giữa các màn hình)

Trang 13

o Kiểm tra sự kết hợp của nhiều giá trị đầu vào ở một bước nào đó

o Kiểm tra nhiều màn hình của dữ liệu đầu vào

 Kiểm tra hồi quy: Nâng cấp phần mềm, kiểm tra lại các tính năng đã chạy tốt và những tính năng đã sửa Tuy nhiên, việc này khó đảm bảo về mặt thời gian

 Kiểm tra khả năng vận hành phần mềm trong môi trường đặc biệt:

o Đo tốc độ trung bình xử lý một yêu cầu của Web server

o Xác định số yêu cầu tối đa được xử lý bởi Web Server

o Xác định cấu hình máy thấp nhất mà phần mềm vẫn có thể hoạt động tốt

2 Quy trình kiểm thử tự động phần mềm

2.1 Mô hình chung của kiểm thử tự động phần mềm

Kiểm thử tự động phần mềm bao gồm một chuỗi các quá trình, các hoạt động, thao tác được quy tụ với nhau để thực hiện phần mềm cần kiểm thử và ghi lại kết quả kiểm thử

Bảng 1 :Mô hình chung của kiểm thử tự động phần mềm

Test data generator

Specification

Ocracle Test

Test predictions

Test data Source code

Program being tested

Test result

Execution

report

Test results report

Trang 14

Trong đó, các công cụ được dùng để tự động hóa quy trình kiểm thử trong mô hình kiểm thử thực hiện các chức năng:

 Test Manager: quản lý việc thực hiện các kiểm thử của chương trình, theo dõi dữ liệu kiểm thử, kết quả mong đợi và các chức năng, tiện ích của chương trình được kiểm thử

 Test data generator: sinh dữ liệu kiểm thử cho chương trình

 Oracle: tạo các phán đoán của kết quả mong đợi Chú ý, ở đây không phải là cơ

Bảng dưới đây mô tả các bước của quá trình kiểm thử tự động

1 Tạo kịch bản kiểm thử Giai đoạn này dùng công cụ kiểm thử để

ghi lại các thao tác lên phần mềm cần kiểm tra và tự động sinh ra các kịch bản kiểm thử

2 Chỉnh sửa kịch bản kiểm thử Chỉnh sửa kịch bản kiểm thử thực hiện

kiểm tra theo đúng yêu cầu đặt ra Cụ thể,

là làm theo các trường hợp kiểm thử cần thực hiện

Trang 15

3 Chạy kịch bản kiểm thử Chạy kịch bản kiểm thử để kiểm tra phần

mềm có đưa ra đúng như kết quả mong muốn không

4 Đánh giá kết quả Đánh giá kết quả sau khi chạy kịch bản

3.1.1 Loại phần mềm hỗ trợ

QTP hỗ trợ nhiều loại phần mềm:

 Ứng dụng windowns chuẩn/win 32

 Ứng dụng web theo chuẩn HTML/XML chạy trên nhiều trình duyệt

 Sử dụng Visual basic, hỗ trợ Unicode

 Một số chương trình khác đòi hỏi cài đặt thêm các thư viện

3.1.2 Các thành phần quan trọng của QTP

Action

Giống như hàm hoặc thủ tục trong các ngôn ngữ lập trình khác, Action ghi lại các bước thực hiện kiểm thử tự động và nó có thể được sử dụng lại nhiều lần Trong một test script có thể có nhiều Action

Data table

Trang 16

Nơi lưu dữ liệu phục vụ cho kiểm thử tự động Một test script sẽ có một Data Table được dùng chung cho tất cả các Action Bên cạnh đó, mỗi Action cũng có

một Data Table cho riêng mình

Object Repository (OR)

Cấu trúc theo dạng cây, mô tả các đối tượng trong phần mềm được kiểm tra Đây được xem là cầu nối để test script tương tác với phần mềm được kiểm tra Khi

ra lệnh cho QTP ghi lại các thao tác người dùng lên phần mềm thì trong OR sẽ tự động phát sinh thành phần đại diện cho những đối tượng trên phần mềm vừa được thao tác OR có thể tổ chức thành 2 loại, một loại dùng chung cho nhiều test script, loại khác dùng theo từng Action Để xem OR, chọn menu Tools > Object

Repository

Checkpoint

Có thể hiểu là nơi kiểm tra trong test script, khi chạy nó sẽ thực hiện so sánh kết quả thực tế khi kiểm tra phần mềm với kết quả mong đợi Sau khi tiến hành so sánh QTP sẽ tự động ghi lại kết quả vào Test Results (nơi lưu kết quả khi chạy test script)

3.1.3 Ưu , nhược điểm của QTP

 Thực hiện kiểm thử tự động nhiều trình duyệt cùng một lúc

 Quản lý các điều kiện kiểm thử, xử lý ngoại lệ, cho phép kiểm thử hướng dữ liệu tốt

Trang 17

 QTP mất phí nên công cụ này không được sử dụng rộng rãi

3.2 Nghiên cứu công cụ kiểm thử hiệu năng

3.2.1 Khái quát về kiểm thử hiệu năng

Performance Testing là một loại kiểm thử nhằm xác định mức độ đáp ứng, băng thông, độ tin cậy hoặc khả năng mở rộng của hệ thống dưới một khối lượng làm việc truy cập nhất định Performance Testing thường được sử dụng để:

● Đánh giá mức độ sẵn sàng của sản phẩm

● Đánh giá dựa vào các tiêu chí hiệu suất

● So sánh giữa các đặc tính hiệu suất của đa hệ thống hoặc cấu hình hệ thống

● Tìm ra nguồn gốc của các vấn đề về hiệu suất

Controller Tổ chức, điều chỉnh, quản lý và giám sát hoạt động kiểm tra

tải Thành phần này có chức năng tạo ra những tình huống (scenario) kiểm tra

Load Generator Cho phép giả lập hàng ngày người dùng, hoạt động của

Trang 18

từng người sẽ được thực hiện theo VuGen script Kết quả thực hiện sẽ được thông báo cho Controller

Analysis Cung cấp việc xem, phân tích và so sánh các kết quả

Launcher Nơi tập trung tất cả các thành phần của LoadRunner cho

người dùng

Bảng 3 : Các thành phần của Load Runner

4 Nghiên cứu công cụ Selenium

4.1 Tóm tắt lịch sử Selenium

Selenium được đưa vào sử dụng lần đầu tiên vào năm 2004 khi Jason Huggins

đã thử nghiệm một ứng dụng nội bộ tại ThoughtWorks Anh ta đã phát triển thư viện Javascript mà có thể điều chỉnh tương tác với các trang, cho phép anh ta chạy

tự động đối với nhiều trình duyệt Thư viện đó cuối cùng trở thành Selenium core, nằm dưới mọi chức năng của của Selenium Remote Control và selenium IDE Năm 2006, một kỹ sư tài năng tại Google tên là Simon Stewart bắt đầu công việc trên một dự án mà cậu ta gọi là WebDriver Cho đến năm 2008, Seleium đã trở thành cộng đồng lớn và hỗ trợ thương mại

4.2 Đặc điểm của Selenium

Selenium là bộ công cụ mã nguồn mở, mạnh mẽ, hỗ trợ các ứng dụng trên nền web, nhiều platform và các trình duyệt phổ biến Nó gồm nhiều công cụ với cách tiếp cận khác nhau để hỗ trợ kiểm thử tự động Bộ công cụ này rất linh hoạt cho phép lựa chọn các yếu tố giao diện hay so sánh kết quả thí nghiệm dự kiến với thực tiễn Selenium hỗ trợ kiểm tra hầu hết trên các trình duyệt phổ biến hiện nay như Firefox,Internet Explorer, Safari, cũng như các hệ điều hành chủ yếu như Windows, Linux , Mac , và hỗ trợ một số lớn các ngôn ngữ lập trình như C# , Java , Perl , PHP , Python, Ruby

Selenium có thể kết hợp thêm với một số công cụ khác như Bromien , Junit nhưng với người dùng thông thường chỉ cần chạy tự động mà không cần cài thêm các công

cụ bổ trợ

Trang 19

 Selenium WebDriver (Selenium 2)

Hình 1.4.1 Sơ đồ cầu trúc Selenium

4.3.1 Selenium IDE (Integrated Development Environment)

Selenium IDE là công cụ giúp bạn phát triển ca kiểm thử được xây dựng dưới dạng add-ons của Fire-fox Nó là cách tiện lợi nhất để xây dựng các ca kiếm thử, gồm các phần tử giao diện giúp chúng ta có thể lựa chọn thể hiện các thao tác, không chỉ tiết kiệm thời gian mà còn là cách thông minh để hiểu kịch bản Selenium

Bộ công cụ này cung cấp chức năng “thu và chạy lại” Record and Playback Nhờ

đó người kiểm thử có thể nhanh chóng tạo một bộ kịch bản kiểm tra (test script) bằng cách trực tiếp “thu” các thao tác của mình trên đối tượng cần kiểm tra thành một tập những câu lệnh “Selenese” ( ngôn ngữ kịch bản được phát triển cho Selenium IDE và Selenium Core – có dạng bản HTML )

Trang 20

Sau đó chạy lại các câu lệnh này để kiểm tra Chức năng năng này rất hữu dụng , cho phép tiết kiệm thời gian viết kịch bản kiểm tra Selenium IDE cho phép lưu kịch bản đã thu dưới nhiều loại ngôn ngữ lập trình Selenium IDE có kiến trúc gồm Browser và Web Server như hình:

Hình 1.4.2 Kiến trúc Selenium IDE 4.3.2 Selenium Gird

Selenium Grid cho phép các giải pháp Selenium RC để kiểm tra trên quy mô lớn và dành cho việc kiểm thử và phải chạy trong nhiều môi trường Selenium Grid cho phép chạy các trường hợp kiểm tra song song, tức là các trường hợp kiểm tra khác nhau có thể chạy tại một thời điểm trên các máy từ xa khác nhau Điều này có hai lợi thế Thứ nhất, trường hợp có bộ dữ liệu kiểm tra lớn hoặc bộ dữ liệu kiểm tra chạy chậm, tacó thể tăng hiệu suất nó đáng kể bằng cách sử dụng Selenium Grid tới việc phân chia các trường hợp kiểm tra để chạy các trường hợp kiểm tra khác nhau tại một thời điểm và trên nhiều máy khác nhau

Như vậy, nếu chạy các trường hợp kiểm tra trên nhiều môi trường, ta có thể hỗ trợ các máy từ xa khác nhau và thực hiện chúng tại một thời điểm Trong mỗi trường hợp Selenium Grid cải thiện được nhiều thời gian mà nó phải chạy cho các

Trang 21

trường hợp kiểm tra bằng cách sử dụng tiến trình song song

4.3.3 Selenium RC

Với bộ công cụ này cho phép nhận các Test script được thu bởi Selenium IDE, cho phép chỉnh sửa cải tiến linh động bằng ngôn ngữ lập trình khác nhau Sau đó khởi động một trong các trình duyệt web được chỉ định để thực thi kiểm tra trực tiếp trên trình duyệt đó Selenium RC còn cung cấp khả năng lưu lại kết quả kiểm tra

Selenium RC là một thư viện phổ biến cho việc kiểm tra tự động hóa giao diện User Interface(UI ), cho phép các nhà phát triển và người kiểm tra tự động tương tác của

họ với việckiểm thử ứng dụng WebWeb Application Under Test (WAUT) bởi chương trình được cung cấp các thư viện cần thiết, được hỗ trợ bằng nhiều ngôn ngữ,chương trình

Về mặt thiết kế, Selenium RC đã chọn sử dụng chung loại JavaScript có tên là SeleniumCore để điều khiển WAUT trên trình duyệt Tuy nhiên, quyết định sử dụng chung JavaScript có thể điều khiển WAUT trên bất kỳ trình duyệt nào phải tuân thủ

chính sách bảo mật có tên là Same-Origin Policy

Selenium RC hoạt động như một máy chủ proxy HTTP Khi kịch bản thử nghiệm yêu cầu khởi chạy trình duyệt, máy chủ Selenium RC khởi chạy trình duyệt và đưa vào JavaScript (Selenium Core) vào trình duyệt Tất cả các yêu cầu tiếp theo cho WAUT đi thông qua Selenium RC (hoạt động như một máy chủ HTTP Proxy) tới máy chủ web thực lưu trữ WAUT Do đó làm cho trình duyệt nghĩ rằng ứng dụng web đang được được phục vụ từ miền máy chủ của Selenium RC so với tên miền của máy chủ web thực và cho phép Selenium Core thực hiện và điều khiển ứng dụng web

Trang 22

Hình 1.4.3 Tương tác của Selenium RC đến máy chủ

4.3.4 Selenium WebDriver

Với Selenium IDE, chúng ta có thể ta ̣o được các test case ở mức đơn giản với Record-Playback Bằng cách sử du ̣ng thêm các add-on bên ngoài, chúng ta có thể tiến hơn mô ̣t bước trong viê ̣c sử du ̣ng cấu trúc điều khiển để test case linh đô ̣ng hơn Tuy nhiên, các add-on không thực sự ma ̣nh trong điều khiển workflow của test case Để bù đắp viê ̣c này, Selenium cung cấp cho chúng ta hai loa ̣i thư viê ̣n để sử du ̣ng mã nguồn của Selenium khi tương tác với ứng du ̣ng Web: Selenium Remote Control (Selenium RC) và Selenium WebDriver (Selenium 2)

Về cơ bản thì cả hai loa ̣i Selenium này đều cho phép chúng ta sử du ̣ng các ngôn ngữ lâ ̣p trình – Java; Net; PHP; Python; Perl; Ruby – để thiết kế test script

Trang 23

Hình 1.4.4 Tương tác của Selenium Webdriver

4.4 Ưu, nhược điểm của Selenium

● Selenium cho phép viết test scripts ở nhiều ngôn ngữ từ : Java, C#, Perl, Python, Ruby, PHP…

Trang 24

● Selenium hỗ trợ nhiều hệ điều hành : Windows, Linux, Macintosh (viết Test Cases có thể deploy ở các hệ điều hành khác)

● Selenium hỗ trợ nhiều trình duyệt lớn (Mozilla, Chrome, IE, Opera, Safari )

● Selenium là công cụ test tự động recording, editing và debugging

● Khó cài đặt mội trường Test Selenium hơn Silk Test,

● Ít hỗ trợ cho việc Test hình ảnh

5 Chi tiết về Selenium Webdriver

5.1 Tổng quan về đối tượng UI(Locators)

Trong kiểm thử tự động, phần quan trọng là phải làm sao cho công cụ kiểm thử nhận biết và phân biệt được các đối tượng UI trên phần mềm mà chúng ta đang kiểm tra Trong kiểm thử, đây là xây dựng bộ giao diện người dùng ( build GUI Repositories)

Để có thể tạo một GUI Repository tốt, cần xác định mô tả vật lý của đối tượng UI một cách chính xác, đơn nhất và ổn định Tính chính xác, đơn nhất của mô tả vật lý dùng để đảm bảo các script viết ra có thể chạy một cách đúng đắn Tính ổn định giúp người dùng không phải chỉnh sửa nhiều khi phần mềm có sự thay đổi

Đối Tượng UI – Locators

Selenium hỗ trợ xác định UI dựa trên các thuộc tính, và gọi một cách xác định đối tượng UI thông qua thuộc tính của nó là locator, như sau:

 ID

 Name

 Link Text

 CSS Selector

Trang 25

Đối với ID, đây được coi như là thuộc tính đơn nhất và ổn định nhất của hệ thống

phần mềm Nếu có thể sử dụng ID cho việc xác định UI thì quá tốt Nhưng, tất cả chúng ta đều biết, hiếm có một nhà phát triển phần mềm nào lại chăm chỉ đến mức gắn ID cho mọi đối tượng UI Đơn giản là vì ID không phải là một thuộc tính bắt buộc và nó không hiện thị trên giao diện nên bên viết ra phần mềm không chú ý đến

nó cũng là hiển nhiên

Hình 1.4.5 Xác định phần tử Web theoID

Về phần Name, Name là lựa chọn thứ hai sau ID Tuy nhiên, thuộc tính Name đôi

khi không đơn nhất Không có một ràng buộc nào bắt Name phải đơn nhất cả

Hình 1.4.6 Xác định phần tử Web theoName

Trang 26

Link Text, Thuộc tính Link Text là không đơn nhất và cũng không ổn định Một

trang web có thể có nhiều liên kết đến một trang khác hay thay đổi từ ngữ nhưng không đổi ý nghĩa

Hình 1.4.7 Xác định phần tử Web theo LinkText

CSS Selector, Sử dụng CSS là chúng ta phụ thuộc vào cách thiết kế web của nhà

phát triển CSS Selector không đơn nhất Không một nhà phát triển nào tạo ra một CSS để dùng cho một đối tượng Cho nên, chúng ta phải kết hợp CSS với Tag/ID, Tag/class, …

Hình 1.4.8 Xác định phần tử Web theoTagName

Trang 27

Hình 1.4.9 Xác định phần tử Web theoClassName

Hình 1.4.10 Xác định phần tử Web theo CSS

Cuối cùng, XPath Đây được xem như là thuộc tính hay dùng nhất của Selenium

Tuy nhiên, cách này lại thiếu chính xác, thiếu đơn nhất và thiếu ổn định nhất trong tất cả các cách xác định đối tượng UI

5.2 Cơ chế các script được viết ra bằng Selenium Webdriver

1) Để Selenium driver có thể mô phỏng hành động như click chuột hay điền giá trị, đầu tiên nó phải xác định được vị trí của element (phần tử) trên trang web mà nó

sẽ tương tác (dựa vào các thẻ html)

2) Sau khi đã xác định được vị trí, thì sẽ xác định hành động đối với element đó (thông qua các API được viết sẵn trong các gói thư viện của Webdriver, như đã nói ở trên)

3) Sau khi hoàn thành 1 list các hành động theo trình tự ( giống như thực hiện với manual test), ta sẽ kiểm tra xem trang web có thực hiện đúng hay không

Ví dụ: Kiểm tra chức năng login

1) Cần phải xác định được vị trí của các element: Username, Password và Submit Button và nói cho Webdriver biết vị trí của từng hạng mục

2) Hành động đối với Username và Password là nhập dữ liệu, ta sẽ dùng các phương thức nhập dữ liệu Với Submit Button thì ta dùng phương thức mô

Trang 28

phỏng Click chuột

3) Viết câu lệnh kiểm tra xem với dữ liệu nhập vào thì login có thành công hay không bằng cách xem nó có chuyển sang page khác hay vẫn ở lại page Login … Với thao tác bình thường, ta rất dễ có thể kiểm tra được xem Login như thế là Fail hay Pass nhưng với tự động, việc đó tương đối khó khăn

Khi run Script, điều gì sẽ xảy ra?

Khi viết xong script, muốn run để xem thử có bao nhiêu TC fail hay pass Khi run, Selenium driver sẽ gọi trực tiếp (direct call) trình duyệt thông qua driver của chính trình duyệt đó (chromedriver, firefoxdriver…) Sau đó các hành động trên script sẽ được thực thi

Chi tiết của việc direct call:

 Với mỗi 1 hành động từ script, một HTTP request sẽ được tạo ra

 HTTP request đó gửi đến browser driver

 Mỗi browser driver sẽ có 1 HTTP server để nhận lấy HTTP request

 Sau khi nhận, HTTP server xác định những bước cần thiết để thực thi hành động phản hồi lại request

 HTTP server thực thi những bước ở trên

 Sau đó, HTTP server trả lại trạng thái thực hiện những hành động cho client, nơi đang run script

5.3 Các thư viện cần thiết để chạy SeleniumWebDriver

5.3.1 Danh sách các thư viện Selenium WebDriver cần càiđặt

Trang 29

Bảng 4 : Thư viện cần thiết để chạy Selenium WebDriver

5.3.2 Sử dụng Maven để cài đặt các thư viện

Cách dễ nhất để thiết lập Selenium 2.0 Java project là sử dụng Maven Maven sẽ tải

về java bindings ( thư viện java client của selenium 2.0) và tất cả những phần liên quan Sau đó nó sẽ tạo cho chúng ta một project sử dụng file maven pom.xml (project configuration)

5.3.3 Các hàm xử lý chung trong SeleniumWebDriver

Locate element sử dụngWebDriver

By.className Value class attribute findElement(By.className("someClassName"))

By.cssSelector Locator bằng css findElement(By.cssSelector("input#email")) By.id Value của id attribute findElement(By.id("someId"))

By.linkText Locator bằng value findElement(By.linkText("REGISTRATION")) By.tagName Name của tag findElement(By.tagName("div"))

By.xpath Locator bằng xpath findElement(By.xpath("//html/body/div")

By.name Value name attribute findElement(By.name("someName"))

Bảng 5 : Locate element sử dụng WebDriver Các hàm hay sửdụng

init webdriver WebDriver driver = new FirefoxDriver();

open url driver.get(baseUrl);

init webelement WebElement

element=driver.findElement(By.className("someClassName"))

Trang 30

click an element driver.findElement(By.className("someClass

Name")).click() type text to textbox driver.findElement(By.className("someClassName"))

sendkey(“test”) refresh current page driver.navigate().refresh()

back page driver.navigate().back()

forward page driver.navigate().forward()

close browser driver.close() or driver.quit()

Bảng 6 : Các hàm thường sử dụng trong Selenium Webdriver

6 Kết luận chương

Việc tìm hiểu khái quát về kiểm thử phần mềm tự động và một số công cụ kiểm thử

tự động giúp chúng ta có cái nhìn tổng quan về kiểm thử tự động Hiểu về mục đích, khi nào thì sử dụng công cụ kiểm thử tự động Ngoài ra, ở chương này, có đi sâu vào việc phân tích công cụ kiểm thử Selenium, nhằm phục vụ cho việc áp dụng, giải quyết vấn đề ở bài toán của chương sau

Trang 31

CHƯƠNG II TỰ ĐỘNG HÓA KỊCH BẢN KIỂM THỬ SỬ DỤNG

SELENIUM

BÀI TOÁN ĐẶT RA

Ứng dụng Selenium Webdriver để xây dựng một phần mềm kiểm thử tự động cho một số chức năng cơ bản của website hay nghiệp vụ hoạt động của một hệ thống

1 Ý tưởng bài toán:

Mặc dù Selenium là một công cụ kiểm thử tự động, tuy nhiên thì người dùng vẫn cần thao tác với từng test-case riêng rẽ Với số lượng test case lớn, và trong kiểm thử hồi quy, thì mất nhiều sức người và thời gian để thực hiện việc này Do

đó ý tưởng của bài toán là xây dựng một module kết nối với Selenium, đầu vào là một file chứa toàn bộ test case, các test case này sẽ được kiểm thử tự động bởi selenium và đầu ra sẽ là kết quả tương ứng

Hình 2.1 Mô hình ý tưởng của phần mềm

Trang 32

3) Thực hiện kiểm thử tự động tất cả các test case chứa trong file

4) Đầu ra sẽ là kết quả các trường hợp kiểm thử File kết quả được lưu dưới dạng file excel hoặc html

Như vậy, để thực hiện được ý tưởng trên, cần xây dựng một công cụ giúp kiểm thử

tự động, đảm bảo được các tính năng :

● Hỗ trợ plugin mở rộng, không phải tạo lại các script cho mỗi kịch bản kiểm thử

● Có chức năng import file Testcase , file cấu hình

● Có chức năng export ra file kết quả test Kết quả có thể xem được dưới dạng file excel hoặc xem thống kê trên website

● Giao diện của công cụ dễ nhìn, dễ sử dụng, phục vụ được cho tất cả các đối tượng có thể không biết về lập trình

2 Phân tích yêu cầu

2.1 Yêu cầu đặc tả

a Các tác nhân chính của hệ thống:

User (Người kiểm thử)

Người kiểm thử là những người sử dụng công cụ kiểm thử tự động thực hiện việc kiểm tra kịch bản kiểm thử cho các chức năng của một website

Website

Là đối tượng để hệ thống thực thi kiểm tra chức năng

b Các chức năng chính của hệ thống:

Requirement - Yêu cầu

Hệ thống sẽ quản lý các yêu cầu theo từng phiên bản của Project, các yêu cầu sẽ được chiatheo các module

Ngày đăng: 22/01/2021, 12:36

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Alan Richardson (2013), Java for Tester , Albans, United Kingdom Sách, tạp chí
Tiêu đề: ), Java for Tester
Tác giả: Alan Richardson
Năm: 2013
2. David Burns (2010) , Selenium 1.0 Testing Tool , 32 Lincoln Road Olton Birmingham, B27 6PA, UK Sách, tạp chí
Tiêu đề: Selenium 1.0 Testing Tool
3. Kanglin Li and Menqi Wu (2004), Effective Software Test Automation: Developing an Automated Software Testing Tool, Sybex, San Francisco Sách, tạp chí
Tiêu đề: Effective Software Test Automation: "Developing an Automated Software Testing Tool
Tác giả: Kanglin Li and Menqi Wu
Năm: 2004
4. Mark Fewster andDorothy Graham (1994), Software Test Automation Effective use of test execution tools, Copyright @ by ACM Press, Great Britain Sách, tạp chí
Tiêu đề: Software Test Automation Effective use of test execution tools
Tác giả: Mark Fewster andDorothy Graham
Năm: 1994
5. Myers and Glenford (1979), The Art of Software Testing, Willey, New York Sách, tạp chí
Tiêu đề: The Art of Software Testing
Tác giả: Myers and Glenford
Năm: 1979
6. Ron Patton (2005), Software Testing, Sams Publishing, the United States of America Sách, tạp chí
Tiêu đề: Software Testing
Tác giả: Ron Patton
Năm: 2005
7. Satya Avasarala (2014), Selenium WebDriver Practical Guide, Livery Place 35 Livery Street Birmingham B3 2PB, UK Sách, tạp chí
Tiêu đề: Selenium WebDriver Practical Guide
Tác giả: Satya Avasarala
Năm: 2014
8. Automation FC , Selenium Webdriver , https://daominhdam.wordpress.com/category/selenium/selenium-webdriver Sách, tạp chí
Tiêu đề: Selenium Webdriver
9. Selenium HQ Browser Automation , Mave Information, http://docs.seleniumhq.org/download/maven.jsp Sách, tạp chí
Tiêu đề: Mave Information
10. Selenium Easy , Selenium Tutorials , http://www.seleniumeasy.com Sách, tạp chí
Tiêu đề: Selenium Tutorials

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w