3 - NỘI DUNG CÁC PHẦN THUYẾT MINH VÀ TÍNH TOÁN: Chương 1: Tổng quan về kiểm thử phần mềm và kiểm thử tự động 20%Chương 2: Ứng dụng học máy trong trong kiểm thử tự động• Giới thiệu về Mac
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ NÔNG NGHIỆP VÀ PTNT
TRƯỜNG ĐẠI HỌC THỦY LỢI
NGUYỄN THÁI BẢO
ỨNG DỤNG HỌC MÁY TRONG KIỂM THỬ TỰ ĐỘNG SỬ
DỤNG CÔNG CỤ MABL
ĐỒ ÁN TỐT NGHIỆP
HÀ NỘI, NĂM 2021
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ NÔNG NGHIỆP VÀ PTNT
TRƯỜNG ĐẠI HỌC THỦY LỢI
NGUYỄN THÁI BẢO
ỨNG DỤNG HỌC MÁY TRONG KIỂM THỬ TỰ ĐỘNG SỬ
Trang 3ĐỒ ÁN TỐT NGHIỆP
HỌ VÀ
TÊN ĐỒ ÁN
TỐT NGHI ỆP
HÀ NỘI, NĂM 2021
Trang 4CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc
-« -
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: NGUYỄN THÁI BẢO Hệ đào tạo: Đại học chính quy
Khoa: Công nghệ thông tin
1- TÊN ĐỀ TÀI:
ỨNG DỤNG HỌC MÁY TRONG KIỂM THỬ TỰ ĐỘNG SỬ DỤNG CÔNG CỤ MABL
2- CÁC TÀI LIỆU CƠ BẢN:
[1] Ron Patton , Sách giáo trình Software Testing, 2000
[2] D G Rex Black, Sách giáo trình Foundation of Software Testing_ISTQB Certification
[3] Thomas Hamilton, "Automation Testing Tutorial | What is Automated Testing? ",
2021
[4] V H Tiệp, "Machine Learning cơ bản"
[5] Maxim Chernyak, "Machine Learning for GUI Test Automation"
[6] Gary Messiana, "Machine Learning in Software Testing", 2021
[7] Jason Arbon, "AI for Software Testing", 2017
[8] "Mabl Guides", 2021
[9] Alisha Sheikh, "Mabl AI Machine Learning Test Automation", 2018
[10] Yotam Sharan, Honghao Wang and Sovan Rath, "GUI Testing Powered by Deep Learning", 2018
[11] Saif Sadiq, "Machine Learning for Automation Testing", 2017
Trang 53 - NỘI DUNG CÁC PHẦN THUYẾT MINH VÀ TÍNH TOÁN:
Chương 1: Tổng quan về kiểm thử phần mềm và kiểm thử tự động 20%Chương 2: Ứng dụng học máy trong trong kiểm thử tự động
• Giới thiệu về Machine Leaning
• Ứng dụng học máy trong kiểm thử phần mềm
• Một số mô hình huấn luyện học máy trong kiểm thử tự động
4- GIÁO VIÊN HƯỚNG DẪN TỪNG PHẦN
Chương 1: Tổng quan về kiểm thử phần mềm và
Chương 2: Ứng dụng học máy trong trong kiểm
thử tự động
PGS.TS Nguyễn Hữu Quỳnh
Chương 3: Kiểm thử giao diện website với công
cụ kiểm thử tự động ứng dụng học máy Mabl
PGS.TS Nguyễn Hữu Quỳnh
Trang 6Kết luận PGS.TS Nguyễn Hữu Quỳnh
5- NGÀY GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Ngày tháng năm 2021
Trưởng Bộ môn Giáo viên hướng dẫn chính (Ký và ghi rõ Họ tên) (Ký và ghi rõ Họ tên)
Trang 7Nhiệm vụ Đồ án tốt nghiệp đã được Hội đồng thi tốt nghiệp của Khoa thông qua
Trang 8TRƯỜNG ĐẠI HỌC THUỶ LỢI
KHOA CÔNG NGHỆ THÔNG TIN
Giáo viên hướng dẫn: PGS.TS Nguyễn Hữu Quỳnh
Thời gian thực hiện: 14 tuần từ ngày: 27/09/2021 đến ngày: 02/01/2022
TÓM TẮT ĐỀ TÀI
Công nghệ đang phát triển với tốc độ cực nhanh và giữ vai trò quan trọng trong cuộcsống Vì vậy việc sử dụng các phần mềm để kinh doanh càng trở nên cần thiết Nó đòihỏi các công ty phần mềm phải cung cấp sản phẩm nhanh và liên tục Những ứng dụngtrước khi ra mắt phải được kiểm thử để đảm bảo sự tối ưu nhất cho người dùng Kiểmthử thủ công đang đơn giản dần không đáp ứng được nhu cầu hiện tại Quá trình kiểmthử phần mềm cần thông minh hơn, nhanh hơn và tốt hơn
Với kiểm thử thủ công, người kiểm thử thực hiện các ca kiểm thử lần lượt từng bước
và đưa ra kết luận Trong trường hợp giao diện được cập nhật liên tục, người kiểm thửcần lặp đi lặp lại ca kiểm thử đó rất mất thời gian và chi phí Sự xuất hiển của kiểm thử
tự động đã khắc phục điều này, người kiểm thử tạo ra các lệnh để công cụ thực hiện cakiểm thử và so sánh kết quả đầu ra Khi giao diện thay đổi phần tử, chỉ cần cập nhật lạicác lệnh Một vài ca kiểm thử cần thay đổi có thể không làm khó người kiểm thử,nhưng khi cần cập nhật nhiều ca kiểm thử sẽ là bài toán về thời gian và độ chính xác.Bằng việc áp dụng học máy vào kiểm thử tự động, các hạn chế của bài toán kiểm thửgiao diện dần được giải quyết Dữ liệu lớn, trí thông minh máy móc được đào tạo giúpcho các công cụ kiểm thử tự động thực hiện các ca kiểm thử trên hàng nghìn giao diện
Trang 9trong thời gian ngắn, đưa ra các kết luận cuối cùng về ca kiểm thử một cách thôngminh như con người Các ca kiểm thử được sinh ra, cập nhật tự động phù hợp với hoàncảnh ứng dụng mà không cần người kiểm thử cập nhật các dòng lệnh.
Mong muốn tìm hiểu việc ứng dụng học máy vào kiểm thử tự động như thế, em lựachọn đề tài: “ỨNG DỤNG HỌC MÁY TRONG KIỂM THỬ TỰ ĐỘNG SỬ DỤNGCÔNG CỤ MABL”
CÁC MỤC TIÊU CHÍNH
Kiến thức
• Tìm hiểu về kiểm thử phần mềm và kiểm thử tự động
• Tìm hiểu về học máy trong kiểm thử tự động
• Tìm hiểu về công cụ Mabl
• Sinh viên hiểu được về kiểm thử phần mềm và kiểm thử tự động
• Sinh viên tìm hiểu được phương pháp học máy phù hợp với bài toán kiểm thử
• Sinh viên nắm ứng dụng được phương pháp học máy vào bài toán kiểm thử tựđộng
Kỹ năng
• Sinh viên sử dụng được công cụ Mabl để kiểm thử giao diện cho website, từ đóphân tích được ưu điểm của việc áp dụng các phương pháp máy học
Trang 10LỜI CAM ĐOAN
Tác giả xin cam đoan đây là Đồ án tốt nghiệp của bản thân tác giả Các kết quả trong
Đồ án tốt nghiệp này là trung thực và không sao chép từ bất kỳ một nguồn nào và dướibất kỳ hình thức nào.Việc tham khảo các nguồn tài liệu (nếu có) đã được thực hiệntrích dẫn và ghi nguồn tài liệu tham khảo đúng quy định
Tác giả ĐATN/KLTN
Nguyễn Thái Bảo
i
Trang 11Cuối cùng, em cũng xin chân thành cảm ơn các anh, các chị và các bạn học lớp 59TH2trường Đại học Thủy Lợi đã luôn động viên, giúp đỡ và nhiệt tình chia sẻ với emnhững kinh nghiệm học tập, thực hành trong suốt khoá học
Hà Nội, ngày … tháng … năm 2021
Sinh viên thực hiện
Nguyễn Thái Bảo
ii
Trang 12MỤC LỤC
DANH MỤC CÁC HÌNH ẢNH v
DANH MỤC BẢNG BIỂU viii
DANH MỤC CÁC TỪ VIẾT TẮT VÀ GIẢI THÍCH CÁC THUẬT NGỮ ix
MỞ ĐẦU x
CHƯƠNG 1 : TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ KIỂM THỬ TỰ ĐỘNG 1
1.1.1 Kiểm thử phần mềm là gì ? 1
1.1.2 Tầm quan trọng của kiểm thử phần mềm 2
1.1.3 Các nguyên tắc cơ bản về kiểm thử 4
1.1.4 Kĩ thuật trong thiết kế kiểm thử 6
1.2 Kiểm thử tự động 10
1.2.1 Khái niệm kiểm thử tự động 10
1.2.2 Sự khác biệt giữa kiểm thử thủ công và kiểm thử tự động 12
1.2.3 Ưu, nhược điểm của kiểm thử tự động 13
Tiểu kết chương 1: 15
CHƯƠNG 2 ỨNG DỤNG HỌC MÁY TRONG TRONG KIỂM THỬ TỰ ĐỘNG 16
2.1 Học máy (Machine Learning) 16
2.1.1 Tổng quan về học máy 16
2.1.2 Các bài toán đặc trưng trong học máy 18
2.2 Ứng dụng học máy trong kiểm thử phần mềm 21
2.2.1 Giới thiệu chung về bài toán học máy trong kiểm thử tự động 21
2.2.2 Các thuật toán sử dụng trong kiểm thử tự động 23
2.2.3 Lĩnh vực áp dụng học máy để kiểm thử phần mềm 27
2.3 Một số mô hình huấn luyện học máy trong kiểm thử tự động 30
2.3.1 Huấn luyện học máy : Nhận biết trạng thái ứng dụng 31
2.3.2 Huấn luyện học máy: Áp dụng tập dữ liệu đầu vào kiểm tra 32
2.3.3 Thực thi máy học : Áp dụng thế giới thật 33
2.3.4 Huấn luyện học máy: Xác minh hành vi 34
Tiểu kết chương 2: 37
CHƯƠNG 3 KIỂM THỬ GIAO DIỆN WEBSITE VỚI CÔNG CỤ KIỂM THỬ TỰ ĐỘNG ỨNG DỤNG HỌC MÁY MABL 38
iii
Trang 133.1 Giới thiệu về công cụ 38
3.1.1 Khái quát 38
3.1.2 Điểm khác biệt của công cụ kiểm thử tự động Mabl 38
3.1.3 Lý do nên lựa chọn công cụ kiểm thử tự động Mabl 39
3.2 Cách hoạt động 40
3.3 Mô hình học máy trong Mabl 41
3.3.1 Tổng quan về hệ thống 41
3.3.2 Mô tả tập dữ liệu các phần tử 42
3.4 Xây dựng kịch bản kiểm thử 45
3.4.1 Phương thức thực nghiệm 45
3.4.2 Quá trình thực hiện 48
3.5 Mô tả quá trình thực nghiệm 49
3.5.1 Phương pháp tìm phần tử chính xác 49
3.5.2 Phương pháp sử dụng một nhận định 64
3.5.3 Phương pháp sử dụng các biến mặc định 68
3.5.4 Sử dụng kết hợp luồng và vòng lặp 72
3.5.5 Cách Mabl đánh giá các kết quả kiểm thử 76
3.6 Đánh giá kết quả kiểm thử 78
Tiểu kết chương 3: 80
KẾT LUẬN 81
TÀI LIỆU THAM KHẢO 83
DANH MỤC CÁC HÌNH Ả Hình 1 1 Tầm quan trọng của kiểm thử phần mềm 3
Hình 1 2 Quá trình của kiểm thử phần mềm 4
iv
Trang 14Hình 1 3 Mức độ của kiểm thử phần mềm 5
Hình 1 4 Các loại kiểm thử phần mềm 6
Hình 1 5 Ví dụ về kĩ thuật phân vùng tương đương 7
Hình 1 6 Ví dụ về kĩ thuật phân tích giá trị biên 7
Hình 1 7 Ví dụ về kĩ thuật bảng quyết định 8
Hình 1 8 Ví dụ về sơ đồ chuyển trạng thái 9
Hình 1 9 Ví dụ bảng chuyển đổi trạng thái 9
Hình 1 10 Kĩ thuật kiểm thử phần mềm dựa trên kinh nghiệm 10
Hình 1 11 Quy trình kiểm thử tự động 12
Y Hình 2 1 Các phương pháp học máy 17 Hình 2 2 Mô hình chung cho các bài toán học máy 19 Hình 2 4 Mô hình vòng trong phát triển của kiểm thử tự động 22 Hình 2 5 Mô hình bài toán SVM 24 Hình 2 6 Mối quan hệ của Học sâu , Học máy và Trí tuệ nhân tạo 25 Hình 2 7 CNN trong mô hình kiểm thử giao diện website 27 Hình 2 8 Huấn luyện học máy trong kiểm thử tự động 32 Hình 2 9 Huấn luyện học máy : Nhận biết trạng thái ứng dụng 33 Hình 2 10 Huấn luyện học máy : Áp dụng đầu vào kiểm tra 34 Hình 2 11 Thực thi máy học : Áp dụng thế giới thật 35 Hình 2 12 Huấn luyện học máy : Xác minh hành vi 36 Hình 3 1 Giao diện Mabl Trainer 40
Hình 3 2 Mô hình học máy và hoạt động của Mabl Trainer 42
Hình 3 3 Tập dữ liệu Nút 43
Hình 3 4 Tập dữ liệu Văn bản 43
Hình 3 5 Tập dữ liệu Thanh lựa chọn 44
Hình 3 6 Tập dữ liệu Phần tử tương tự 44
Hình 3 7 Tập dữ liệu Hộp nhập văn bản 45
Hình 3 8 Giao diện trang chủ 46
Hình 3 9 Giao diện trang Shop 46
v
Trang 15Hình 3 10 Giao diện trang chi tiết sản phẩm 47
Hình 3 11 Giao diện trang Contact 47
Hình 3 12 Giao diện trang Book Online 48
Hình 3 13 Giao diện nút “EXPLORE NOW” ban đầu 50
Hình 3 14 Kịch bản ca kiểm thử nút 51
Hình 3 15 Giao diện nút “EXPLORE NOW” sau khi thay đổi 52
Hình 3 16 Mabl tìm phần tử nút 52
Hình 3 17 Giao diện đoạn văn bản đầu 53
Hình 3 18 Tùy chọn định cấu hình More Actions 54
Hình 3 19 Lựa chọn thuộc tính định cấu hình 55
Hình 3 20 Màn hình màn định cấu hình tìm kiếm 56
Hình 3 21 Kịch bản ca kiểm thử text 56
Hình 3 22 Giao diện đoạn văn bản phần giới thiệu sau khi chỉnh sửa 57
Hình 3 23 Mabl tìm kiếm định cấu hình trả kết quả như thiết lập 57
Hình 3 24 Mabl tìm kiếm văn bản được định cấu hình áp dụng tự chữa bệnh 58
Hình 3 25 Giao diện của màn Shop 59
Hình 3 26 Mabl Trainer yêu cầu cung cấp ngữ cảnh 60
Hình 3 27 Bảng thuộc tính khi tìm kiếm các phần tử giống nhau 61
Hình 3 28 Chi tiết thuộc tính xác định đúng phần tử tương tự 62
Hình 3 29 Kịch bản ca kiểm thử tương tự 62
Hình 3 30 Giao diện của màn Shop sau khi thay đổi vị trí phần tử 63
Hình 3 31 Mabl tìm kiếm cho các phần tử tương tự 63
Hình 3 32 Giao diện của thanh công cụ ban đầu 64
Hình 3 33 Giao diện màn chi tiết sản phẩm ban đầu 64
Hình 3 34 Mabl đưa khẳng định các phần tử 65
Hình 3 35 Kịch bản ca kiểm thử khẳng định phần tử 66
Hình 3 36 Giao diện của thanh công cụ sau khi thay đổi 66
Hình 3 37 Giao diện của chi tiết sản phẩm sau khi thay đổi 67
Hình 3 38 Mabl phát hiện khi có sự thay đổi phần tử thanh công cụ 67
Hình 3 39 Mabl sử dụng phương pháp đưa ra nhận định 68
Hình 3 40 Giao diện màn Contact ban đầu 69
vi
Trang 28tắc, các trường hợp kiểm thử được thiết kế để bao phủ mỗi phân vùng ít nhất mộtlần.
+ Phân tích giá trị biên (Boundary Value Analysis) : Mở rộng phân vùng tươngđương, kiểm tra các cạnh của các lớp tương đương (các phần tử lớn nhất vànhỏ nhất)
+ Kĩ thuật bảng quyết định (Decision Table) : Để kiểm tra hành vi của hệ thống chocác kết hợp đầu vào khác nhau; Một cách tiếp cận có hệ thống trong đó các kết hợpđầu vào khác nhau và hành vi hệ thống tương ứng của chúng (Output) được ghi lạidưới dạng bảng
xixHình 1 5 Ví dụ về kĩ thuật phân vùng tương đương
Hình 1 6 Ví dụ về kĩ thuật phân tích giá trị biên
Trang 29+ Kĩ thuật chuyển đổi trạng thái (State Transition Testing) :
Hai cách chính của quá trình chuyển đổi trạng thái: Sơ đồ chuyển đổi trạng thái vàbảng chuyển đổi trạng thái
xxHình 1 7 Ví dụ về kĩ thuật bảng quyết định
Trang 30- Các kỹ thuật kiểm thử dựa trên kinh nghiệm (Experience-based test techniques).Định nghĩa: Các kỹ thuật kiểm thử dựa trên kinh nghiệm tận dụng kinh nghiệmcủa các nhà phát triển, người kiểm tra và người dùng để thiết kế, triển khai và thựchiện các bài kiểm tra.[ CITATION Ron00 \l 1033 ]
Các loại kỹ thuật kiểm thử dựa vào kinh nghiệm (Type of Experience-based testdesign techniques) :
xxiHình 1 9 Ví dụ bảng chuyển đổi trạng thái
Hình 1 10 Kỹ thuật kiểm thử phần mềm dựa trên kinh nghiệm
Trang 311.2 Kiểm thử tự động
1.2.1 Khái niệm kiểm thử tự động
Khái niệm : Kiểm thử tự động hoặc tự động hóa kiểm thử là một kỹ thuật kiểm thửphần mềm thực hiện bằng cách sử dụng các công cụ phần mềm kiểm thử tự động
để thực thi một bộ trường hợp kiểm thử Ngược lại, kiểm thử thủ công được thựchiện bởi một người ngồi trước máy tính thực hiện các bước kiểm tra một cách cẩnthận
- Phần mềm kiểm thử tự động cũng có thể nhập dữ liệu kiểm thử vào hệ thống đangkiểm thử, so sánh kết quả dự kiến và thực tế và tạo báo cáo kiểm thử chi tiết Tựđộng hóa kiểm thử phần mềm đòi hỏi đầu tư đáng kể về tiền bạc và nguồn nhânlực
- Các chu kỳ phát triển kế tiếp sẽ yêu cầu thực hiện lặp lại cùng một bộ thử nghiệm
Sử dụng công cụ tự động hóa kiểm thử, có thể ghi lại bộ kiểm thử này và phát lạitheo yêu cầu Khi bộ thử nghiệm được tự động hóa, không cần sự can thiệp của conngười [CITATION Tho21 \l 1033 ]
Mục tiêu của kiểm thử tự động là giảm số lượng các trường hợp kiểm thử đượcchạy theo cách thủ công và không loại bỏ hoàn toàn kiểm thử thủ công
Tự động hóa kiểm thử là cách tốt nhất để tăng hiệu quả, phạm vi kiểm tra và tốc độthực thi trong kiểm thử phần mềm Kiểm thử phần mềm tự động rất quan trọng vìnhững lý do sau:
- Kiểm thử thủ công tất cả các quy trình công việc, tất cả các lĩnh vực, tất cả các kịchbản tiêu cực sẽ rất tiêu tốn thời gian và tiền bạc
- Rất khó để kiểm tra các trang website đa ngôn ngữ theo cách thủ công
- Tự động hóa kiểm thử trong kiểm thử phần mềm không cần đến sự can thiệp củacon người Bạn có thể chạy thử nghiệm tự động mà không cần giám sát , kéo dàikhoảng thời gian (qua đêm)
- Tự động hóa kiểm thử cũng tăng tốc độ thực hiện kiểm tra
xxii
Trang 32- Tự động hóa còn giúp tăng phạm vi kiểm tra.
- Kiểm tra thủ công có thể trở nên nhàm chán và do đó dễ xảy ra lỗi
⮚ Quy trình kiểm thử tự động:
Các bước sau được thực hiện trong Quy trình tự động hóa
• Bước 1) Lựa chọn công cụ kiểm tra
• Bước 2) Xác định phạm vi tự động hóa
• Bước 3) Lập kế hoạch, thiết kế và phát triển
• Bước 4) Thực hiện kiểm tra
• Bước 5) Bảo trì
1.2.2 Sự khác biệt giữa kiểm thử thủ công và kiểm thử tự động
Được thể hiện qua 5 đặc điểm sau đây:
- Độ tin cậy: Thông thường, kiểm thử tự động chạy với sự trợ giúp của công cụ,phần mềm nên độ tin cậy và độ chính xác cao hơn so với kiểm thử thủ công, đượcthực hiện hoàn toàn do con người
- Chi phí: Kiểm thử tự động phụ thuộc vào các công cụ được triển khai để thực hiệntest Trong khi đó, vì thực hiện bởi con người nên kiểm thử thủ công sẽ phụ thuộcvào nguồn nhân lực được sử dụng khi kiểm thử
xxiiiHình 1 11 Quy trình kiểm thử tự động
Trang 33- Testcase: Kiểm thử tự động phù hợp với các Testcase chạy liên tục trong một thờigian dài, kiểm thử thủ công lại phù hợp với các testcase được chạy một hoặc hailần Vì vậy, khi thực hiện kiểm thử thủ công không có sự lặp lại của các testcase.
- Thời gian: Thời gian cần thiết để kiểm thử của kiểm thử thủ công nhiều hơn so với
số lượng nhân sự tham gia vào kiểm thử Kiểm thử tự động lại cần ít thời gian hơn
so với các công cụ phần mềm cần thiết để thực hiện kiểm thử
- Đảm bảo sự thân thiện của phần mềm, ứng dụng đối với con người: Khi thực hiệnkiểm thử thủ công, các chuyên viên kiểm thử đã quan sát và tìm ra những điểm bất
ổn, tăng trải nghiệm của người dùng cho từng ứng dụng Kiểm thử tự động dokhông có sự quan sát của con người nên không có sự đảm bảo về trải nghiệm chokhách hàng
Tuy nhiên, để tạo ra sản phẩm phần mềm hay ứng dụng tốt nhất đến cho ngườidùng, các tester cần linh hoạt kết hợp giữa hai loại kiểm thử: Manual Testing vàkiểm thử tự động
1.2.3 Ưu, nhược điểm của kiểm thử tự động
Ưu điểm:
- Độ tin cậy: Công cụ kiểm thử tự động mang tính ổn định cao hơn so với con người.Đặc biệt, trong những trường hợp nhiều test case thì độ tin cậy của kiểm thử tựđộng sẽ càng đạt mức tối ưu hơn so với kiểm thử thủ công
- Khả năng lặp lại: Với sự ra đời của những công cụ kiểm thử tự động sẽ hỗ trợ cáctester không phải trải qua quá trình lặp lại nhiều thao tác, điều này giúp giảm được
sự nhàm chán cũng như đạt độ tin cậy cao và ổn định
- Khả năng tái sử dụng: Đối với một bộ kiểm thử tự động sẽ được nhiều người sửdụng với nhiều những phiên bản khác nhau điều này giúp cho việc tái tính sử dụng
- Tốc độ cao: Tốc độ kiểm thử tự động nhanh so hơn nhiều với tốc độ của conngười.Khi thực hiện kiểm thử hoàn toàn test case một cách tự động luôn mất ít thờigian hơn so với việc kiểm thử test case đó một cách thủ công
xxiv
Trang 34- Chi phí thấp: Đặc biệt, chi phí sử dụng kiểm thử tự động khá hấp dẫn và phù hợp,
có thể tiết kiệm được nhiều chi phí, thời gian cũng như nhân lực Do quá trình kiểmthử nhanh hơn thử thủ công nên nhân lực khi thực thi và bảo trì không nhiều
Nhược điểm:
- Khó bảo trì và mở rộng: Trong một dự án, để có thể mở rộng được phạm vi kiểmthử tự động sẽ khá khó so với những kiểm thử thủ công vì quá trình cập nhật vàchỉnh sử theo những yêu cầu của debug, thay đổi dữ liệu, cập nhật code mới
- Khả năng bao phủ kém: Do mở rộng nên sự đòi hỏi kỹ năng lập trình là rất cầnthiết và khá cầu kỳ để bao quát được việc kiểm thử tự động từ cơ bản đến việc xéttrên nhiều góc nhìn toàn diện
- Vấn đề công cụ và nhân lực: Hiện nay có nhiều công cụ hỗ trợ kiểm thử tự độngcũng khá tốt nhưng đem lại nhiều hạn chế và nhân lực chưa đạt yêu cầu dẫn đếnviệc có thể sử dụng một cách thành thạo sẽ gặp nhiều khó khăn và thách thức
Tầm quan trọng của kiểm thử tự động trong thời kỳ công nghiệp 4.0 : Với sự
bùng nổ của công nghệ thông tin như hiện nay thì automation test là một trong nhữngphần mềm ứng dụng đang chiếm xu thế và được ưa chuộng nhất Kéo theo đó nhữngnhu cầu về nhân lực trong lĩnh vực này đòi hỏi khác cao về chuyên môn, cần phải cónhững kỹ năng để lập trình và những kỹ năng để thao tác các phần mềm Bởi vậy,automation test khá cần thiết và thực tế trong thời đại hiện nay.[CITATION Tho21 \l
1033 ]
xxv
Trang 35Tiểu kết chương 1:
Ở chương 1 đồ án đã trình bày được về:
Các kiến thức cơ bản về kiểm thử phần mềm
Sự khác nhau giữa kiểm thử thủ công và kiểm thử tự động
Ưu nhược điểm của kiểm thử tự động
Tầm quan trọng của kiểm thử tự động trong tương lai
Mặc dù kiểm thử tự động mang lại nhiều tiện ích, tuy nhiên vẫn gặp khó khăn khi cácphần tử về giao diện có sự thay đổi Để giải quyết được điều này, ở chương tiếp theo
em sẽ trình bày về học máy và ứng dụng học máy trong kiểm thử tự động
xxvi
Trang 36CHƯƠNG 2 ỨNG DỤNG HỌC MÁY TRONG TRONG KIỂM THỬ TỰ ĐỘNG
2.1 Học máy (Machine Learning)
2.1.1 Tổng quan về học máy
Machine Learning gây nên cơn sốt công nghệ trên toàn thế giới trong vài năm nay Hàng loạt các ứng dụng sử dụng machine learning ra đời trên mọi lĩnh vực của cuộcsống, từ khoa học máy tính đến những ngành ít liên quan hơn như vật lý, hóa học, yhọc, chính trị Xe tự hành của Google và Tesla, hệ thống tự tag khuôn mặt trong ảnhcủa Facebook, trợ lý ảo Siri của Apple, hệ thống gợi ý sản phẩm của Amazon, hệ thốnggợi ý phim của Netflix, máy chơi cờ vây AlphaGo của Google DeepMind, ….Alphago, cỗ máy đánh cờ vây với khả năng tính toán trong một không gian có sốlượng phần tử còn nhiều hơn số lượng hạt trong vũ trụ, tối ưu hơn bất kì đại kì thủ nào,
là một trong rất nhiều ví dụ hùng hồn cho sự vượt trội của machine learning so với cácphương pháp cổ điển
Machine Learning là một tập con của AI Theo định nghĩa của Wikipedia, Machinelearning is the subfield of computer science that “gives computers the ability to learnwithout being explicitly programmed” Nói đơn giản, Machine Learning là một lĩnhvực nhỏ của Khoa Học Máy Tính, nó có khả năng tự học hỏi dựa trên dữ liệu đưa vào
mà không cần phải được lập trình cụ thể Với mục tiêu làm cho máy tính có những khảnăng nhận thức cơ bản của con người như nghe, nhìn, hiểu được ngôn ngữ, giải toán,lập trình, …và hỗ trợ con người trong việc xử lý một khối lượng thông tin khổng lồ màchúng ta phải đối mặt hàng ngày, hay còn gọi là Big Data.[CITATION VHT \l 1033 ]Trên thực tế có 4 dạng học máy cơ bản:
xxvii
Trang 37Học có giám sát (supervised learning - SL)
Máy tính được học một số mẫu gồm đầu vào (Input) và đầu ra (Output) tương ứngtrước Đối với loại học này sẽ có hai pha là pha huấn luyện (training) và pha kiểm thử(testing) SL sẽ xem xét các tập huấn luyện này để từ đó có thể đưa ra dự đoán đầu racho 1 đầu vào mới chưa gặp bao giờ SL thường được sử dụng cho các bài toán phânlớp (classification) Ví dụ một “email” có thể được gán nhãn “thư rác” hoặc “khôngphải thư rác” và đưa vào mô hình SL để phân loại
Học không giám sát (Unsupervised learning - UL)
Đây là một kĩ thuật của máy học nhằm tìm ra một mô hình hay cấu trúc bị ẩn bởi tập
dữ liệu không được gán nhãn cho trước UL khác với SL là không thể xác định trướcoutput từ tập dữ liệu huấn luyện được Tùy thuộc vào tập huấn luyện kết quả output sẽkhác nhau Trái ngược lại với SL, tạp dữ liệu huấn luyện của UL không do con ngườigán nhãn, máy tính sẽ phải tự học hoàn toàn Ứng dụng phổ biến nhất của học khônggiám sát là gom cụm (cluster) Ví dụ, Facebook có thể gợi ý kết bạn có nhiều bạnchung cho bạn, Google có thể gom các bài báo có nội dung gần nhau
Học bán giám sát (Semi-supervised learning - SSL)
Các bài toán khi chúng ta có một lượng lớn dữ liệu nhưng chỉ một phần trong số chúngđược gán nhãn được gọi là SSL Những bài toán thuộc nhóm này nằm giữa SL và UL
Ví dụ, một phần ảnh hoặc văn bản được gán nhãn (ví dụ bức ảnh về người, động vật
xxviiiHình 2 1 Các phương pháp học máy
Trang 38hoặc các văn bản khoa học, chính trị) và phần lớn các bức ảnh/văn bản khác chưa đượcgán nhãn được thu thập từ internet
Học tăng cường (Reinforcement learning - RL)
Là các bài toán giúp cho hệ thống tự xác định hành vi dựa trên hoàn cảnh để đạt đượclợi ích cao nhất (maximizing the performance) Ví dụ, AlphaGo tự chơi với chính mìnhhàng trăm triệu ván chơi để tìm ra các nước đi mới tối ưu trong hàng tỉ tỉ lựa chọn.Một vài ứng dụng khác nữa của RL: Robot tự học, xe tự hành, hệ thống gợi ý(recommender systems), tự đặt lệnh mua chứng khoán,
2.1.2 Các bài toán đặc trưng trong học máy
Trong học máy có ba bài toán đặc trưng:
• Bài toán phân cụm
• Bài toán phân lớp
• Bài toán hồi quy
Phần lớn các bài toán Machine Learning có thể được thể hiện trong hình vẽ dưới đây:
xxix
Trang 39Có hai phases lớn là giai đoạn đào tạo (training phase) và giai đoạn thử nghiệm(testing phase) Với các bài toán thuộc học có giám sát (Supervised learning), các cặp
dữ liệu (input, output), với các bài toán học không giám sát (Unsupervised learning),chỉ có input Hiểu đơn giản training là tập dữ liệu đưa vào huấn luyện sau dùng tậptesting để kiểm tra lại kết quả thông qua các bài toán hồi quy, phân lớp, …
Bài toán phân cụm
Bài toán phân cụm là 1 trong những bài toán của lĩnh vực học không giám sát(Unsupervised Learning), dữ liệu được mô tả trong bài toán không được dán nhãn haynói cách khác thì bài toán này không có đầu ra Trong trường hợp này, thuật toán sẽtìm cách phân cụm - chia dữ liệu thành từng nhóm có đặc điểm tương tự nhau, nhưngđồng thời đặc tính giữa các nhóm đó lại phải càng khác biệt càng tốt
Bài toán phân lớp
xxxHình 2 2 Mô hình chung cho các bài toán học máy
Trang 40Bài toán phân lớp thuộc một nhánh ứng dụng chính của lĩnh vực học có giám sát(Supervised Learning) Và bài toán là quá trình phân lớp một đối tượng dữ liệu vàohay nhiều lớp đã cho trước nhờ một mô hình phân lớp (model) Mô hình này được xâydựng dựa trên một tập dữ liệu được xây dựng trước đó có gán nhãn (hay còn gọi làhuấn luyện) Quá trình phân lớp là quá trình gán nhãn cho đối tượng dữ liệu.
Như vậy, nhiệm vụ của bài toán phân lớp là cần tìm một mô hình phân lớp để khi có
dữ liệu mới thì xác định được dữ liệu đó thuộc vào lớp nào
Bài toán hồi quy
Đây là một phương pháp thống kê mà giá trị kỳ vọng của một hay nhiều biến ngẫunhiên được dự đoán dựa vào điều kiện của các biến ngẫu nhiên (đã tính toán khác) Cụthể có Linear Regression, Logistic Regression, Poisson Regression và học có giám sát.Phân tích hồi quy không chỉ là lựa chọn một đường cong phù hợp với tập dữ liệu mà
nó còn phải trùng khớp với một mô hình với các thành phần ngẫu nhiên (được gọi là
bộ dự đoán – predictor).[CITATION VHT \l 1033 ]
xxxiHình 2 3 Ví dụ về bài toán phân lớp