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 1BỘ 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 2LỜ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 3LỜ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 4MỤ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 54 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 62.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 73.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 8DANH MỤC KÝ HIỆU CHỮ VIẾT TẮT
HTML (Hyper Text Markup
Trang 9DANH 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 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 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 10DANH 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 11PHẦ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 12PHẦ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 13o 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 14Trong đó, 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 153 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 16Nơ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
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 18từ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 20Sau đó 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 21trườ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 22Hì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 23Hì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 26Link 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 27Hì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 28phỏ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 29Bả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 30click 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 31CHƯƠ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 323) 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