Trịnh Công Nhựt, giảng viên bộ mônhọc kiểm thử và đảm bảo chất lượng phần mềm - Đại học Công Nghệ Tp.HCM, thầy đã tậntình hướng dẫn, chỉ bảo chúng em trong suốt quá trình học tập và làm
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCMKHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN KIỂM THỬ VÀ ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM
Đề tài: SELENIUM CLIENT API
Website kiểm thử: https://30shine.com/
Giảng viên hướng dẫn: ThS Trịnh Công Nhựt
Sinh viên thực hiện:
TP Hồ Chí Minh, 10/2022
Trang 2Mục Lục
MỤC LỤC HÌNH 2
LỜI NÓI ĐẦU 3
CHƯƠNG 1: SELENIUM CLIENT API 4
1.1 Giới thiệu 4
1.1.1 Selenium Client API Là Gì ? 4
1.1.2 Selenium IDE và Selenium WebDriver 4
1.1.3 REST API TESTING 5
1.1.4 Những hạn chế của Selenium 5
1.2 Cài đặt (link download, hướng dẫn cài đặt) 5
1.3 Hướng dẫn sử dụng và các tính năng 6
1.3.1 Hướng Dẫn Sử Dụng 6
1.3.2 Các Tính năng 8
1.4 Minh họa (demo) 10
CHƯƠNG 2: TEST CASES 13
2.1 Giới thiệu Selenium IDE 13
2.2 Tóm tắt test case (Tiếng việt / Tiếng anh): 15
2.3 Chi tiết Test case: 16
2.4 Thống kê các lỗi tìm được: 21
CHƯƠNG 3: KẾT LUẬN 22
TÀI LIỆU THAM KHẢO 23
1
Trang 3MỤC LỤC HÌNH
Hình 1: API ứng dụng khách Selenium WebDriver cho các nhà phát triển chương trình
Selenium WebDriver 4
Hình 2: selenium-webdriver 6
Hình 3: Cài đặt selenium- webdriver thành công 6
Hình 4:Hàm tự động nhập dữ liệu và create POST Request lên api 7
Hình 5: Hàm gửi Request POST lên api 7
Hình 6: Hàm tự động tìm kiếm GET Request api user id=3 7
Hình 7: Web driver 8
Hình 8: Cộng đồng Selenium 8
Hình 9: Web Driver API 9
2
Trang 4LỜI NÓI ĐẦU
Trong quá trình học tập và làm đồ án, nhóm em đã nhận được nhiều sự giúp đỡ, đóng góp
ý kiến và chỉ bảo nhiệt tình của thầy ThS Trịnh Công Nhựt
Em xin gửi lời cảm ơn chân thành đến thầy ThS Trịnh Công Nhựt, giảng viên bộ mônhọc kiểm thử và đảm bảo chất lượng phần mềm - Đại học Công Nghệ Tp.HCM, thầy đã tậntình hướng dẫn, chỉ bảo chúng em trong suốt quá trình học tập và làm đồ án môn học và nhóm
em cảm ơn thầy một lần nữa đã hướng dẫn, dạy dỗ cho tụi em kiến thức mới mẻ giúp em cóđược cơ sở lý thuyết vững vàng và tạo điều kiện giúp đỡ em trong suốt quá trình học tập.Mặc dù đã cố gắng hoàn thành đề tài tốt nhất nhưng do thời gian và kiến thức còn có hạnnên tụi em sẽ không thể tránh khỏi những thiếu sót nhất định, rất mong nhận được sự cảmthông và chia sẻ và tận tình đóng góp chỉ bảo của quý thầy cô cũng như các bạn
3
Trang 5CHƯƠNG 1: SELENIUM CLIENT API
1.1.1 Selenium Client API Là Gì ?
Selenium WebDriver Client APIs là các thư viện hoặc mô-đun được cung cấp bởiSelenium Org cho phép truy cập các giao diện giao tiếp WebDriver từ các ứng dụng kháchbằng các ngôn ngữ lập trình khác nhau
Selenium WebDriver Client APIs còn được gọi là "Selenium Client & WebDriverLanguage Bindings" Hiện tại, 5 API được cung cấp để hỗ trợ 5 ngôn ngữ lập trình: Java, C #,Ruby, Python và JavaScript
Các API ứng dụng khách WebDriver cho các ngôn ngữ khác cũng có sẵn Nhưng chúngđược cung cấp bởi bên thứ ba
Bên dưới cho bạn thấy cách sử dụng các API ứng dụng khách Selenium WebDriver chocác nhà phát triển chương trình Selenium WebDriver để truy cập và kiểm soát các trình duyệtWeb
Hình 1: API ứng dụng khách Selenium WebDriver cho các nhà phát triển chương trình Selenium WebDriver
1.1.2 Selenium IDE và Selenium WebDriver
Selenium IDE là một FrameWork Selenium IDE chỉ nên được sử dụng như là một công
cụ tạo mẫu Nếu bạn muốn tạo các trường hợp kiểm thử nâng cao hơn, bạn sẽ cần phải sử dụngSelenium RC hoặc WebDriver
4
Trang 6Selenium WebDriver là một automation FrameWork dành cho web, với WebDriver bạn cốthể thực hiện các phiên bản kiểm thử của mình trên các trình duyệt khác nhau WebDriver sẽcung cấp công cụ hỗ trợ bạn tốt hơn trong việc cooding để tạo test scripts.
Rest API testing thực hiện 1 trong các request: GET / POST / PUT / PATCH / DELETEGET được sử dụng để lấy thông tin từ back end và hiển thị trên UI
POST được sử dụng để thêm thông tin vào back end
PUT được sử dụng để update/replace bất cứ thông tin gì đã tồn tại
Không giống như một số automation testing tools hỗ trợ IDE, với Selenium bạn phải
bỏ nhiều thời gian để học và viết test case
(Selenium WebDriver là tool được sử dụng nhiều nhất trong bộ Selenium, tuy nhiên thì
nó không hỗ trợ IDE như Selenium IDE, nên bắt buộc chúng ta phải viết step by stepcho mỗi test case)
Nếu không sử dụng các framework có sẵn như WebdriverIO, Jasmine, thì việc cài đặtSelenium rất phức tạp vì nó sử dụng các công cụ và plugin khác nhau để hỗ trợautomation testing Và chúng ta cần phải cấu hình chúng một cách thủ công
Ít hỗ trợ cho Image Testing Với Selenium, để có thể kiểm chứng hình ảnh một cáchchính xác, bạn cần phải kết hợp với một third-party software như Sikuli hoặc OpenCVKhông hỗ trợ built-in reporting Tuy nhiên, bạn có thể sử dụng một số reporting librarynhư Allure Reporting, junit reporting,…
1.2 Cài đặt (link download, hướng dẫn cài đặt)
Link download: https://www.npmjs.com/
B1 Vào trang: https://www.npmjs.com/
B2 Tìm kiếm Từ khóa: selenium-webdriver
5
Trang 7B3 Click chọn vào: selenium-webdriver.
Hình 2: selenium-webdriver
B4 Mở terminal
B5 Chạy lệnh: npm install selenium-webdriver
Hình 3: Cài đặt selenium- webdriver thành công
Những lệnh cơ bản:
- findElement(): lấy giá trị của các thẻ html sử dụng
- sendkeys(); Nhập giá trị cho các ô với
6
Trang 8- submit(); Submit dữ liệu
Điều hướng trình duyệt sử dụng:
- navigate().get(“URL”):Để điều hướng đến một trang web
- navigate().refresh(): Refresh trang
- ImplicitlyWait(): Để chờ các cảnh báo (statements)
- FluentWait(): Để xác định tối đa mức thời gian để chờ một điều khiển thực thi
- pageLoadTimeout(): Set thời gian load timeout cho một trang
- setScriptTimeout(): Set thời gian load timeout cho điều khiển javascript
- navigate().clear() :Xóa nội dung khỏi input box
- navigate().close():Đóng trình duyệt hiện tại và các liên kết đến driver
Ví Dụ: Thêm 1 khóa học mới có id là 7, title là khóa học từ xa, author là khóa học của tôixuất bản năm 2022
Hình 4:Hàm tự động nhập dữ liệu và create POST Request lên api
Hình 5: Hàm gửi Request POST lên api
Hình 6: Hàm tự động tìm kiếm GET Request api user id=3
7
Trang 9Một số tính năng nổi bật chung:
- Hỗ trợ ngôn ngữ như lập trình: Java, .Net, Java, C#, PHP, Pearl, Ruby, Python,javascript
- Hỗ trợ trên nhiều hệ điều hành: MacOS, Linux, Windows và UNIX
- Selenium giả lập thao tác người dùng trên web page và các web element
- Có thể verify và so sánh thông tin trên web page
- Script đc base theo HTML, học dễ và ứng dụng cũng rất nhanh
- Có thể tạo một bộ test bao gồm nhiều test case
- Có thể run các test suite thông qua Selenium IDE hoặc Selenium command line
- Selenium API hỗ trợ nhiều loại trình duyệt, do đó sẽ rất dễ dàng khi test các ứng dụngweb với các trình duyệt khác nhau
- Có thể kết hợp với các hệ thống CI/CD như Jenkins, CircleCI để đẩy nhanh tiến độ kiểmtra, từ đó có thể rút ngắn thời gian release sản phẩm
Tốc độ:
8
Trang 10So sánh với các tool khác của bộ công cụ Selenium, WebDriver trở thành tool có tốc độnhanh nhất trong số đó.
Việc giao tiếp không cần thông qua bất cứ thiết bị ngoại vi nào mà trực tiếp kết nối thẳngvới trình duyệt tương tự như người sử dụng
WebDriver tận dụng được khả năng tương thích với trình duyệt để tự động hóa
Hình 9: Web Driver API
Drivers, Methods and Classes:
WebDriver cung cấp một loạt các giải pháp cho một số các thách thức trong kiểm thử tựđộng
Xử lý được các loại phần tử web phức hợp như checkbox, dropdowns và thông báo với sựtrợ giúp của tìm kiếm động
WebDriver cho phép người dùng thực hiện kiểm thử các trang web trên thiết bị di động,hai trong số các drivers cần thiết để kiểm thử trên mobile là: AndriodDriver, IphoneDriver
9
Trang 111.4 Minh họa (demo)
Link demo youtube: https://www.youtube.com/watch?v=68xR7RH-R9A&t=359s/Phương thức GET tổng các khóa học có trong APIs
Phương thức GET lấy ra id là 1
Phướng thức post thêm khóa học id 4
10
Trang 12Phương thức Delete
Phương thức PATCH và PUT
Phương thức PATCH
11
Trang 13Phương thức PUT nhập thiếu thông tin
Phương thức PUT nhập đầy đủ thông tin
Các phương thức lấy dữ liệu từ APIs
12
Trang 14CHƯƠNG 2: TEST CASES
Selenium IDE (Môi trường phát triển tích hợp) chủ yếu là một công cụ ghi / chạy mà mộtnhà phát triển trường hợp thử nghiệm sử dụng để phát triển các trường hợp thử nghiệmSelenium Selenium IDE là một công cụ dễ sử dụng từ Selenium Test Suite và thậm chí có thểđược sử dụng bởi những người mới phát triển các trường hợp thử nghiệm tự động cho các ứngdụng web của họ Người ta không yêu cầu bất kỳ thiết lập đặc biệt nào để bắt đầu với SeleniumIDE Bạn chỉ cần thêm tiện ích mở rộng của trình duyệt cụ thể của mình Selenium IDE cungcấp cho bạn GUI (Giao diện người dùng đồ họa) để dễ dàng ghi lại các tương tác của bạn vớitrang web
Selenium IDE cho phép người dùng hoặc nhà phát triển trường hợp thử nghiệm tạo cáctrường hợp thử nghiệm và bộ thử nghiệm và chỉnh sửa nó sau theo yêu cầu của họ Môi trườngphát triển cũng cung cấp khả năng chuyển đổi các trường hợp kiểm thử sang các ngôn ngữ lậptrình khác nhau, giúp người dùng dễ dàng hơn và không bắt buộc phải biết một ngôn ngữ lậptrình cụ thể
Selenium là một trong những khái niệm chung để miêu tả một phần mềm chuyên dụngtrong automation Mà ở đó, mỗi loại trong nó sẽ đáp ứng được các yêu cầu testing khác nhau.Còn về cơ bản thì Selenium bao gồm 4 thành phần chính là:
Selenium IDE (IDE là từ viết tắt của Integrated Developer Environment): là một plug-innằm trên trình duyệt Fire-fox, ta có thể sử dụng để record và play lại các thao tác đó dựa theomột quy trình hay một test case nào đó
Selenium RC: Selenium Remote Control, Selenium server sẽ khởi chạy và tương tác vớicác trình duyệt web
WebDriver: Selenium WebDriver có nhiệm vụ gửi lệnh khởi chạy rồi thực hiện tương táctrực tiếp với các trình duyệt mà không cần thông qua bất cứ server như Selenium RC Selenium Grid: Selenium Hub được sử dụng để khởi chạy nhiều các test thông qua cácmáy cũng như các trình duyệt khác nhau tại cùng một thời điểm nhất định
Selenium team đã quyết định gộp Selenium RC và WebDriver lại với nhau để có thể khởitạo ra các Selenium 2 với các tính năng mạnh mẽ hơn và hiện nay thì hầu hết các SeleniumProject đều sử dụng chúng
13
Trang 15Những tính năng nổi bật mà Selenium giới thiệu:
Có thể kết hợp với nhiều ngôn ngữ lập trình như: Java, Net, Python, Ruby một cách dễdàng
Selenium sẽ giả cho các thao tác người dùng ở trên web page và các web element Script được base dựa theo HTML nên rất dễ học và việc ứng dụng cũng sẽ rất nhanh
Có thể tạo ra một bộ test suite có chứa nhiều test case khác
Có thể run các test suite thông qua Selenium IDE hoặc Selenium command line
Selenium API sẽ hỗ trợ rất nhiều cho các loại trình duyệt, do vậy mà sẽ rất dễ dàng khitest ứng dụng web với nhiều loại trình duyệt khác nhau
Selenium IDE có ưu điểm là:
Quá trình cài đặt và sử dụng đều dễ dàng
Không yêu cầu người sử dụng phải có kỹ năng lập trình mà họ chỉ cần hiểu biết một chút
Sử dụng được tích hợp cùng với các extension khác nhau
Nhược điểm của Selenium IDE:
Bởi là một extension nên bạn chỉ có thể cài đặt nó trên trình duyệt Firefox
Nó được dùng để thiết kế nhằm tạo ra các test đơn giản hoặc prototype test
Với IDE thì bạn không có khả năng thực hiện được các tính toán cũng như câu lệnh phứctạp hoặc có điều kiện
Hiệu năng hoạt động có thể sẽ chậm hơn nhiều so với Webdriver và Selenium RC
14
Trang 162.2 Tóm tắt test case (Tiếng việt / Tiếng anh):
TC ID TC Description AdvancedBasic/ Author
03 Quên mật khẩu. Cơ bản
07 Thích kiểu Discover. Cơ bản
08 Vòng quay may mắn. Cơ bản
09 Kiểm tra số điện thoại Cơ bản
10 Kiểm tra mã OTP Cơ bản
11 Tìm salon theo khu vực. Cơ bản
12 Xem lại lịch đã đặt. Cơ bản
13 Hủy thích kiểu Discover. Cơ bản
14 Đăng ký tài khoản và tạo mật khẩu Cơ bản
15 Đếm số cửa hàng ở địa điểm cụ thể. Nâng cao Tư
16 Đếm tổng số cửa hàng tại Tp.HCM. Nâng cao Tư
17 Đếm số lượng yêu thích. Nâng cao Huy
18 Đếm số lượng combo đã chọn. Nâng cao Tư
19 So sánh lịch sử yêu thích trong lịch sử Nâng cao Huy
15
Trang 172.3 Chi tiết Test case:
TC ID TC Description Steps ExpectedResult ResultTest
01 Đăng nhập
1 Truy cập: https://30shine.com/
2 Click nút đăng nhập
3 Nhập số điện thoại: 0336234081
4 Click button hoàn tất
5 Kết quả: Mật khẩu sai định dạng
02 Đăng xuất
1 Truy cập: https://30shine.com/
2 Click vào Dropdown button navbar
3 Click vào Đăng xuất
4 Đóng trang
Đăng xuấtthành công! Pass
6 Click button hoàn tất
7 Không nhập pass click vô button lưu mật khẩu
Pass
04 Đặt lịch 1 Truy cập: https://30shine.com/
2 Click vào button Đặt lịch ngay
3 Kết quả: Anh vui lòng nhập đủ 10 số điện thoại nhé!
4 Nhập 4 ký tự: 0192
Đặt LịchThànhCông!
Pass
16
Trang 185 Kết quả: Anh vui lòng nhập đủ 10 số điện thoại nhé!
11 Click button Hoàn tất
12 Kết quả: Mời anh chọn dịch vụ để chọn giờ cắt
13 Click button chọn bất kỳ 1 item trongchọn dịch vụ
14 Click button đã chọn trong dịch vụ đểhủy chọn
15 Click button chọn bất kỳ 1 item trongchọn dịch vụ
16 Click button chọn 1 dịch vụ
17 Click button Hoàn tất
18 Kết quả: Mời anh chọn giờ cắt để tiếptục đặt lịch
05 Đổi lịch 1 Truy cập: https://30shine.com/
2 Click button Đổi/Hủy lịch
3 Click button Đổi lịch
Pass
17
Trang 197 Click button Hoàn tất.
8 Kết quả: Mời anh chọn dịch vụ để chọn giờ cắt
9 Click button chọn bất kỳ 1 item trongchọn dịch vụ
10 Click button đã chọn trong dịch vụ đểhủy chọn
11 Click button chọn bất kỳ 1 item trongchọn dịch vụ
12 Click button chọn 1 dịch vụ
13 Click button Hoàn tất
14 Kết quả: Mời anh chọn giờ cắt để tiếptục đặt lịch
2 Click button Đổi/Hủy lịch
3 Click button chắc chắn Hủy lịch
4 Đóng trang
Lịch đặt đãhủy Pass
08 mắn.Vòng quay may
1 Truy cập: https://30shine.com/
2 Click Vòng quay may mắn
3 Click button quay
4 Click vào button đã nhận quà
5 Đóng trang
Tuyệt vờianh đã trúng Pass
09 Kiểm tra số điện
4 Kết quả: Số điện thoại sai định dạng
5 Nhập số điện thoại ít hơn 10 ký tự:
0564
6 Click button Tiếp tục
7 Kết quả: Số điện thoại sai định dạng
Nhập mậtkhẩu củaSĐT0336234081hoặc chọnQuên mậtkhẩu
Pass
18
Trang 2012 Click button hoàn tất.
13 Kết quả: OTP không chính xác
Pass
12 Xem lại lịch đã đặt
1 Truy cập: https://30shine.com/
2 Click vài navbar
3 Click button xem lại lịch đã đặt
4 Đóng trang
Lịch đặt củaanh (1) Pass
14 Đăng ký tài khoản
4 Kết quả: Số điện thoại sai định dạng
5 Nhập số điện thoại ít hơn 10 ký tự 05
Đặt mậtkhẩu thànhcông!
Pass
19
Trang 216 Click button Tiếp tục.
7 Kết quả: Số điện thoại sai định dạng
8 Nhập số điện thoại chưa đăng ký:
14 Click button hoàn tất
15 Kết quả: Tạo tài khoản thành công
16 Không nhập pass click vô button lưu mật khẩu
17 Kết quả: Mật khẩu không đúng định dạng
4 Kiểm tra số lượng salon ở bình dương
5 Đếm số salon trong tỉnh, thành phố
6 Đóng trang
Tổng cáccác cửa hàngbằng với giátrị cửa hàng
Pass
20
Trang 225 Click button xem dịch vụ đã chọn.
6 Đóng trang
bên trangdịch vụ đãchọn
Pass
21
Trang 232.4 Thống kê các lỗi tìm được:
Bug ID Bug Description Evidence
01 Lỗi không đủ chi nhánh tại cầu giấy(3) khi tìm
thấy có 4 chi nhánh
22
Trang 24CHƯƠNG 3: KẾT LUẬNKiểm thử phần mềm hiện nay vẫn là vấn đề hết sức quan trọng với các tổ chức phát triểnphần mềm Trong khuôn khổ báo cáo môn học của mình do thời gian và kinh nghiệm còn hạnchế nên có những phần của báo cáo môn học chưa được đào sâu nghiên cứu.
Sau một thời gian thực hiện báo cáo đồ án môn học dưới sự hướng dẫn của Thạc sĩ TrịnhCông Nhựt báo cáo của em đã thực hiện tốt được các mục tiêu đề ra và đạt được những kết quảnhư sau:
Kết quả đạt được:
Trình bày đầy đủ các vấn đề tổng quan về phần mềm, công nghệ phần mềm, lỗi phầnmềm, và các vấn đề liên quan đến kiểm thử phần mềm
Giới thiệu Selenium IDE, các thao tác cơ bản để sử dụng công cụ này
Báo cáo đồ án môn học là một tài liệu xúc tích tổng hợp được các vấn đề chính của kiểmthử phần mềm, và có thể được coi là một tài liệu hướng dẫn sử dụng Selenium IDE ngắngọn rõ ràng bằng tiếng Việt để tham khảo
Hạn chế:
Mặc dù đã cố gắng hết sức trong thời gian thực hiện đề tài nhưng với kinh nghiệm còn hạn chế nên báo cáo môn học không tránh khỏi những thiếu sót
Hướng phát triển đề tài:
Trong thời gian tới em 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 web Selenium, để có thể vận dụng vào kiểmthử các ứng dụng lớn hơn trong thực tế
23