TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA ĐIỆN - ĐIỆN TỬ
BỘ MÔN KỸ THUẬT ĐIỆN TỬ
----------
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:
NGHIÊN CỨU WEBDRIVERIO VÀ ÁP DỤNG TRONG KIỂM THỬ
ỨNG DỤNG WEB
Giảng viên hướng dẫn: PGS ĐÀO THANH TOẢN
Sinh viên thực hiện:
Mã sinh viên:
Lớp:
Khóa:
TẠ HỮU ĐỨC
171502856
Kỹ thuật điện tử & Tin học công nghiệp
K58
Hà Nội – 2022
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA ĐIỆN - ĐIỆN TỬ
BỘ MÔN KỸ THUẬT ĐIỆN TỬ
----------
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:
NGHIÊN CỨU WEBDRIVERIO VÀ ÁP DỤNG TRONG KIỂM THỬ
ỨNG DỤNG WEB
Giảng viên hướng dẫn: PGS ĐÀO THANH TOẢN
Sinh viên thực hiện:
Mã sinh viên:
Lớp:
Khóa:
TẠ HỮU ĐỨC
171502856
Kỹ thuật điện tử & Tin học công nghiệp
K58
Hà Nội – 2022
Đồ án tốt nghiệp
3
BỘ GIÁO DỤC VÀ ĐÀO TẠO
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC GTVT
Độc lập- Tự do- Hạnh phúc
NHIỆM VỤ THIẾT KẾ TỐT NGHIỆP
BỘ MÔN: KỸ THUẬT ĐIỆN TỬ
KHOA: ĐIỆN- ĐIỆN TỬ
Sinh viên: TẠ HỮU ĐỨC
Tên và tóm tắt yêu cầu, nội dung đề tài:
Nghiên cứu WebdriverIO và áp dụng cho kiểm thử ứng dụng web
Số liệu cần thiết chủ yếu để thiết kế:
- Cách dùng Client API để tương tác với các Web Element trong Automation
Test
- Cách tổ chức Page Object, Test Verification, Test Script
- Tài liệu phân tích web siêu thị bán hoa trực tuyến, các test case cho các chức
năng chính của web
Nội dung của bản thuyết minh, yêu cầu giải thích tính tốn của thiết kế TN:
- Chương 1: Tổng quan về kiểm thử phần mềm và WebDriverIO
- Chương 2: Phân tích web siêu thị bán hoa online
- Chương 3: Ứng dụng WebdriverIO trong kiểm thử siêu thị bán hoa online
- Chương 4: Thực nghiệm và đánh giá kết quả
SVTH: Tạ Hữu Đức
Lớp: Kĩ thuật điện tử & tin học công nghiệp K58
Đồ án tốt nghiệp
4
Những yêu cầu bổ sung thêm trong nhiệm vụ thiết kế TN hoặc chuyên đề
- ................................................................................................
- ................................................................................................
- ................................................................................................
- ................................................................................................
- ................................................................................................
- ................................................................................................
- ................................................................................................
- ................................................................................................
- ................................................................................................
- ................................................................................................
- ................................................................................................
Cán bộ hướng dẫn:
- Giáo viên của trường: PGS.TS. ĐÀO THANH TOẢN
- Cán bộ ngoài sản xuất:
Ngày giao nhiệm vụ thiết kế tốt nghiệp:
Ngày nộp bản thiết kế tốt nghiệp:
Ngày
tháng
T/L HIỆU TRƯỞNG
/11/2021
10/01/2022
năm 2021
Đã giao nhiệm vụ TKTN
TRƯỞNG BỘ MÔN
GIÁO VIÊN HƯỚNG DẪN
Nguyễn Thanh Hải
Đào Thanh Toản
TRƯỞNG KHOA
Nguyễn Thanh Hải
Đã nhận nhiệm vụ TKTN
Tạ Hữu Đức
Sinh viên:
Lớp:
SVTH: Tạ Hữu Đức
Khóa:
Kỹ thuật điện tử và tin học công nghiệp
58
Lớp: Kĩ thuật điện tử & tin học công nghiệp K58
Đồ án tốt nghiệp
5
LỜI CẢM ƠN
Em xin chân thành gửi lời cảm ơn tới tồn thể q Thầy Cơ trong khoa Điện –Điện
tử và Trường Đại học Giao thông vận tải đã tận tình truyền đạt những kiến thức quý
báu cũng như tạo mọi điều kiện thuận lợi nhất cho em trong q trình học tập để em
có được những kiến thức như ngày hôm nay và từ những kiến thức nền tảng đó đã
giúp em rất nhiều q trình hoàn thành đồ án tốt nghiệp.
Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc đến Thầy giáo PGS Đào Thanh
Toản người đã hết lòng giúp đỡ, tạo mọi điều kiện để em học tập, nghiên cứu khoa
học cũng như hướng dẫn và tận tình chỉ bảo để giúp em có thể hồn thành đồ án tốt
nghiệp này.
Cuối cùng, Tơi xin cảm ơn đến gia đình, bạn bè và các anh chị trong công ty VTI
đã luôn động viên, ủng hộ và giúp đỡ tơi trong suốt q trình học tập và hoàn thành
tốt nghiệp.
Hà Nội, ngày
tháng
năm 2022
Sinh viên
Tạ Hữu Đức
SVTH: Tạ Hữu Đức
Lớp: Kĩ thuật điện tử & tin học công nghiệp K58
Đồ án tốt nghiệp
6
LỜI NÓI ĐẦU
Trong Các ứng dụng Web ngày càng phát triển mạnh mẽ nhằm và dần trở
thành nền tảng kết nối thông tin trong nhiều doanh nghiệp đóng vai trị quyết định
của thương mại điện tử, trao đổi thông tin. Để đưa ra một ứng dụng Web với chất
lượng tốt, có tính linh hoạt trên nhiều nền tảng khác nhau (hệ điều hành, trình
duyệt,...) cho nhiều đối tượng sử dụng đã trở thành một thách thức trong việc phát
triển và đảm bảo chất lượng phần mềm. Điều này dẫn tới việc kiểm thử ứng dụng
Web trở nên thiết yếu đối với các dự án phần mềm và cần phải có những phương
pháp đặc biệt khác với phần mềm truyền thống.
Để tạo ra sản phẩm công nghệ thông tin hay phần mềm có chất lượng cao thì
hoạt động kiểm thử đóng vai trị quan trọng. Tuy nhiên, kiểm thử thủ công lại chiếm
đến hơn 40% thời gian, kinh phí và nguồn nhân lực phát triển dự án phần mềm. Do
vậy, hàng loạt các công cụ hỗ trợ kiểm thử đơn vị (như TestNG, JUnit, NUnit,
TagUnit, JBehave,…), kiểm thử chức năng (như Selenium, Quicktest professional,
IBM Rational Functional tester,…), kiểm thử hiệu năng (như Jmeter, OpenSTA, Load
runner,...) đã ra đời. Trong đó, WebdriverIO là một tiện ích kiểm thử tự động cho các
ứng dụng Web, có thể kiểm thử trên nhiều trình duyệt, hỗ trợ nhiều ngơn ngữ lập
trình, giao tiếp được với các công cụ kiểm thử khác và đặc biệt công cụ này là một
bộ mã nguồn mở, do đó các tổ chức khơng cần tốn kinh phí mua bản quyền.
Từ những vấn đề được nêu ở phía trên em quyết định chọn đề tài "NGHIÊN
CỨU WEBDRIVERIO VÀ ÁP DỤNG TRONG KIỂM THỬ ỨNG DỤNG
WEB" với mong muốn có được cái nhìn thực tế, rõ ràng hơn về kiểm thử phần mềm
và tiếp cận được với công cụ kiểm thử tự động WebdriverIO để làm tiền đề cho định
hướng tương lai sẽ trở thành một kỹ sư kiểm thử phần mềm.
SVTH: Tạ Hữu Đức
Lớp: Kĩ thuật điện tử & tin học công nghiệp K58
Đồ án tốt nghiệp
7
MỤC LỤC
TRÍCH YẾU ĐỒ ÁN TỐT NGHIỆP
LỜI CẢM ƠN
PHẦN MỞ ĐẦU
CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ WEBDRIVER
IO ............................................................................................................................... 1
1.1. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM ................................................. 1
1.1.1. Khái niệm về kiểm thử phần mềm .................................................................... 1
1.1.2. Các cấp độ kiểm thử phần mềm ........................................................................ 2
1.2. KIỂM THỬ TỰ ĐỘNG ..................................................................................... 6
1.2.1. Khái niệm kiểm thử tự động ............................................................................. 7
1.2.2. Quy trình kiểm thử tự động ............................................................................... 7
1.2.3. So sánh kiểm thử tự động và kiểm thử thủ công............................................... 8
1.2.4. Một số công cụ kiểm thử tự động phổ biến ...................................................... 9
1.3. CÔNG CỤ KIỂM THỬ TỰ ĐỘNG WEBDRIVERIO .................................. 9
1.3.1. Tổng quan về WebdriverIO .............................................................................. 9
1.3.2. Các câu lệnh thông dụng sử dụng trong WebdriverIO ................................... 11
1.4. KẾT LUẬN CHƯƠNG 1 ................................................................................. 14
CHƯƠNG 2: PHÂN TÍCH WEB SIÊU THỊ BÁN HOA ONLINE .................. 14
2.1. XÁC ĐỊNH YÊU CẦU CỦA HỆ THỐNG .................................................... 14
2.1.1. Xác định và mô tả các tác nhân ....................................................................... 14
2.1.2. Biểu đồ ca sử dụng .......................................................................................... 15
2.1.3. Xây dựng kịch bản kiểm thử ........................................................................... 16
2.2. PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ CỦA TRANG WEB ................... 23
2.2.1. Phân tích yêu cầu ............................................................................................ 23
2.2.2. Phân tích hệ thống ........................................................................................... 23
2.2.3. Sở đồ website .................................................................................................. 29
2.3. KẾT LUẬN CHƯƠNG 2 ................................................................................. 29
CHƯƠNG 3: ỨNG DỤNG WEBDRIVERIO TRONG KIỂM THỬ WEB SIÊU
THỊ BÁN HOA ONLINE ...................................................................................... 30
3.1. THIẾT KẾ TEST CASE CHO CÁC CHỨC NĂNG CHÍNH ..................... 30
SVTH: Tạ Hữu Đức
Lớp: Kĩ thuật điện tử & tin học công nghiệp K58
Đồ án tốt nghiệp
8
3.1.1. Chức năng đăng kí tài khoản ........................................................................... 30
3.1.2. Chức năng thêm sản phẩm vào giỏ hàng ........................................................ 36
3.1.3. Chức năng chỉnh sửa giỏ hàng ........................................................................ 38
3.1.4. Chức năng đặt hàng ......................................................................................... 41
3.2. PHƯƠNG HƯỚNG GIẢI QUYẾT VẤN ĐỀ VÀ THỰC THI KIỂM THỬ
TỰ ĐỘNG ................................................................................................................ 44
3.2.1. Yêu cầu về công nghệ ..................................................................................... 44
3.2.2. Hướng thực thi kiểm thử tự động .................................................................... 44
3.2.3. Các bước thực hiện kiểm thử tự động ............................................................. 47
3.2.4. Báo cáo và phân tích các lỗi ............................................................................ 55
3.3. KẾT LUẬN CHƯƠNG .................................................................................... 57
CHƯƠNG 4: THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ............................. 57
4.1. GIỚI THIỆU VỀ WEB SIÊU THỊ BÁN HOA ONLINE ............................ 57
4.2. KIỂM THỬ TỰ ĐỘNG WEBSITE VỚI WEBDRIVERIO VÀ NODE.JS
................................................................................................................................... 58
4.2.1. Chức năng đăng kí tài khoản ........................................................................... 58
4.2.2. Chức năng thêm sản phẩm vào giỏ hàng ........................................................ 77
4.2.3. Chức năng chỉnh sửa số lượng sản phẩm trong giỏ hàng ............................... 78
4.2.4. Chức năng đặt hàng ......................................................................................... 79
4.3. ĐÁNH GIÁ KẾT QUẢ KIỂM THỬ .............................................................. 80
4.4. KẾT LUẬN CHƯƠNG 4 ................................................................................. 81
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................................................ 81
PHỤ LỤC ................................................................................................................ 82
TÀI LIỆU THAM KHẢO ..................................................................................... 82
SVTH: Tạ Hữu Đức
Lớp: Kĩ thuật điện tử & tin học công nghiệp K58
Đồ án tốt nghiệp
9
DANH MỤC CÁC HÌNH ẢNH
Hình 1. 1 Các cấp độ kiểm thử ....................................................................................2
Hình 1. 2 Kiểm thử đơn vị ..........................................................................................3
Hình 1. 3 Kiểm thử tích hợp .......................................................................................4
Hình 1. 4 Kiểm thử hệ thống .......................................................................................5
Hình 1. 5 Kiểm thử chấp nhận ....................................................................................6
Hình 2. 1 Biểu đồ ca sử dụng cho hệ thống trên trang dành cho người dùng ...........15
Hình 2. 2 Sơ đồ thực thể ...........................................................................................24
Hình 2. 3 Lược đồ cơ sở dữ liệu ...............................................................................25
Hình 2. 4 Sơ đồ web siêu thị bán hoa online ............................................................29
Hình 3. 1 Giao diện chức năng đăng ký tài khoản ....................................................30
Hình 3. 2 Giao diện chức năng thêm sản phẩm vào giỏ hàng...................................36
Hình 3. 3 Chức năng chỉnh sửa giỏ hàng ..................................................................38
Hình 3. 4 Giao diện chức năng đặt hàng ...................................................................42
Hình 3. 5 Quá trình kiểm thử tự động .......................................................................46
Hình 3. 6 Kết quả chạy test script hiển thị trên Allure Report ..................................53
Hình 3. 7 Kết quả chạy test script hiển thị trên Allure Report ..................................54
Hình 3. 8 Kết quả chạy test script được trả về dưới dạng file Excel ........................54
Hình 3. 9 Nhập kết quả test script vào file Test Case tương ứng .............................55
Hình 3. 10 Nhập kết quả test script vào file Test Case tương ứng ...........................55
Hình 3. 11 Allure Report đưa ra nguyên nhân dẫn đến Test Script bị fail ...............56
Hình 4. 1 Dữ liệu đầu vào cho chức năng đăng ký tài khoản ...................................74
Hình 4. 2 Kết quả Test Script hiển thị trên Allure Report ........................................75
Hình 4. 3 Kết quả Test Script hiển thị trên Allure Report ........................................76
SVTH: Tạ Hữu Đức
Lớp: Kĩ thuật điện tử & tin học công nghiệp K58
Đồ án tốt nghiệp
10
DANH MỤC CÁC BẢNG
Bảng 2. 1 Kịch bản Use Case Đăng Nhập ................................................................16
Bảng 2. 2 Kịch bản use case đăng ký tài khoản ........................................................16
Bảng 2. 3 Kịch bản use case tìm kiếm sản phẩm ......................................................17
Bảng 2. 4 Kịch bản use case xem thông tin sản phẩm từ form kết quả tìm kiếm .....18
Bảng 2. 5 Kịch bản use case thêm sản phẩm vào giỏ hàng.......................................19
Bảng 2. 6 Kịch bản use case chỉnh sửa số lượng sản phẩm trong giỏ hàng .............20
Bảng 2. 7 Kịch bản use case xóa sản phẩm trong giỏ hàng ......................................21
Bảng 2. 8 Kịch bản use case đặt hàng .......................................................................22
Bảng 2. 9 Thông tin dữ liệu của các phần tử trong bảng KHACH_HANG .............26
Bảng 2. 10 Thông tin dữ liệu của các phần tử trong bảng ADM ..............................26
Bảng 2. 11 Thông tin dữ liệu của các phần tử trong bảng LIEN_HE .......................26
Bảng 2. 12 Thông tin dữ liệu của các phần tử trong bảng TIN_TUC ......................27
Bảng 2. 13 Thông tin dữ liệu của các phần tử trong bảng LOAI_HOA ...................27
Bảng 2. 14 Thông tin dữ liệu của các phần tử trong bảng HOA ..............................27
Bảng 2. 15 Thông tin dữ liệu của các phần tử trong bảng DONDATHANG ...........28
Bảng 2. 16 Thông tin dữ liệu của các phần tử trong bảng CT_DONDATHANG....28
Bảng 3. 1 Mô tả yêu cầu chức năng đăng ký ............................................................31
Bảng 3. 2 Các trường hợp kiểm tra chức năng đăng ký ............................................33
Bảng 3. 3 Các trường hợp kiểm tra chức năng thêm sản phẩm vào giỏ hàng ..........37
Bảng 3. 4 Mô tả yêu cầu chức năng chỉnh sửa giỏ hàng ...........................................39
Bảng 3. 5 Các trường hợp kiểm tra chức năng chỉnh sửa giỏ hàng ..........................40
Bảng 3. 6 Mô tả yêu cầu chức năng đặt hàng ...........................................................43
Bảng 3. 7 Các trường hợp test chức năng đặt hàng ..................................................43
Bảng 3. 8 Ví dụ về file .js chứa các phương thức dùng chung cho các object page .48
Bảng 3. 9 Ví dụ về file page_object.js chứa các element sử dụng cho chức năng chỉnh
sửa giỏ hàng ..............................................................................................................49
Bảng 3. 10 Ví dụ về Test Script cho chức năng chỉnh sửa số lượng sản phẩm ........50
Bảng 3. 11 Ví dụ về file .json chứa input data cho chức năng chỉnh sửa số lượng ..51
Bảng 3. 12 Test Script được chỉnh sửa sau khi nhận input data từ file json .............52
SVTH: Tạ Hữu Đức
Lớp: Kĩ thuật điện tử & tin học công nghiệp K58
Đồ án tốt nghiệp
11
Bảng 3. 13 Ví dụ code cho test script có ID là “EDC07” .........................................56
Bảng 4. 1 Tạo Base.js chứa các phương thức dùng chung cho các page object .......58
Bảng 4. 2 Tạo một page object cho chức năng đăng ký tài khoản mới ....................59
Bảng 4. 3 Tạo file Json chứa các input data cho các test script cho chức năng đăng ký
tài khoản mới .............................................................................................................61
Bảng 4. 4 Tạo file chứa các test script để kiểm tra các tính năng chính của chức năng
đăng ký tài khoản mới ...............................................................................................63
Bảng 4. 4 Tạo file chứa các test script để kiểm tra các tính năng chính của chức năng
đăng ký tài khoản mới ...............................................................................................74
Bảng 4. 5 Kết quả kiểm thử chức năng đăng ký tài khoản .......................................76
Bảng 4. 6 Kết quả kiểm thử chức năng thêm sản phẩm vào giỏ hàng ......................77
Bảng 4. 7 Kết quả kiểm thử chức năng chỉnh sửa số lượng sản phẩm giỏ hàng ......78
Bảng 4. 8 Kết quả kiểm thử chức năng chỉnh sửa số lượng sản phẩm giỏ hàng ......79
Bảng 4. 9 Kết quả kiểm thử chức năng chính ...........................................................80
SVTH: Tạ Hữu Đức
Lớp: Kĩ thuật điện tử & tin học công nghiệp K58
Đồ án tốt nghiệp
12
CÁC THUẬT NGỮ VÀ CHỮ CỤM TỪ VIẾT TẮT
STT
Thuật ngữ/ Từ viết tắt
1
Test Case
Ý nghĩa
Là kịch bản kiểm thử bao gồm Test Case ID,
Test Case Description, Pre-Condition, Test
Case Procedure, Expected Output, Result
2
Use Case
Kỹ thuật được dùng trong kỹ thuật phần mềm
và hệ thống nhằm nắm bắt những yêu cầu
chức năng của hệ thống, mô tả sự tương tác
đặc trưng giữa người dùng và hệ thống. Use
case cũng mô tả các yêu cầu đối với hệ thống.
3
Biểu đồ ca (use case)
Biểu diễn sơ đồ chức năng của hệ thống.Từ
tập yêu cầu của hệ thống, biểu đồ sẽ phải chỉ
ra hệ thống cần thực hiện điều gì để thỏa mãn
các yêu cầu của người dùng hệ thống đó
4
Test Script
Một nhóm mã lệnh dạng đặc tả kịch bản dùng
để tự động hóa một trình tự kiểm tra, giúp cho
việc kiểm tra nhanh hơn, hoặc cho những
trường hợp mà kiểm tra bằng tay sẽ rất khó
khăn hoặc khơng khả thi
5
Validate
Một thuật ngữ trong kiểm thử phần mềm dùng
để chỉ sự kiểm tra tính hợp lệ của dữ liệu trên
một yếu tố của ứng dụng.
6
Framework
Trong kiểm thử phần mềm, Framework cung
cấp một cấu trúc cơ bản giúp cho việc kiểm thử
trên ngôn ngữ lập trình bậc cao một cách nhanh
chóng hơn, tiết kiệm thời gian và giảm thiểu số
lần phải viết lại mã kiểm thử.
SVTH: Tạ Hữu Đức
Lớp: Kĩ thuật điện tử & tin học công nghiệp K58
Đồ án tốt nghiệp
1
CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ WEBDRIVER
IO
1.1. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
Kiểm thử nhằm đánh giá chất lượng hoặc tính chấp nhận được của sản phẩm. Kiểm
thử cũng nhằm phát hiện lỗi hoặc bất cứ vấn đề gì về sản phẩm. Chúng ta cần tới
kiểm thử vì biết rằng con người ln có thể mắc sai lầm. Điều này đặc biệt đúng trong
lĩnh vực phát triển phần mềm và các hệ thống điều khiển bởi phần mềm. Chương này
nhằm phác họa một bức tranh tổng thể về kiểm thử và đảm bảo chất lượng phần mềm.
1.1.1. Khái niệm về kiểm thử phần mềm
Kiểm thử phần mềm có nhiều định nghĩa khác nhau đề xuất bởi nhiều tổ chức hay
cá nhân khác nhau. Nên các tài liệu thường không thống nhất và thiếu tính tương
thích. Sau đây là các định nghĩa và thuật ngữ chuẩn được phát triển bởi IEEE (Hội
kỹ sư điện và điện tử) và Myer:
• Định nghĩa của Myer(1979): Kiểm thử phần mềm là quá trình thực thi một
chương trình với mục đích tìm lỗi.
• Định nghĩa của IEEE(1990):
o Kiểm thử phần mềm là quá trình vận hành một hệ thống hoặc một thành
phần của hệ thống với các điều kiện xác định, nhận xét và ghi lại các
kết quả, tạo ra đánh giá về những khía cạnh của hệ thống hay thành
phần đó.
o Kiểm thử phần mềm là q trình phân tích các yếu tố phần mềm để phát
hiện những khác biệt giữa chương trình với các điều kiện yêu cầu và
đánh giá các đặc điểm của các yếu tố phần mềm.
Mục tiêu của kiểm thử phần mềm:
• Mục tiêu trực tiếp:
o Xác định và phát hiện nhiều lỗi nhất có thể trong phần mềm được kiểm
thử.
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
2
o Thực hiện các yêu cầu kiểm thử cần thiết một cách hiệu quả trong phạm
vi ngân sách và thời gian cho phép.
o Đảm bảo chất lượng của phần mềm trước và sau khi sửa chữa các lỗi
và kiểm tra lại.
• Mục tiêu gián tiếp:
Tổng hợp các lỗi thường gặp trong phần mềm nhằm mục đích ngăn ngừa và kiểm
soát các lỗi cho các dự án hiện tại hay làm tài liệu tham khảo cho các dự án tương tự
trong tương lai.
1.1.2. Các cấp độ kiểm thử phần mềm
Tất cả các giai đoạn của quá trình phát triển phầm mềm đều trải qua quá trình kiểm
thử phần mềm. Có 4 cấp độ kiểm thử phần mềm là:
Kiểm thử đơn vị
Kiểm thử tích hợp
Kiểm thử hệ thống
Kiểm thử chấp nhận
Hình
1. 11.Các
cấpcấp
độ độ
kiểm
thửthử
Hình
1 Các
kiểm
➢ Kiểm thử đơn vị (Unit Test)
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
3
Hình 1. 2 Kiểm thử đơn vị
Là một loại kiểm thử phần mềm trong đó thực hiện kiểm thử từng đơn vị hoặc
thành phần riêng lẻ của phần mềm.
-
Mục đích: Đảm bảo từng đơn vị riêng lẻ trong chương trình phần mềm hoạt
động hiệu quả theo thiết kế chi tiết. Đơn vị thường có kích thước nhỏ, chức
năng hoạt động đơn giản, khơng gây nhiều khó khăn trong việc kiểm thử, ghi
nhận và phân tích kết quả. Do đó, nếu phát hiện lỗi thì việc tìm kiếm nguyên
nhân và sửa lỗi cũng đơn giản và tốn ít chi phí hơn. Đơn vị ở đây có thể là:
• Câu lệnh của chương trình
• Các hàm, module
• Các chương trình riêng lẻ
-
Người thực hiện: Kiểm thử đơn vị được thực hiển bởi lập trình viên để đảm
bảo thời gian do việc phát hiện và sửa lỗi cần được thực hiện liên tục.
➢ Kiểm thử tích hợp (Integration Test)
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
4
Hình 1. 3 Kiểm thử tích hợp
Kiểm thử tích hợp kết hợp các thành phần của một ứng dụng và kiểm thử như một
ứng dụng đã hoàn thành. Trong khi Unit Test kiểm tra các thành phần và Unit riêng
lẻ thì Intgration Test kết hợp chúng lại với nhau và kiểm tra sự giao tiếp giữa chúng.
-
Kiểm thử tích hợp là cần thiết vì:
o Kiểm thử mức đơn vị chỉ kiểm thử từng đơn vị riêng lẻ
o Rất nhiều failure là kết quả của fault trong quá trình tương tác giữa các
hệ thống con
-
Mục đích:
o Đảm bảo tính năng/module tích hợp theo thiết kế kiến trúc hoặc thiết
kế bậc cao (HLD)
o Đảm bảo sự giao tiếp giữa các tính năng/module hoạt động tốt
-
Người thực hiện: Tester
➢ Kiểm thử hệ thống (System Test)
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
5
Hình 1. 4 Kiểm thử hệ thống
Kiểm thử hệ thống là một phương pháp theo dõi và đánh giá hành vi của sản phẩm
hoặc hệ thống phần mềm hồn chỉnh và đã được tích hợp đầy đủ, dựa vào đặc tả và
các yêu cầu chức năng đã được xác định trước.
-
Thời điểm tiến hành kiểm thử hệ thống:
o Sau khi hoàn thành unit & integration testing.
o Trước khi bắt đầu acceptance testing
o Sau khi tích hợp hồn tồn các mơ-đun.
o Sau khi hồn thành quy trình phát triển phần mềm, dựa trên đặc tả yêu
cầu phần mềm (SRS).
o Sau khi mơi trường thử nghiệm sẵn sàng.
-
Mục đích:
o Xác minh hệ thống phần mềm đáp ứng các yêu cầu chức năng, kỹ thuật
và kinh doanh theo yêu cầu của khách hàng.
o Thực hiện kiểm tra từ đầu đến cuối của sản phẩm phần mềm giúp ngăn
ngừa lỗi hệ thống và sự cố trong quá trình thực hiện với môi trường
thật.
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
6
o Được thực hiện trong một môi trường tương tự như môi trường
production, cho phép các nhà phát triển cũng như các bên liên quan có
được ý tưởng về phản ứng của người dùng đối với sản phẩm.
o Đóng một vai trị quan trọng trong việc cung cấp một sản phẩm chất
lượng cho người dùng cuối.
-
Người thực hiện: team tester hồn tồn độc lập với nhóm phát triển dự án với
mục tiêu là để đánh giá phần mềm có tuân thủ theo các yêu cầu đã đưa ra hay
khơng.
➢ Kiểm thử chấp nhận (Acceptance test)
Hình 1. 5 Kiểm thử chấp nhận
Thông thường, sau giai đoạn System Test là Acceptance Test, được khách hàng
thực hiện hoặc ủy quyền cho một nhóm thứ ba thực hiện.
-
Mục đích: xác nhận phần mềm thỏa mãn tất cả yêu cầu của khách hàng và
khách hàng chấp nhận sản phẩm.
-
Người thực hiện: khách hàng , người dùng và các bên liên quan
1.2. KIỂM THỬ TỰ ĐỘNG
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
7
Kiểm thử phần mềm tốn nhiều chi phí, nhân lực và thời gian. Trong một số dự án,
chi phí kiểm thử phần mềm chiếm 40% tổng giá trị của dự án. Do đó một trong các
mục tiêu của kiểm thử là tự động hóa, nhờ đó mà giảm thiểu chi phí, giảm lỗi, đặc
biệt giúp việc kiểm thử dễ dàng và nhanh chóng hơn.
1.2.1. Khái niệm kiểm thử tự động
Kiểm thử tự động là thực hiện kiểm thử phần mềm một cách tự động các bước
trong một kịch bản kiểm thử bằng một chương trình do người kiểm thử tự viết các
tập lệnh và sử dụng phần mềm phù hợp. Nó là một q trình tự động hóa của một quy
trình kiểm thử thủ cơng.
Cơng cụ kiểm thử tự động có thể lấy dữ liệu từ file bên ngồi (Excel, csv…) nhập
vào chương trình, so sánh kết quả mong đợi (từ file Excel, csv…) với kết quả thực tế
và xuất ra báo cáo kết quả kiểm thử.
Kiểm thử tự động sẽ được sử dụng khi dự án khơng đủ tài ngun (thời gian, nhân
lực và chi phí), phải thực hiện kiểm thử hồi quy khi sản phẩm được sửa đổi hoặc nâng
cấp và cần kiểm thử lại các tính năng đã thực hiện tốt trước đó, kiểm tra khả năng vận
hành của sản phẩm trong các môi trường đặc biệt (đo tốc độ xử lý trung bình ứng với
mỗi yêu cầu, xác định khả năng chịu tải tối đa, kiểm tra các cơ chế an ninh và an
tồn,…).
1.2.2. Quy trình kiểm thử tự động
Quy trình kiểm thử tự động gồm các bước sau:
• Lập kế hoạch kiểm thử
• Thiết kế test case
• Phát triển test script
• Thực hiện kiểm thử
• Đánh giá kết quả kiểm thử
➢ Lập kế hoạch kiểm thử
Mục đích: Nhằm chỉ định và mơ tả các loại kiểm thử sẽ được triển khai và
thực hiện. Kết quả của bước lập kế hoạch là bản tài liệu kế hoạch kiểm thử
phần mềm, bao gồm:
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
8
• Các giai đoạn kiểm thử áp dụng cho dự án phần mềm
• Chiến lược kiểm thử
• Các cơng cụ kiểm thử
• Nguồn lực kiểm thử
• Mơi trường kiểm thử, bao gồm tài nguyên phần cứng và phần mềm
• Mốc bàn giao các tài liệu kiểm thử
➢ Thiết kế Test case
Mục đích: Nhằm xác định các test case và các bước kiểm tra chi tiết cho mỗi
phiên bản phần mềm. Giai đoạn thiết kế test case là hết sức quan trọng, nó bảo
đảm tất cả các tình huống kiểm thử “quét” hết tất cả yêu cầu cần kiểm tra.
➢ Phát triển Test Script
Mục đích: Bước này thường không bắt buộc trong các loại kiểm thử và mức
kiểm thử, chỉ yêu cầu trong những trường hợp đặc thù cần thiết kế, tạo ra các
test script có khả năng chạy trên máy tính giúp tự động hóa việc thực thi các
bước kiểm tra đã định nghĩa ở bước thiết kế test case.
Trong đó, một test script được hiểu là một nhóm mã lệnh dạng đặc tả kịch
bản dùng để tự động hóa một trình tự kiểm thử, giúp cho việc kiểm thử nhanh
hơn, hoặc cho những trường hợp mà kiểm thử bằng tay sẽ rất khó khăn hoặc
khơng khả thi. Các test script có thể tạo thủ cơng hoặc tạo tự động dùng công
cụ kiểm thử tự động.
➢ Thực hiện kiểm thử
Mục đích: Thực hiện các bước kiểm tra đã thiết kế hoặc thực thi các test
script nếu tiến hành kiểm tra tự động và ghi nhận kết quả.
➢ Đánh giá kết quả kiểm thử
Mục đích: Đánh giá tồn bộ quá trình kiểm thử, bao gồm xem xét và đánh
giá kết quả kiểm thử, liệt kê lỗi, chỉ định các u cầu thay đổi, và tính tốn các
số liệu liên quan đến quá trình kiểm thử như số giờ, thời gian kiểm thử, số lượng
lỗi, phân loại lỗi…
1.2.3. So sánh kiểm thử tự động và kiểm thử thủ công
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
9
❖ Ưu điểm:
• Độ tin cậy cao : Nhờ sự ổn định vượt trội của công cụ kiểm thử tự động so với
con người, đặc biệt trong trường hợp có quá nhiều test case cần được thực thi,
nên độ tin cậy của kiểm thử tự động thường cao hơn so với kiểm thử thủ cơng.
• Khả năng lặp: công cụ kiểm thử tự động ra đời là để giúp cho các tester không
phải lặp đi lặp lại các thao tác như: nhập dữ liệu, click, check kết quả…
• Khả năng tái sử dụng dụng: với một bộ kiểm thử tự động, người ta có thể sử
dụng cho nhiều phiên bản ứng dụng khác nhau, đây được gọi là tính tái sử
dụng.
• Tốc độ cao (Fast): do thực thi bởi máy nên tốc độ của kiểm thử tự động nhanh
hơn nhiều so với tốc độ của con người. Nếu cần 5 phút để thực thi một test
case một cách thủ cơng thì có thể người ta chỉ cần khoảng 30 giây để thực thi
một cách tự động.
• Chi phí thấp: nếu áp dụng kiểm thử tự động đúng cách, người ta có thể tiết
kiệm được nhiều chi phí, thời gian và nhân lực, do kiểm thử tự động nhanh
hơn nhiều so với kiểm thử thủ công, đồng thời nhân lực cần để thực thi và bảo
trì scripts khơng nhiều.
1.2.4. Một số công cụ kiểm thử tự động phổ biến
-
Selenium
-
WebdriverIO
-
Visual Studio
-
QuickTest Professional (QTP)
-
Test Complete
-
LoadTest
1.3. CÔNG CỤ KIỂM THỬ TỰ ĐỘNG WEBDRIVERIO
1.3.1. Tổng quan về WebdriverIO
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
10
WebDriverIO là một tiện ích kiểm thử với mã nguồn mở sử dụng ngơn ngữ
NodeJS, cịn được biết đến là một triển khai tùy chỉnh cho API webdriver W3C của
selenium
• Hỗ trợ viết các bài kiểm tra test bằng javascripts trong các framework
• Nó sẽ gửi các yêu cầu đến máy chủ Selenium thông qua Giao thức WebDriver
và xử lý phản hồi của nó.
• Các u cầu này được bao bọc trong các lệnh hữu ích và có thể được sử dụng
để kiểm tra một số khía cạnh của trang web theo cách tự động.
❖ Ưu điểm của WebdriverIO
• Thân thiện với Front-end
o Khơng giống như hầu hết các framework tự động hóa các trình
duyệt hiện có, WebDriverIO được viết hoàn toàn bằng JavaScript.
Ngay cả việc cài đặt Selenium cũng được thực hiện thơng qua một
mơ-đun NPM.
• Sử dụng các điểm mạnh của Selenium
o WebdriverIO sử dụng các điểm mạnh của Selenium, giúp đơn giản
hóa việc chạy các bài test trong tất cả các loại trình duyệt. Selenium,
là một nền tảng cực kỳ mạnh mẽ và dẫn đầu ngành về việc chạy tự
động hóa trình duyệt và WebdriverIO hơn cả Selenium.
• Dễ sử dụng
o Các lệnh sử dụng trong các bài kiểm tra WebDriverIO rất rõ ràng,
ngắn gọn và tất cả đều theo ý nghĩa thông thường.
o WebDriverIO không bắt viết code để kết nối hai phần với nhau ví
dụ:
▪ Nếu muốn click vào 1 button bằng lệnh Selenium thơng
thường thì cần sử dụng 2 lệnh : một là lấy phần tử và hai là
click vào phần tử đó
driver.findElement(webdriver.By.id('Submit')).click();
▪ Cịn WebDriverIO đơn giản chỉ cần viết một lệnh click và
đưa phần tử vào lệnh
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
11
$('#Submit').click()
❖ Hỗ trợ kiểm thử trên nhiều browser
o Chrome
o FireFox
o Safari
o PhantomJS
o Edge
❖ Hỗ trợ nhiều framework testing
o Mocha
o Cucumber
o Jasmine
1.3.2. Các câu lệnh thông dụng sử dụng trong WebdriverIO
a) Các câu lệnh browser
-
browser.url(url)
o Yêu cầu: URL đầy đủ
o Sử dụng để tải URL của trình duyệt và mở URL
-
browser.getTitle()
o Sử dụng để lấy tiêu đề của trang Web hiện tại
-
browser.getUrl()
o Sử dụng để lấy URL của trang hiện tại đã được tải trên trình duyệt
-
browser.uploadFile(localPath)
o Tải tệp lên máy chủ Selenium Standalone hoặc trình điều khiển trình
duyệt khác (ví dụ: Chromedriver). Lệnh này chỉ được hỗ trợ khi sử dụng
Selenium Hub hoặc Chromedriver.
-
browser.acceptAlert()
o Sử dụng để chấp nhận hộp thoại cảnh báo đang hiển thị. Thông thường,
điều này tương đương với việc nhấp vào nút 'OK' trong hộp thoại.
-
browser.dismissAlert()
o Sử dụng để loại bỏ hộp thoại cảnh báo hiện đang hiển thị. Điều này
tương đương với việc nhấp vào nút 'Hủy bỏ' (Cancel).
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
-
12
browser.getAlertText()
o Sử dụng để lấy văn bản đang hiển thị trên hộp thoại cảnh báo.
-
browser.getWindowHandle()
o Sử dụng để lấy cửa sổ xử lý (window handle) của cửa sổ hiện tại.
o Một số trang Web có nhiều frames hoặc nhiều cửa sổ. WebDriverIO
gán id cho mỗi cửa sổ ngay khi đối tượng WebDriver được khởi tạo. Id
này được gọi là cửa sổ xử lý.
-
browser.switchToWindow(handle)
o Yêu cầu: window handle hoặc thứ tự của window handle
o Sử dụng để chuyển sang tab khác
-
browser.refresh()
o Sử dụng để làm mới trình duyệt hiện tại
-
browser.saveScreenshot(filename)
o Sử dụng để chụp lại màn hình trình duyệt hiện tại
b) Các câu lệnh WebElement
-
$(selector).click()
o Yêu cầu: Selector tương ứng với phần tử cần click
o Sử dụng để click vào phần tử cụ thể (thông thường sẽ là các button hoạc
linktext)
-
$(selector).getAttribute(attributeName)
o Yêu cầu: Selector tương ứng với phần tử cần lấy thuộc tính
o Sử dụng để nhận về giá trị của một thuộc tính được chỉ định. Nếu thuộc
tính đã cho khơng tồn tại, giá trị trả về sẽ là null hoặc "" (chuỗi trống)
-
$(selector).getCSSProperty(cssProperty)
o Yêu cầu: Selector tương ứng với phần tử cần lấy thuộc tính
o Sử dụng để lấy thuộc tính CSS của một phần tử. Các thuộc tính CSS
bao gồm:
▪ Đường viền (bao gồm đường viền, màu đường viền và chiều
rộng đường viền)
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58
Đồ án tốt nghiệp
13
▪ Padding (bao gồm padding-top, padding-right, padding-bottom,
và padding-left)
▪ Lợi nhuận (bao gồm margin-top, margin-right, margin-bottom,
và margin-left)
▪ Họ phông chữ
▪ Cỡ chữ
▪ Màu nền
▪ Chiều rộng
▪ Chiều cao
-
$(selector).getText()
o Yêu cầu: selector tương ứng với phần tử cần lấy text
o Sử dụng để lấy nội dung văn bản của phần tử
-
$(selector).setValue(value)
o Yêu cầu: Selector của phần tử cần setValue
o Sử dụng để thêm giá trị cho phần tử (thông thường dữ liệu sẽ được thêm
vào các textbox). “setValue” sẽ tự động xóa giá trị trước đó.
-
$(selector).addValue(value)
o Yêu cầu: Selector của phần tử cần setValue
o Sử dụng để thêm giá trị cho phần tử và phù hợp cho những phần tử
khơng cần phải xóa giá trị trước đó.
-
$(selector).waitForDisplayed({ timeout: })
o Yêu cầu: Selector tương ứng với phần tử cần chờ để hiển thị
o Sử dụng để tạo độ trễ chờ cho một phần tử hiển thị (cứ 500ms sẽ check
phần tử đó, nếu hết thời gian được yêu cầu chờ mà phần tử vẫn khơng
hiển thị thì hệ thống sẽ báo lỗi)
-
$(selector).getSize(prop)
o Yêu cầu: Selector tương ứng với phần tử cần chờ để hiển thị
o Sử dụng để nhận chiều rộng và chiều cao của phần tử
1.4. PHƯƠNG HƯỚNG ĐỀ TÀI
SVTH: Tạ Hữu Đức
Lớp: KTĐT & THCN K58