NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

59
` ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trần Thị Hoan NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG TRÍ TUỆ NHÂN TẠO LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN Chuyên ngành: Kỹ thuật phần mềm Mã số: 8480103.01 Cán bhướng dẫn: PGS. TS Trương Anh Hoàng HÀ NỘI, 2020

Transcript of NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

Page 1: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

`

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trần Thị Hoan

NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM

THỬ CÓ ỨNG DỤNG TRÍ TUỆ NHÂN TẠO

LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN

Chuyên ngành: Kỹ thuật phần mềm

Mã số: 8480103.01

Cán bộ hướng dẫn: PGS. TS Trương Anh Hoàng

HÀ NỘI, 2020

Page 2: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

i

LỜI CẢM ƠN

Được sự phân công của Công Nghệ Thông Tin, trường Đại học Công nghệ, dưới sự

hướng dẫn của thầy PGS. TS. Trương Anh Hoàng, tôi đã hoàn thành luận văn.

Để hoàn thành luận văn này tôi xin cảm ơn các Thầy cô trong khoa Công Nghệ Thông

Tin, trường Đại học Công nghệ đã nhiệt tình dạy dỗ, cung cấp phương pháp, kiến thức

trong suốt thời gian học tập. Tôi xin chân thành cảm ơn PGS. TS. Trương Anh Hoàng đã

tận tình hướng dẫn và chỉ bảo tôi rất nhiều cả về kiến thức cũng như phương pháp làm

việc trong quá trình thực hiện và hoàn thành đồ án.

Mặc dù đã cố gắng và tích cực trong việc thực hiện luận văn nhưng không thể tránh được

những sai sót nhất định, tôi rất mong nhận được sự đóng góp của các thầy cô và các bạn

đồng nghiệp để hoàn chỉnh luận văn và có hướng phát triển hơn nữa.

Tôi xin chân thành cảm ơn.

Page 3: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

ii

LỜI CAM ĐOAN

Tôi xin cam đoan số liệu và kết quả nghiên cứu trong luận văn này là trung thực và

chưa hề được sử dụng để bảo vệ học vị nào. Mọi sự giúp đỡ trong luận văn này đã được

cảm ơn và các thông tin trích dẫn trong luận văn đã được chỉ rõ nguồn gốc rõ ràng và

được phép công bố.

Hà Nội, ngày … tháng … năm 2020 Người thực hiện

Trần Thị Hoan

Page 4: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

iii

MỤC LỤC

LỜI CẢM ƠN ..................................................................................................................... i

MỤC LỤC ......................................................................................................................... iii

THUẬT NGỮ VIẾT TẮT ................................................................................................. v

DANH MỤC BẢNG ......................................................................................................... vi

DANH MỤC BIỂU ĐỒ .................................................................................................... vi

DANH MỤC SƠ ĐỒ, HÌNH VẼ .................................................................................... vii

LỜI MỞ ĐẦU .................................................................................................................... 1

CHƯƠNG 1. TRÍ TUỆ NHÂN TẠO TRONG KIỂM THỬ PHẦN MỀM TỰ

ĐỘNG 4

1.1. Giới thiệu chung ...................................................................................................... 4

1.2. Xu thế sử dụng học máy trong kiểm thử tự động ................................................ 4

1.3. Huấn luyện học máy trong kiểm thử giao diện tự động ...................................... 8

1.3.1 Huấn luyện học máy: Nhận dạng trạng thái ứng dụng .................................... 8

1.3.2 Huấn luyện học máy: Áp dụng tập đầu vào ..................................................... 9

1.3.3 Thực thi ML: Áp dụng thế giới thật................................................................ 10

1.3.4 Huấn luyện học máy: Xác minh hành vi ........................................................ 10

CHƯƠNG 2. GIỚI THIỆU VỀ CÁC CÔNG CỤ ..................................................... 12

2.1. Applitools ............................................................................................................... 12

2.1.1 Applitools là gì? ............................................................................................. 12

3.1.2 AI trong Applitools ............................................................................................ 13

2.2. Testim.io ................................................................................................................. 14

2.2.1 Testim.io là gì? ............................................................................................... 14

2.2.2 AI trong Testim.io ........................................................................................... 15

2.3. TestComplete ......................................................................................................... 16

2.3.1 TestComplete là gì? ........................................................................................ 16

2.3.2 AI trong Testcomplete .................................................................................... 16

2.4. Mabl ........................................................................................................................ 17

2.4.1 Mabl là gì? ..................................................................................................... 17

2.4.2 AI trong Mabl ................................................................................................. 17

CHƯƠNG 3. THỰC NGHIỆM .................................................................................. 19

3.1. Phương thức thực nghiệm .................................................................................... 19

Page 5: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

iv

3.1.1 Ý tưởng chung ................................................................................................ 19

3.1.2 Môi trường thực hiện ..................................................................................... 19

3.1.3 Quá trình thực hiện ........................................................................................ 22

3.1.4 Nhật ký ca kiểm thử mẫu ................................................................................ 23

3.2. Kiểm tra văn bản ................................................................................................... 28

3.3. Kiểm tra ảnh .......................................................................................................... 29

3.4. Kiểm tra nút ........................................................................................................... 30

3.5. Kiểm tra hộp nhập văn bản .................................................................................. 31

3.6. Kiểm tra hộp lựa chọn .......................................................................................... 33

3.7. Kiểm tra thanh thực đơn ...................................................................................... 34

3.8. Kiểm tra biểu đồ .................................................................................................... 35

3.9. Đánh giá kết quả kiểm thử ................................................................................... 35

3.10. So sánh các công cụ ........................................................................................ 40

CHƯƠNG 4. KẾT LUẬN ........................................................................................... 43

TÀI LIỆU THAM KHẢO ............................................................................................... 45

Page 6: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

v

THUẬT NGỮ VIẾT TẮT

Viết tắt Tiếng Anh Tiếng Việt

AI Artificial intelligence Trí tuệ nhân tạo

API Application Programming

Interface

Giao diện lập trình ứng dụng

CD Continuous Deployment Phát triển liên tục

CI Continuous Integration Tích hợp liên tục

CSS Cascading Style Sheet Định kiểu theo tầng

CV Computer vision Thị giác máy tính

DOM Document Object Model Mô hình đối tượng Tài liệu

F Fail Thất bại

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

IDE Integrated Development

Environment

Môi trường phát triển tích hợp

ML Machine learning Học máy

NA Not Available Không sẵn sàng

P Pass Thông qua

P(D) Pass(Different) Thông qua nhưng tìm thấy thay

đổi

PDF Portable Document Format Định dạng tài liệu di động

STT Số thứ tự

Page 7: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

vi

DANH MỤC BẢNG

Bảng 3.1: Kiểm tra nội dung văn bản ................................................................................ 29

Bảng 3.2: Kiểm tra ảnh ...................................................................................................... 29

Bảng 3.3: Kiểm tra nút ....................................................................................................... 30

Bảng 3.4: Kiểm tra hộp nhập văn bản ............................................................................... 32

Bảng 3.5: Kiểm tra hộp lựa chọn ....................................................................................... 33

Bảng 3.6: Kiểm tra thanh thực đơn .................................................................................... 34

Bảng 3.7: Kiểm tra thanh biểu đồ ...................................................................................... 35

Bảng 3.8: Kết quả tổng số ca ............................................................................................. 36

Bảng 3.9: Kết quả theo loại phần tử .................................................................................. 36

Bảng 3.10: Kết quả theo loại thay đổi ............................................................................... 36

Bảng 3.11: Kết quả tổng số ca theo phần trăm .................................................................. 38

Bảng 3.12: Kết quả loại thay đổi theo phần trăm .............................................................. 38

Bảng 3.13: So sánh các công cụ ........................................................................................ 40

DANH MỤC BIỂU ĐỒ

Biểu đồ 3.1: Kết quả tổng số ca theo phần trăm ................................................................ 37

Biểu đồ 3.2: Kết quả loại phần tử theo phần trăm ............................................................. 39

Biểu đồ 3.3: Kết quả loại thay đổi theo phần trăm ............................................................ 40

Page 8: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

vii

DANH MỤC SƠ ĐỒ, HÌNH VẼ Hình 1.1: Trí tuệ nhân tạo .................................................................................................... 5

Hình 1.2: Xu thế trí tuệ nhân tạo trong kiểm thử tự động ................................................... 5

Hình 1.3: Ví dụ bộ lệnh Selenium ....................................................................................... 6

Hình 1.4: Ví dụ bộ lệnh Applitools...................................................................................... 7

Hình 1.5: Phạm vi nghiên cứu của luận văn ........................................................................ 7

Hình 1.6: Huấn luyện học máy trong kiểm thử tự động ...................................................... 8

Hình 1.7: Ma trận nhầm lẫn ................................................................................................. 9

Hình 2.1: Applitools - hoạt động như thế nào ................................................................... 13

Hình 2.2: Applitools - ví dụ ảnh cơ sở ............................................................................... 14

Hình 2.3: Applitools - ví dụ ảnh kiểm tra .......................................................................... 14

Hình 2.4: Testim.io - bộ định vị thông minh ..................................................................... 15

Hình 3.1: Trang giao diện chủ ........................................................................................... 19

Hình 3.2: Trang giao diện “Portfolio” ............................................................................... 20

Hình 3.3: Trang giao diện “Book” ..................................................................................... 20

Hình 3.4: Trang giao diện “Blog” ..................................................................................... 21

Hình 3.5: Trang giao diện “Join Us” ................................................................................. 21

Hình 3.6: Trang giao diện “About” ................................................................................... 22

Hình 3.7: Giao diện gốc ..................................................................................................... 24

Hình 3.8: Applitools - Kịch bản ca kiểm thử .................................................................... 24

Hình 3.9: Testim.io - Kịch bản ca kiểm thử ...................................................................... 24

Hình 3.10: Testcomplete -Kịch bản ca kiểm thử ............................................................... 25

Hình 3.11: Mabl -Kịch bản ca kiểm thử ............................................................................ 25

Hình 3.12: Giao diện thay đổi ........................................................................................... 26

Hình 3.13: Applitools - Kết quả ca kiểm thử .................................................................... 26

Hình 3.14: Testim.io - Kết quả ca kiểm thử ...................................................................... 27

Hình 3.15: Testcomplete - Kết quả ca kiểm thử ................................................................ 28

Hình 3.16: Mabl - Kết quả ca kiểm thử ............................................................................. 28

Page 9: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

1

LỜI MỞ ĐẦU

Công nghệ đang phát triển với tốc độ cực nhanh và giữ vai trò quan trọng trong cuộc

sống. Trên phạm vi toàn cầu, các doanh nghiệm đang tung ra các ứng dụng được sử dụng

bởi hàng ngàn, hàng triệu người trên nhiều nền tảng khác nhau. Nó đòi hỏi các doanh

nghiệp phải cung cấp sản phẩm nhanh và liên tục. Trước mỗi lần ra mắt sản phẩm, những

ứng dụng đó phải được kiểm thử để đảm bảo sự tối ưu, đúng đắn cho người dùng đầu

cuối. Kiểm thử 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ểm thử phần mềm cần thông minh hơn, nhanh hơn và tốt hơn.

Các công nghệ hiện tại như trí tuệ nhân tạo, học máy đang ngày càng được áp dụng để

đẩy nhanh quá trình phát triển phần mềm. Việc phát triển phần mềm sử dụng trí tuệ nhân

tạo đang ở giai đoạn khởi đầu. Các công cụ kiểm thử dựa vào trí tuệ nhân tạo từ phân tích

mã nguồn sinh ca kiểm thử đơn vị, đến các nền tảng kiểm thử toàn bộ.

Kiểm thử hệ thống dựa vào giao điện đang là xu thế trong bối cảnh của kiểm thử tự động

và nó vẫn là điểm nhức nhối lớn, bởi vì chúng có xu hướng “dễ vỡ, tốn kém để viết, và

tốn thời gian để thực hiện” [1].

Với ca 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 sau mỗi bước thực hiện. Các ca kiểm thử cần được thực hiện trên tất cả

các giao diện, nền tảng hỗ trợ thủ công. Trong hường hợp các bản vá đượ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ử liên tục.

Với kiểm thử tự động, người kiểm thử tạo ra các lệnh để công cụ thực hiện ca kiểm thử và

so sánh kết quả đầu ra thay vì chạy thủ công. Bài toán chạy ca kiểm thử lặp lại nhiều lần

được giải quyết. Khi giao diện thay đổi phần tử, người kiểm thử cần cập nhật lại cá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 hàng trăm, hàng nghìn ca kiểm thử sẽ là bài toán về thời gian và độ chính xác.

Bằng sự kết hợp trí tuệ nhân tạo và kiểm thử tự động các 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úp cho 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, nền tảng trong thời

gian ngắn, đưa ra các quyết luận cuối cùng về ca kiểm thử một cách thông minh 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àn cảnh ứng dụng

mà không cần người kiểm thử cập nhật các dòng lệnh.

Từ đó, học viên muốn tìm hiểu về ứng dụng của trí tuệ nhân tạo trong kiểm thử tự động

như thế nào và một vài công cụ có sử dụng trí tuệ nhân tạo: “Nghiên cứu ứng dụng một số

công cụ kiểm thử có ứng dụng trí tuệ nhân tạo”.

Page 10: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

2

Phạm vi nghiên cứu: Trí tuệ nhân tạo và học máy được ứng dụng trong các lĩnh vực của

kiểm thử, ví dụ như kiểm thử xác minh giao diện, kiểm thử API, kiểm thử bảo mật. Phạm

vi của luận văn là đưa ra cái nhìn tổng quát về trí tuệ nhân tạo trong kiểm thử giao diện tự

động dựa vào học máy. Bên cạnh đó, luận văn còn tìm hiểu trí tuệ nhân tạo được sử dụng

như thế nào trong một vài công cụ kiểm thử giao diện.

Phương pháp nghiên cứu: Lý thuyết liên quan đến kiểm thử tự động, trí tuệ nhân tạo và

mối liên hệ được nghiên cứu. Sau đó học viên lựa chọn và tìm hiểu về các công cụ kiểm

thử giao diện có ứng dụng trí tuệ nhân tạo (Applitools, Testim.io, Testcomplete, Mabl) và

thực hiện các ca kiểm thử trên các công cụ đó để đưa ra kết quả thực hiện. Để kết quả

đánh giá có thêm phần khách quan, học viên đã thực hiện cuộc khảo sát quy mô nhỏ về

các công cụ được sử dụng trong luận văn, đối tượng tham gia là đồng nghiệp của học

viên. Cuối cùng, dựa vào kết quả nghiên cứu lý thuyết, kết quả thực nghiệm và kết quả

khảo sát, học viên đưa ra những phân tích và đánh giá và đề xuất hướng phát triển.

Cấu trúc luận văn: Nội dung chính của luận văn được trình bày qua bốn chương.

Chương 1. Trí tuệ nhân tạo trong kiểm thử phần mềm tự động.

Chương này trình bày về các khái niệm kiểm thử tự động, trí tuệ nhân tạo, học máy, xu

thế sử dụng học máy vào kiểm thử phần mềm tự động nói chung và kiểm thử giao diện tự

động nói riêng. Việc huấn luyện học máy trong kiểm thử giao diện tự động cũng được chỉ

ra trong chương này.

Chương 2. Một số công cụ kiểm thử giao diện tự động có ứng dụng trí tuệ nhân tạo.

Chương này trình bày về một số công cụ kiểm thử giao diện có ứng dụng trí tuệ nhân tạo,

đó là Applitools, Testim.io, Testcomplete, Mabl và cách trí tuệ nhân tạo được sử dụng

trong từng công cụ.

Chương 3. Thực nghiệm

Chương này trình bày về phương pháp thực nghiệm của học viên. Nội dung chương về

các ca kiểm thử được thực hiện và kết quả thực hiện đối với từng công cụ ở chương trước.

Kết quả thực nghiệm được tính toán và so sánh. Ngoài ra kết quả khảo sát cũng được đưa

ra ở cuối chương.

Chương 4. Kết luận.

Page 11: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

3

Sau phần lý thuyết và thực nghiệm ở ba chương trước, kết luận và đề xuất hướng phát

triển của học viên được trình bày ở chương này.

Page 12: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

4

CHƯƠNG 1. TRÍ TUỆ NHÂN TẠO TRONG KIỂM THỬ PHẦN MỀM TỰ

ĐỘNG

1.1. Giới thiệu chung

Kiểm thử tự động là gì?

Trong kiểm thử phần mềm, kiểm thử tự động là việc sử dụng phần mềm tách biệt với

phần mềm đang được kiểm tra để kiểm soát việc thực hiện ca kiểm thử và so sánh kết quả

thực tế với kết quả dự đoán [2]. Nó được sử dụng nhiều lần cho kiểm thử hồi quy. Người

kiểm thử tạo các tập lệnh và chạy tập lệnh, về cơ bản nó là sự tự động hóa ca kiểm thử thủ

công. Kiểm thử tự động cũng được sử dụng để kiểm tra khả năng tải và hiệu năng của ứng

dụng. Mục tiêu chính của kiểm thử tự động là giảm kiểm thử thủ công, tăng hiệu quả

kiểm thử và giá trị của phần mềm.

Trí tuệ nhân tạo là gì?

Trong khoa học máy tính, trí tuệ nhân tạo (tên tiếng anh là Artificial Intelligence - AI ) là

trí thông minh được thể hiện bằng máy móc. Nó xử lý những phép tính cấp cao, vấn đề

phức tạp và hỗ trợ hệ thống đưa ra những quyết định nhằm tăng cường độ chính xác, như

hình 1.1. Thông thường, thuật ngữ trí tuệ nhân tạo được dùng để mô tả máy móc bắt

chước nhận thức của con người như học tập và giải quyết vấn đề [3][4]. Ví dụ như các

ứng dụng để giúp tài xế tìm các tuyến đường hiệu quả, dữ liệu thời gian thực của các

tuyến đường được truyền về và phân tích, học hỏi để ứng dụng đưa ra kết luận về tuyến

đường.

Học máy là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây dựng

các kĩ thuật cho phép các hệ thống "học" tự động từ dữ liệu để giải quyết những vấn đề cụ

thể. Ví dụ như các máy có thể "học" cách phân loại thư điện tử xem có phải thư rác hay

không và tự động xếp thư vào thư mục tương ứng. Học máy rất gần với suy diễn thống

kê tuy có khác nhau về thuật ngữ [3]. Học máy nghiên cứu cách thức để mô hình hóa bài

toán cho phép máy tính tự động hiểu, xử lý và học từ dữ liệu để thực thi nhiệm vụ được

giao cũng như cách đánh giá giúp tăng tính hiệu quả.

1.2. Xu thế sử dụng học máy trong kiểm thử tự động

Việc sử dụng trí tuệ nhân tạo trong phát triển phần mềm vẫn còn ở mức độ tự chủ thấp

hơn nhiều so với các lĩnh vực phát triển hơn như hệ thống tự lái hoặc điều khiển hỗ trợ

giọng nói. Ứng dụng của AI trong các công cụ kiểm thử phần mềm tập trung vào việc làm

cho vòng đời phát triển phần mềm trở nên dễ dàng hơn. Hình 1.2 chỉ ra việc trí tuệ nhân

Page 13: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

5

tạo sẽ học việc quan sát và đưa ra quyết định của con người trong kiểm thử thủ công để tự

động đưa ra quyết .Học máy có thể được sử dụng để giúp tự động hóa và giảm số lượng

các nhiệm vụ thủ công trong phát triển và thử nghiệm [5].

Hình 1.1: Trí tuệ nhân tạo1

Hình 1.2: Xu thế trí tuệ nhân tạo trong kiểm thử tự động2

Người kiểm thử có sự thông minh và khả năng quan sát trạng thái kết quả, máy kiểm thử

có hiệu suất cao. Để nâng cao hiệu quả và giảm chi phí chất lượng, cần cải thiện kiểm thử

phần mềm bằng cách đưa ra hành vi kiểm thử tự động thông minh thứ có khả năng bắt

chước hình vi con người [6]. Trong kiểm thử phần mềm, một vấn đề được phát hiện ra

1https://www.edureka.co/blog/types-of-artificial-intelligence/ 2https://viblo.asia/p/kiem-thu-tu-dong-ung-dung-tri-tue-nhan-tao-ai-ai-test-automation-maGK7W8OKj2

Page 14: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

6

sau quá trình áp dụng đầu vào ứng dụng, so sánh kết quả với mong đợi đầu ra. Nó chính

xác với những gì học máy làm. Một tập đầu vào được cung cấp cho một thuật toán đào

tạo. Trong quá trình học tập có giám sát, câu trả lời đúng cho mỗi tập đầu vào cũng được

cung cấp cho thuật toán đào tạo. Công việc của hệ thống học máy là lặp đi lặp lại sự cấu

hình lại “nội bộ của bộ não”, ngày càng tốt hơn trong việc cung cấp các câu trả lời đúng

dựa trên tập đầu vào đã được cung cấp [7]. Do đó, những hệ thống ML đã và đang được

nghiên cứu phát triển đều cung cấp những lợi ích trực tiếp cho việc tự động hóa kiểm thử

phần mềm.

Với kiểm thử tự động thông thường, con người viết các dòng lệnh để thực hiện ca kiểm

thử tự động, sau đó công cụ sẽ thực hiện chạy và so sánh đưa ra kết quả dựa vào các dòng

lệnh đã được viết; với kiểm thử tự động có ứng dụng trí tuệ nhân tạo, việc tạo ca kiểm thử

và thực hiện so sánh kết quả đều được công cụ thực hiện được mô tả ở hình 1.5 . Ví dụ

với ca kiểm thử xác minh phẩn tử “VIEW MORE”. Hình 1.3 là đoạn lệnh thực hiện với

công cụ Selenium bình thường, khi ca kiểm thử được chạy, việc so sánh kết quả chỉ dừng

ở thực hiện đúng nội dung “verify text” and “verify not text”; nếu muốn so sánh càng

chính xác, càng nhiều câu lệnh cần được viết. Nhưng với công cụ có trí tuệ nhân tạo (ví

dụ Applitools, Testim.io, Testcomplete, Mabl…), dòng lệnh được rút gọn, nhưng sự so

sánh đưa ra kết quả lại dựa trên rất nhiều tiêu chí như so sánh màu sắc, nội dung, sự sai

khác đến từng đơn vị điểm ảnh. Hình 1.4 là ví dụ dòng lệnh với Applitools. Với những

trường hợp phức tạp như dữ liệu biểu đồ bảng, với các công cụ kiểm thử tự động đơn

thuần, việc viết ca kiểm thử cũng rất phức tạp, nhưng nó được giải quyết chỉ bằng một vài

dòng lệnh với công cụ có ứng dụng trí tuệ nhân tạo (ví dụ như Testcomplete).

Hình 1.3: Ví dụ bộ lệnh Selenium

Page 15: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

7

Hình 1.4: Ví dụ bộ lệnh Applitools

Trí tuệ nhân tạo và học máy được ứng dụng trong các lĩnh vực của kiểm thử, ví dụ như

kiểm thử xác minh giao diện, kiểm thử API, kiểm thử bảo mật…. Các công cụ có ứng

dụng trí tuệ nhân tạo cũng có thể tự sinh ca kiểm thử, con người chỉ cần trỏ cho công cụ

biết ứng dụng cần sinh ca kiểm thử ở đâu. Khi một đoạn mã thay đổi, ML cũng có khả

năng tính toán để chỉ ra chính xác số lượng ca kiểm thử nhỏ nhất để kiểm tra việc thay đổi

đoạn mã. ML cũng được sử dụng để tạo ca kiểm thử đáng tin cậy hơn, nó tìm hiểu và

quan sát cách ứng dụng thay đổi, sau đó tự đưa ra quyết định trong thời gian chạy về việc

sử dụng bộ định vị nào để xác định phần tử.

Hình 1.5: Phạm vi nghiên cứu của luận văn3

3http://uploads.pnsqc.org/2017/papers/AI-and-Machine-Learning-for-Testers-Jason-Arbon.pdf

Page 16: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

8

Phạm vi nghiên cứu của luận văn xoay quanh việc học máy được sử dụng trong kiểm thử

giao diện tự động để xác minh phần tử và việc một số công cụ có ứng dụng trí tuệ nhân

tạo sử dụng học máy như thế nào cũng được tìm hiểu ở chương 2.

1.3. Huấn luyện học máy trong kiểm thử giao diện tự động

Hiện tại ML đã đang được khám phá áp dụng vào kiểm thử phần mềm và cách tiếp cận

vấn đề của đề tài này đi theo định hướng của Jason Arbon (giám đốc điều hành của công

ty phần mềm test.ai, từng làm việc cho Google và Microsoft) về ML được sử dụng trong

kiểm thử giao diện [8]:

1.3.1 Huấn luyện học máy: Nhận dạng trạng thái ứng dụng

Nhận dạng trạng thái ứng dụng có thể được thực hiện bằng cách cung cấp cho máy rất

nhiều các màn hình và các nhãn được ghi như một kiểu của trạng thái ứng dụng. Ví dụ:

màn hình đăng nhập và nhãn, màn hình kết quả tìm kiếm và nhãn …vv. Nếu chúng ta dạy

cho máy nhận dạng trạng thái ứng dụng đang thuộc kiểu nào, giống như một người kiểm

thử nhận dạng trạng thái ứng dụng họ đang kiểm tra, chúng có thể chọn kiểu tập đầu vào

để áp dụng vào ứng dụng tương ứng.

Đầu tiên, hàng ngàn ảnh chụp màn hình của ứng dụng thật được thu thập và phân loại

theo nhóm trạng thái giao diện người dùng. Sau đó là bước ghi nhãn, thao tác ghi nhãn

cho mỗi màn hình như hình 1.6.

Khi tất cả các nhẫn đã được lưu, một kho dữ liệu đã ghi nhãn đã sẵn sàng để huấn luyện

ML. Hàng ngàn trang được hiển thị trong chương trình ML, trong đó đầu vào là sự kết

hợp của các điểm ảnh trong ảnh chụp màn hình, cùng với các phần tử DOM.

Hình 1.6: Huấn luyện học máy trong kiểm thử tự động4

• Tập đầu vào huấn luyện học máy: Ảnh, thông tin phần thử DOM.

• Tập đầu ra mong đợi huấn luyện học máy: nhãn chính xác.

4http://uploads.pnsqc.org/2017/papers/AI-and-Machine-Learning-for-Testers-Jason-Arbon.pdf

Page 17: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

9

Quá trình đào tạo có thể yêu cầu hàng giờ để tính toán. Với hệ thống huấn luyện học máy

ảnh chụp màn hình, học máy được quyết định là ghi nhãn thành công hay không cho từng

màn hình. Mỗi lần ML nhận ra một màn hình bị ghi sai nhãn, nó sẽ thay đổi cấu trúc bên

trong và lặp lại đến khi ML ghi nhãn tốt nhất. Nguồn dữ liệu đào tạo thưa thớt, không

chính xác hoặc không rõ ràng có thể ngăn ML học tập.

Khi quá trình này hoàn tất, hệ thống ML chấp nhận ảnh chụp màn hình hoặc ảnh chụp

nhanh của DOM của ứng dụng mà không cần nhãn chính xác cho các màn hình, kể cả

màn hình đã huấn luyện và màn hình chưa từng thấy trước đó.

Chất lượng ghi nhãn của ML thường được biểu thị thông qua biểu đồ gọi là “Ma trận

nhầm lẫn”. Ma trận nhầm lẫn đơn giản là vẽ từng nhãn màn hình trên mỗi trục và chỉ ra

tần suất một màn hình bị nhầm với màn hình khác, hình 1.7 là ví dụ.

Hình 1.7: Ma trận nhầm lẫn5

1.3.2 Huấn luyện học máy: Áp dụng tập đầu vào

Bước tiếp theo là dạy ML cách quyết định đâu là hành động chính xác dựa trên trạng thái

màn hình ứng dụng. Một hành động riêng lẻ là một tập “phần tử” và “đầu vào”. Ví dụ

phần tử là hộp tìm kiếm, đầu vào là hành động nhập đoạn văn bản tìm kiếm “Hà Nội”. Dữ

liệu huấn luyện cần rất lớn, trong đó đầu vào ở đây là tập hợp tất cả các phần tử của màn

hình, nhãn, và đầu ra là tập của:

5http://uploads.pnsqc.org/2017/papers/AI-and-Machine-Learning-for-Testers-Jason-Arbon.pdf

Page 18: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

10

• Dữ liệu huấn luyện đầu vào: [“nhãn màn hình”:tìm kiếm, “phần tử”: nút, hộp văn

bản].

• Dữ liệu huấn luyện đầu ra: [“hộp văn bản”: nhập văn bản, “nút bấm”: xuống

dòng…..].

Việc học cách tạo ra các hành động trên các phần tử giống con người cũng giống như đào

tạo phân loại nhãn. Nội dung màn hình và một phần tử cụ thể được hiển thị trên mạng,

mạng sẽ gợi ý một hành động cụ thể. Nếu mạng gợi ý một hành động kì lạ, nó tự cấu hình

lại chính nó và cố đến khi bắt đầu có những hành vi giống con người với ứng dụng.

1.3.3 Thực thi ML: Áp dụng thế giới thật

Ngày nay, ML có thể quyết định một cách thông minh hành động nào được đưa ra dựa

trên trạng thái của ứng dụng. ML thấy, bằng cách đơn giản là có một chương trình khởi

chạy ứng dụng trong trình giả lập hoặc trên thiết bị, chụp ảnh màn hình của ứng dụng và

tải DOM hiện tại qua kết nối gỡ lỗi đến ứng dụng. Trình điều khiển ứng dụng thực hiện

cuộc gọi đến trình điều khiển nền tảng cụ thể để yêu cầu dữ liệu và chỉ cần chuyển thông

tin đến ML để quyết định làm gì tiếp theo.

Bây giờ ML đã quyết định làm gì tiếp theo, đầu ra của ML là một cặp phần tử và tên hành

động. Trình điều khiển ứng dụng chỉ cần tìm phần tử vị trí hoặc xử lý trên màn hình và

dựa trên hành động được đề xuất, gửi vòi phù hợp hoặc nhập văn bản. Điều đáng chú ý là

chỉ với hai phần ML được huấn luyện này, chúng ta có một hệ thống có khả năng thông

minh khám phá bất kỳ ứng dụng. Không cần huấn luyện mới để thực hiện các con đường

giống con người và tự động khám phá các sự cố hoặc vấn đề hiệu suất mà trước đây chỉ

được thực hiện thông qua hướng dẫn sử dụng của con người thử nghiệm, hoặc con người

viết hàng ngàn tập lệnh kiểm tra giao diện người dùng tự động. Trên hết, cách tiếp cận

ML này là áp dụng cho tất cả các ứng dụng ngay lập tức - không cần con người sử dụng

ứng dụng theo cách thủ công hoặc viết tập lệnh kiểm tra.

1.3.4 Huấn luyện học máy: Xác minh hành vi

Bây giờ, các người máy ML có thể điều khiển ứng dụng thông minh như con người,

nhưng còn về vấn đề xác minh? Làm thế nào người máy ML biết ứng dụng có hành vi

đúng hay sai. Có ba cách tiếp cận cho phép người máy ML xác minh hành vi:

• Tự động kiểm tra chức năng phổ biến, có thể phát hiện vấn đề.

• Huấn luyện học máy dựa trên các ví dụ mẫu về lỗi.

Page 19: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

11

• Con người kiểm tra các luồng trước đó, sau đó các người máy sẽ thông báo bất kỳ

sự khác biệt nào trong lần chạy tiếp theo.

Tự động kiểm tra chức năng phổ biến có thể phát hiện ra lỗi là dòng xác minh đầu tiên

của một ứng dụng xác minh. Ở mỗi bước, một trình điều khiển ứng dụng kiểm tra bất kỳ

sự cố ứng dụng, hộp thoại lỗi….

Huấn luyện học máy về một ví dụ lỗi trước đó để tự động phân loại màn hình tiếp theo

trong trình tự như một lỗi. Với một số lượng lớn các ví dụ tương tự về lỗi, ML nhanh

chóng học được về điều kiện khi nào xảy ra lỗi như màn hình với một vài phần tử, hộp

thoại chứa kí tự (“sorry”, “try again”, “opps”..) của lỗi thường gặp trong ứng dụng.

Phương thức phát hiện lỗi, vấn đề mạnh nhất nằm ở khả năng ghi lại mọi ảnh chụp màn

hình, DOM và chuỗi hành động thực hiện trong mọi bài thử nghiệm trên ứng dụng. Con

người sau đó nhanh chóng xác minh hành vi vượt qua hay thất bại. Trong các lần chạy về

sau, so sánh dữ liệu giữa lần chạy cũ và mới tiết lộ:

• Việc chạy giống hệt nhau, ứng dụng vẫn hoạt động chính xác.

• Lần chạy không giống nhau và lỗi mới trong hoạt động ứng dụng.

• Lần chạy không giống nhau nhưng phát hiện ra phần tử hoặc đường dẫn mới trong

ứng dụng. Con người xem xét chức năng chính xác, và/hoặc lỗi.

Các mô hình ML tổng quát rất mạnh mẽ đối với những thay đổi trong cấu trúc ứng dụng,

thiết kế và thậm chí chúng nhận ra chức năng mới. Hệ thống kiểm thử dựa trên ML đã

làm giảm nhu cầu đối với kiểm thử hồi quy thủ công hoặc tự động cổ điển. Các kịch bản

và mã kiểm tra được thay thế bằng huấn luyện máy tương tác với các ứng dụng thông qua

các API có khả năng kiểm thử.

Page 20: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

12

CHƯƠNG 2. GIỚI THIỆU VỀ CÁC CÔNG CỤ

Một số công cụ có ứng dụng trí tuệ nhân tạo được học viên tìm hiểu và tiến hành thực

nghiệm đó là Applitools, Testim.io, Testcomplete và Mabl. Học viên lựa chọn các công

cụ vì nó nằm trong danh sách các công cụ xu thế về ứng dụng trí tuệ nhân tạo trong công

cụ kiểm thử tự động và nó hỗ trợ các bản dùng thử cho người dùng. Khi thời gian cho

phép, học viên sẽ tìm hiểu thêm các công cụ có ứng dụng trí tuệ nhân tạo khác để bổ sung

những hạn chế của đề tài.

2.1. Applitools

2.1.1 Applitools là gì?

Applitools tập trung vào các kiểm thử trực quan, xác minh giao diện xuất hiện như dự

định. Nó cung cấp các API khác nhau cho các ngôn ngữ lập trình và các khung (tên tiếng

anh là: framework) để tạo kiểm thử trực quan cho các thành phần GUI đơn lẻ hoặc toàn

bộ màn hình6.

Trong quá trình thực thi kiểm thử, mọi kiểm tra thông qua Applitools API tạo ra một ảnh

chụp màn hình và tải lên một dịch vụ chuyên dụng (máy chủ đôi mắt) để so sánh. Tại đây,

các thuật toán thị giác máy tính (CV) được sử dụng chỉ để báo cáo sự khác biệt có thể

nhận thấy. Sau đó, quản lý kiểm thử đôi mắt có thể được sử dụng để xem xét chi tiết kết

quả kiểm thử. Các thay đổi được phê duyệt, từ chối hoặc bỏ qua, trong đó các thay đổi

tương tự được nhóm lại với nhau để tăng tốc quá trình bảo trì.

Applitools hoạt động như thế nào?

• Khung kiểm thử tự động: cài đặt trên máy cục bộ của người dùng để tạo, chạy ca

kiểm thử

• Applitools SDK: cài đặt trên máy cục bộ của người dùng, định nghĩa các nguyên

tắc DOM, CSS của các phần tử khi chạy ca kịch bản.

• Lưới giao diện Applitools (tên tiếng anh là Applitools Visual Gird): nằm trên đám

mây Applitools, ca kiểm thử được chạy trên lưới giao diện.

• AI trực quan Applitools (tên tiếng anh là Applitools Visual AI) hay còn gọi là

“Eyes”: nằm trên đám mây Applitools, so sánh sự khác biệt về giao diện và thông

báo kết quả.

6https://applitools.com/tutorials/selenium-ide

Page 21: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

13

• Phân tích nguyên nhân góc Applitools (tên tiếng anh là Applitools Root Cause

Analysis): nằm trên đám mây Applitools, quản lý kết quả so sánh.

Hình 2.1: Applitools - hoạt động như thế nào7

Khi ca kiểm thử được chạy lần đầu tiên trên ứng dụng, máy chủ AI chỉ lưu trữ ảnh chụp

màn hình dưới dạng ảnh cơ sở (tên tiếng anh :baseline). Khi một ca kiểm thử tương tự

được chạy lần tiếp theo, tập ảnh chụp màn hình mới được gọi là ảnh kiểm tra (tên tiếng

anh: checkpoint). Eyes sẽ so sánh ảnh cơ sở và ảnh kiểm tra để đưa ra quyết định [9].

3.1.2 AI trong Applitools

Thị giác máy tính là công nghệ được sử dụng cho Eyes. AI được xử lý trên đám mây

Applitools. Các thuật toán chỉ báo cáo sự khách biệt về giao điện người dùng có ý nghĩa

và có thể cảm nhận được bằng mắt người.

Công nghệ của Applitools cho phép xác nhận rằng cấu trúc vẫn giống nhau, mặc dù nội

dung đã thay đổi. Thay vì có một liên kết tĩnh giữa mọi ảnh kiểm tra và ảnh cơ sở tương

ứng, Eyes so sánh một chuỗi các hình ảnh kiểm tra với một chuỗi các hình ảnh cơ sở, cho

phép các điểm kiểm tra có thể được thêm hoặc xóa. Sau đó, giống như một chương trình

"khác biệt" bằng văn bản, Eyes tìm thấy hình ảnh đã được thêm hoặc xóa cũng như hình

ảnh có hình ảnh đường cơ sở tương ứng và khớp hoặc không khớp. Eyes sau đó cho phép

bạn xác minh cả hai điểm kiểm tra hiện có và đảm bảo rằng tập hợp các hình ảnh cơ sở

7https://applitools.com/tutorials/selenium-java.html

Page 22: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

14

được cập nhật. Bởi vì AI không biết sự khác biệt là do tính năng mới hay lỗi thực sự, do

đó nó sẽ đợi con người đánh dấu thủ công là thông qua hay thất bại.

Các bước so sánh và kết quả kiểm tra: Khi ca kiểm thử được thực thi, Eyes xác minh toàn

bộ chuỗi ảnh kiểm tra đối với chuỗi ảnh cơ sở. Kết quả kiểm tra bao gồm một chuỗi các

bước, mỗi bước biểu thị một điểm kiểm tra bị thiếu, một điểm kiểm tra mới, một điểm

kiểm tra phù hợp với đối tác cơ sở của nó hoặc một điểm khác với nó.

Ví dụ, chuỗi ảnh cơ sở bao gồm 5 ảnh:

Hình 2.2: Applitools - ví dụ ảnh cơ sở

Và chuỗi ảnh kiểm tra:

Hình 2.3: Applitools - ví dụ ảnh kiểm tra

Sự thay đổi của chuỗi ảnh kiểm tra: ảnh B bị xóa, ảnh C bị thay bởi ảnh C1, ảnh F và G

được thêm mới, ảnh A, D, E không thay đổi. Eyes sẽ phát hiện sự giống khác giữa hai

chuỗi ảnh:

• Giống: Eyes tìm thấy ảnh cơ sở và ảnh kiểm tra giống nhau.

• Khác: Eyes tìm thấy ảnh cơ sở và ảnh kiểm tra về cơ bản là khớp nhau nhưng có

một phần khác biệt.

• Thiếu: Eyes không tìm thấy ảnh kiểm tra tương ứng với ảnh cơ sở.

• Mới: Eyes phát hiện ra ảnh cơ sở mới.

2.2. Testim.io

2.2.1 Testim.io là gì?

Testim.io là công cụ kiểm thử tự động sử dụng học máy để giúp các nhà phát triển thực

hiện việc soạn thảo, thực hiện và bảo trì các ca kiểm thử tự động. Nó được chạy trên đám

mây Amazon. Người dùng có thể tạo các bài kiểm tra trong vài phút, chạy song song hàng

ngàn ca kiểm thử trên các trình duyệt khác nhau, tích hợp với CI/CD và các công cụ cộng

tác hiện có của công cụ, v.v.

Công cụ đã giới thiệu khái niệm về định vị thông minh. Trí tuệ nhân tạo bên dưới nền

tảng trong thời gian thực, phân tích tất cả các đối tượng DOM của một trang và trích xuất

Page 23: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

15

các đối tượng và thuộc tính của nó. Cuối cùng, AI quyết định chiến lược tốt nhất để xác

định vị trí một phần tử cụ thể dựa trên phân tích này8.

Do đó, ngay cả khi nhà phát triển thay đổi thuộc tính của một yếu tố, thử nghiệm vẫn tiếp

tục chạy và điều này dẫn đến các thử nghiệm ổn định hơn. Do đó, việc soạn thảo và thực

hiện các bài kiểm tra tự động nhanh hơn và ổn định hơn nhiều.

2.2.2 AI trong Testim.io

Bộ định vị thông minh trong Testim.io là một ma trận bộ chọn có liên quan đến phần tử

cụ thể. Khi một phần tử được chọn trong khi ghi (nhấp, di chuột, nhập, v.v.) thuật toán

của Testim.io sẽ phân tích hàng trăm thuộc tính được liên kết với phần tử. Sau đó, nó gán

trọng số cho các thuộc tính để xác định duy nhất thành phần.

Hình 2.4: Testim.io - bộ định vị thông minh

Và bộ định vị thông minh học hỏi với mỗi lần chạy thử. Nếu một số thuộc tính thay đổi,

bộ định vị thông minh sẽ sử dụng các thuộc tính khác để xác định thành phần. Bằng cách

này, nếu phần tử được thay đổi nhưng vẫn hoạt động, bộ định vị thông minh của

Testim.io sẽ tìm thấy nó và giữ cho bài kiểm tra không bị lỗi9 10. Ví dụ: khi phần tử

“VIEW MORE” được kích chuột, các thuộc tính liên quan được đưa vào bộ định vị thông

minh: thuộc tính của chính phần tử “View More”, các thuộc tính khác có liên quan đến nó

như các thuộc tính cha, thuộc tính con. Các thuộc tính được tính toán, gán trọng số. Dựa

8https://help.testim.io/docs/testim-overview 9https://www.testim.io/blog/author-execute-automated-tests/ 10https://help.testim.io/docs/working-with-locators

Page 24: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

16

vào đó, AI đưa ra quyết định rằng ca kiểm thử kích vào phần tử “VIEW MORE” có thành

công hay không.

2.3. TestComplete

2.3.1 TestComplete là gì?

TestComplete là công cụ kiểm thử tự động chức năng được phát triển bởi công ty phần

mềm SmartBear. TestComplete cung cấp cho người kiểm tra khả năng tạo các bài kiểm

tra tự động cho các ứng dụng giao diện cục bộ, trình duyệt, hệ điều hành. Sử dụng kỹ

thuật nhận dạng đối tượng bằng AI giúp cho việc kiểm thử ổn định và có thể mở rộng khi

mã nguồn thay đổi11.

TestComplete hoạt động như thế nào?

Khi ghi lại các bài kiểm tra, TestComplete tự động thêm các đối tượng vào kho lưu trữ

bản đồ tên. Bạn cũng có thể thêm các đối tượng bằng tay tại thời điểm thiết kế. Đối với

mỗi đối tượng, TestComplete chỉ định các tiêu chí mô tả đối tượng này trong ứng dụng.

Khi ánh xạ các đối tượng, TestComplete so sánh chúng với các đối tượng được lưu trữ

trong kho lưu trữ Bản đồ tên và chỉ ánh xạ các đối tượng không được ánh xạ.

Khi chạy thử nghiệm, TestComplete sử dụng kho lưu trữ bản đồ tên để tìm các đối tượng

trong ứng dụng được thử nghiệm của bạn. Nếu TestComplete không thể tìm thấy một đối

tượng (ví dụ: nếu các thuộc tính đối tượng đã thay đổi hoặc có một số đối tượng có các

giá trị thuộc tính này), thử nghiệm thất bại. Trong trường hợp này, bạn cần cập nhật các

tiêu chí ánh xạ để sử dụng các thuộc tính duy nhất, không thể thay đổi để nhận dạng đối

tượng.

2.3.2 AI trong Testcomplete

Thông thường, Testcomplete nhận dạng các cửa sổ dựa vào các thuộc tính của chúng (ví

dụ như tên lớp, chú thích, định danh). Tuy nhiên, có những trường hợp Testcomplete

không thể truy cập vào các thuộc tính đó, lúc này Testcomplete kiểm tra bằng việc nắm

bắt các nội dung phần tử. Để làm được điều đó, nhận dạng ký tự quang học (tên tiếng anh

là optical character recognition) được sử dụng.

Hình ảnh được chụp lại, sau đó được dịch sang ký tự máy có thể đọc hiểu. Công cụ này

có thể nhận dạng văn bản của phần tử giao diện người dùng cũng như văn bản từ các tập

tin được tải lên.

11https://smartbear.com/product/testcomplete/features/gui-object-recognition/

Page 25: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

17

Testcomplete gửi dữ liệu cần nhận dạng tới dịch vụ web orc.dev.smartbear.com của

SmartBear. Dịch vụ web này chuyển tiếp các yêu cầu đến “API Google Vision” (dịch vụ

trên đám mây Google) và kết quả sau khi nhận dạng được chuyển lại trở về Testcomplete.

2.4. Mabl

2.4.1 Mabl là gì?

Mabl là công cụ kiểm thử tự động phần mềm, sử dụng học máy để giúp các nhóm kỹ

thuật kiểm tra hồi quy. Nó thu thập rất nhiều dữ liệu như thời gian chạy thử, thời gian tải

trang, ảnh chụp màn hình hiển thị các thay đổi trực quan trong ứng dụng, v.v. Dữ liệu đó

dùng để đào tạo cho các mô hình học máy giúp thông báo tốt xấu cho người dùng khi ứng

dụng có sự thay đổi 12.

Mabl hoạt động như thế nào?

Khi người dùng ghi lại ca kiểm thử với tiện ích “Trainer”, ảnh màn hình baseline sẽ được

chụp lại. Đối với những lần thực thi ca kiểm thử tương tự sau đó, ảnh chụp màn hình sẽ

được so sánh với ảnh baseline. Các thay đổi trực quan sẽ được gắn nhãn cảnh báo và đánh

dấu giúp người dùng dễ nhận biết.

AI và ML được dùng để học toàn bộ quá trình (hệ thống, mã lệnh, việc thực thi kiểm thử,

và phát hiện lỗi trong hệ thống). Nhiều ca kiểm thử được thực thi, Mabl học được càng

nhiều về hệ thống và có thể tự động hóa mọi thứ.

2.4.2 AI trong Mabl

AI được cung cấp bởi bộ công cụ đám mây Google. Mabl sử dụng “Cloud ML Engine”

(bộ SDK của Google) để đào tạo mô hình thị giác và thời gian chạy, sử dụng “Dataflow”

(bộ SDK của Google) để xử lý dữ liệu kiểm thử, và sử dụng “Lighthouse” (bộ SDK của

Google) để theo dõi các chỉ số hiệu năng của ứng dụng.

Mabl tìm ra lỗi bằng cách tạo ra một mô hình và so sánh kết quả chạy ca kiểm thử với mô

hình đó. Cụ thể, Mabl xem xét sự thay đổi và tạo ra một thước đo chất lượng để chỉ ra kết

quả của ca kiểm thử có đáng để thông báo lỗi cho người dùng hay mọi thứ vẫn hoạt động

trơn tru. Học tập gia tăng được áp dụng cho mô hình từ các lần chạy ca kiểm thử giúp giải

quyết các vấn đề về biến thiên thời gian và chất lượng ban đầu. Bằng cách từ chối hoặc

chấp nhận thông tin Mabl đưa ra, người dùng đang cung cấp dữ liệu huấn luyện học máy

để cải thiện chất lượng và cập nhật tăng cường mô hình.

12https://www.mabl.com/features

Page 26: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

18

Học máy được sử dụng để phát hiện lỗi trực quan và tăng hiệu năng ứng dụng. Môi trang

được truy cập trong ca thử nghiệm được chụp ảnh màn hình, bằng cách so sánh các ảnh

chụp màn hình, Mabl đưa ra quyết định về thông báo đến người dùng sự thay đổi và học

cách loại trừ các khu vực động là khu vực các thành phần thay đổi thường xuyên. Mô

hình thời gian chạy cũng được so sánh, cập nhật liên tục sau mỗi ca kiểm thử.

Khi các thay đổi được đưa ra, các mô hình mới định kỳ kết hợp các thay đổi mới dưới

dạng thử nghiệm hoặc hành trình, với những thay đổi đó tiếp tục chạy. Nhưng đối với các

mô hình chính xác hơn, có một nút khác có nhãn "Cập nhật đường cơ sở", cho phép bạn

cập nhật đường cơ sở trực quan của ứng dụng cho một bước cụ thể của hành trình hoặc

cho tất cả các bước của hành trình.

Page 27: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

19

CHƯƠNG 3. THỰC NGHIỆM

3.1. Phương thức thực nghiệm

3.1.1 Ý tưởng chung

Học viên sẽ mô phỏng lại các trường hợp lỗi giao diện hay gặp phải trên các phần tử, sau

đó chạy ca kiểm thử với các công cụ đã nói ở chương III để xem các công cụ có phát hiện

ra lỗi hay không. Đồng thời ca kiểm thử cũng được chạy trên một công cụ không ứng

dụng trí tuệ nhân tạo là Selenium để có sự so sánh.

3.1.2 Môi trường thực hiện

Một trang web được học viên thiết kế để thực nghiệm.

• Trang chủ: https://hoantrantb90.wixsite.com/food/ là trang blog về thức ăn.

• Thành phần: Những thành phần quen thuộc của giao diện như nút, hộp văn bản,

hộp lựa chọn, thanh thực đơn, biểu đồ được đưa vào trang web.

• Giao diện trang web bao gồm: trang chủ như hình 3.1, trang “Portfolio” như hình

3.2, trang “Book” như hình 3.3, trang “Block” như hình 3.4, trang “Join Us” như

hình 3.5, trang “About” như hình 3.6.

Hình 3.1: Trang giao diện chủ

Page 28: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

20

Hình 3.2: Trang giao diện “Portfolio”

Hình 3.3: Trang giao diện “Book”

Page 29: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

21

Hình 3.4: Trang giao diện “Blog”

Hình 3.5: Trang giao diện “Join Us”

Page 30: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

22

Hình 3.6: Trang giao diện “About”

3.1.3 Quá trình thực hiện

Lần lượt các phần tử giao diện của trang web thực nghiệm được kiểm thử theo quá trình

từ bước 1 đến bước 5.

• [Bước 1 trên trang web] Các phẩn tử giao diện được xây dựng đúng, chuẩn với

thiết kế giao diện người dùng.

• [Bước 2 trên công cụ] Thực hiện ghi lại các ca kiểm thử trên giao diện đúng với

thiết kế. Sau bước này, dữ liệu cơ sở được lưu lại (dữ liệu cơ sở được dùng làm

gốc để so sánh với dữ liệu ca kiểm thử chạy lại lần tiếp theo). Ca kiểm thử được

thực hiện trên các phần tử giao diện cơ bản: văn bản, ảnh, nút, hộp nhập văn bản,

hộp lựa chọn, thanh thực đơn, biểu đồ.

• [Bước 3 trên trang web] Học viên chủ ý tạo ra lỗi giao diện bằng cách thay đổi

hình dạng, nội dung của các phần tử của trang web thực nghiệm. Các thay đổi giao

diện được thực hiện như: thay đổi nội dung, hình thức, màu sắc, vị trí.

• [Bước 4 trên công cụ] Chạy lại ca kiểm thử ở bước 2. Lúc này, dữ liệu kiểm tra là

dữ liệu của ứng dụng hiện tại (đã bị thay đổi) sẽ được so sánh với dữ liệu cơ sở ban

đầu để đưa ra kết quả.

Page 31: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

23

• [Bước 5 trên công cụ] Kiểm tra kết quả chạy ca kiểm thử xem công cụ có phát hiện

được sự thay đổi của phần tử giao diện hay không.

Một số định nghĩa kết quả chạy lại ca kiểm thử:

− P: thông qua (tên tiếng anh là Pass), công cụ không tìm ra lỗi của cả kiểm thử.

− F: phát hiện thất bại (tên tiếng anh là Fail), công cụ tìm ra lỗi của ca kiểm thử.

− P(D): phát hiện thay đổi hay còn gọi là thông qua nhưng phát hiện có một phần

không khớp với kết quả mong đợi (tên tiếng anh là P-Pass, D-Different).

3.1.4 Nhật ký ca kiểm thử mẫu

Tiêu đề ca kiểm thử: Kiểm tra nút “VIEW MORE”.

Kịch bản ca kiểm thử:

[Bước 1] Trên trang chủ web, nút “VIEW MORE” hiển thị đúng thiết kế.

[Bước 2] Ghi lại ca kiểm thử cho nút “VIEW MORE”:

1. Mở trang https://hoantrantb90.wixsite.com/food/.

2. Kích vào nút “VIEW MORE”.

[Bước 3] Thực hiện thay đổi thuộc tính nút “VIEW MORE”: tăng cỡ chữ để phần

hiển thị “VIEW MORE” không được đầy đủ.

[Bước 4] Chạy lại các ca kiểm thử.

[Bước 5] Kiểm tra công cụ có phát hiện được sự thay đổi giao diện hay không.

Kết quả mong đợi: Sự thay đổi giao diện được phát hiện.

Nhật ký ca kiểm thử trên các công cụ đã tìm hiểu:

[Bước 1] Trên trang chủ web, nút “VIEW MORE” hiển thị như hình 3.7.

Page 32: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

24

Hình 3.7: Giao diện gốc

[Bước 2] Ghi lại ca kiểm thử cho nút “VIEW MORE” trên các công cụ như hình

3.8, hình 3.9, hình 3.10 và hình 3.11.

Hình 3.8: Applitools - Kịch bản ca kiểm thử

Hình 3.9: Testim.io - Kịch bản ca kiểm thử

Page 33: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

25

Hình 3.10: Testcomplete -Kịch bản ca kiểm thử

Hình 3.11: Mabl -Kịch bản ca kiểm thử

[Bước 3] Thực hiện thay đổi thuộc tính nút “VIEW MORE”: tăng cỡ chữ để phần

hiển thị “VIEW MORE” không được đầy đủ như hình 3.12.

Page 34: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

26

Hình 3.12: Giao diện thay đổi

[Bước 4] Chạy lại các ca kiểm thử.

[Bước 5] Kiểm tra kết quả chạy của mỗi công cụ như hình 3.13, hình 3.14, hình

3.15 và hình 3.16.

Hình 3.13: Applitools - Kết quả ca kiểm thử

Page 35: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

27

Hình 3.14: Testim.io - Kết quả ca kiểm thử

Page 36: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

28

Hình 3.15: Testcomplete - Kết quả ca kiểm thử

Hình 3.16: Mabl - Kết quả ca kiểm thử

3.2. Kiểm tra văn bản

Tiêu đề ca kiểm thử: Kiểm tra nội dung văn bản đoạn giới thiệu của trang chủ.

Kịch bản ca kiểm thử:

[Bước 1] Trên trang chủ, đoạn văn bản đoạn giới thiệu hiển thị đúng thiết kế.

[Bước 2] Ghi lại ca kiểm thử:

1. Mở trang https://hoantrantb90.wixsite.com/food/.

2. Kích chuột vào phần đoạn văn bản giới thiệu của trang chủ.

3. Bôi đen đoạn văn bản giới thiệu của trang chủ.

[Bước 3] Trên trang web, thực hiện các thay đổi thuộc tính của đoạn văn bản:

giảm cỡ chữ 50%, tăng cỡ chữ 50%, đổi màu chữ, đổi phông chữ, nội dung thiếu

từ, nội dung thừa từ.

[Bước 4] Chạy lại các ca kiểm thử.

[Bước 5] Kiểm tra công cụ có phát hiện được sự thay đổi giao diện hay không. Kết

quả như bảng 3.1 (F, P, P(D) được giải thích ở phần 3.1.3).

Page 37: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

29

Bảng 3.1: Kiểm tra nội dung văn bản

STT

Thay đổi thuộc

tính phần tử

giao diện

Kết quả chạy lại ca kiểm thử sau khi thuộc tính

thay đổi

Thủ

công

Seleni

um

Applit

ools

Testim

.io

Test

Compl

ete

Mabl

1 Giảm cỡ chữ

50% F P P(D) P P P(D)

2 Tăng cỡ chữ 50% F P P(D) P P P(D)

3 Đổi màu chữ F P P(D) P P P(D)

4 Đổi phông chữ F P P(D) P P P(D)

5 Nội dung thiếu từ F P P(D) P F P(D)

6 Nội dung thừa từ F P P(D) P F P(D)

3.3. Kiểm tra ảnh

Tiêu đề ca kiểm thử: Kiểm tra ảnh biểu trưng (tên tiếng anh là logo) của trang chủ.

Kịch bản ca kiểm thử:

[Bước 1] Trên trang chủ, ảnh biểu trưng hiển thị đúng thiết kế.

[Bước 2] Ghi lại ca kiểm thử:

1. Mở trang https://hoantrantb90.wixsite.com/food/.

2. Kích chuột vào ảnh biểu trưng của trang chủ.

[Bước 3] Trên trang web, thực hiện các thay đổi thuộc tính như mục thay đổi thuộc

tính giao diện phần tử của bảng 3.2.

[Bước 4] Chạy lại các ca kiểm thử.

[Bước 5] Kết quả như bảng 3.2 (F, P, P(D) được giải thích ở phần 3.1.3).

Bảng 3.2: Kiểm tra ảnh

STT

Thay đổi thuộc

tính phần tử

giao diện

Kết quả chạy lại ca kiểm thử sau khi thuộc tính

thay đổi

Thủ

công

Seleni

um

Applit

ools

Testim

.io

Test

Compl

ete

Mabl

1 Thay đổi kích cỡ

ảnh F P P(D) P P P

2 Đổi vị trí ảnh F P P P F P

Page 38: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

30

3.4. Kiểm tra nút

Tiêu đề ca kiểm thử: Kiểm tra nút “VIEW MORE” ở trang chủ.

Kịch bản ca kiểm thử:

[Bước 1] Trên trang chủ, nút “VIEW MORE” hiển thị đúng thiết kế.

[Bước 2] Ghi lại ca kiểm thử:

1. Mở trang https://hoantrantb90.wixsite.com/food/.

2. Kích chuột vào nút “VIEW MORE”.

[Bước 3] Trên trang web, thực hiện các thay đổi thuộc tính của nút (phần thay đổi

thuộc tính phần tử giao diện của bảng 3.3).

[Bước 4] Chạy lại các ca kiểm thử.

[Bước 5] Kiểm tra công cụ có phát hiện được sự thay đổi giao diện hay không. Kết

quả như bảng 3.3 (F, P, P(D) được giải thích ở phần 3.1.3).

Bảng 3.3: Kiểm tra nút

STT Thay đổi thuộc tính phần

tử giao diện

Kết quả chạy lại ca kiểm thử sau khi thuộc

tính thay đổi

Thủ

công

Seleni

um

Appli

tools

Testi

m.io

Test

Comp

lete

Mab

l

1 Đổi màu nút "View More"

F P P(D) P P P(D)

2 Đổi cỡ chứ của nút “VIEW

MORE” ( cỡ 5) F P P(D) P F P(D)

3 Đổi cỡ chứ của nút “VIEW

MORE” ( cỡ 70) F P P(D) P F P(D)

4

Đổi nội dung của nút

“VIEW MORE” sang từ

đồng nghĩa ( See More,

Nhìn, Xem)

F P P(D) P(D) F P(D)

5

Đổi nội dung của nút

“VIEW MORE” sang từ

khác nghĩa

F P P(D) P(D) F P(D)

6

Thay nút “VIEW MORE”

bằng button khác, cùng nội

dung

F F P P F P

Page 39: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

31

7

Thay nút “VIEW MORE”

bằng button khác, khác nội

dung

F F P(D) P(D) F F

8 Chuyển vị trí nút “VIEW

MORE” xuống đáy khung F P P P F P

9 Chuyển vị trí nút “VIEW

MORE” lên đỉnh khung F P P P F P

10 Xóa nút "View More" F F F F F F

11 Đổi nút “VIEW MORE”

sang có animation F P P P P P

12 Nội dung nút “VIEW

MORE” bị quá dài F P P(D) P F P(D)

13 Nhân đôi nút “VIEW

MORE” và vị trí khác nhau F P P P p P

14

Nhân đôi nút “VIEW

MORE” và vị trí đè lên

nhau

F P P(D) F F P(D)

15

Không dùng nút, thay bằng

hộp chọn nhưng vẫn giữ

nguyên nội dung

F F P(D) F F F

16 Xóa phần nội dung của nút

"View More" F P P(D) P(D) F P(D)

17 Kích thước nút bị giảm

50% F P P(D) P F P

18 Kích thước nút bị giảm

90% F P P(D) P F P

19 Kích thước nút bị tăng 50%

F P P(D) P p P

3.5. Kiểm tra hộp nhập văn bản

Tiêu đề ca kiểm thử: Kiểm tra hộp điền tên của trang “Join Us”.

Kịch bản ca kiểm thử:

[Bước 1] Trên trang “Join Us”, hộp văn bản “Name” hiển thị đúng thiết kế.

[Bước 2] Ghi lại ca kiểm thử:

Page 40: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

32

1. Mở trang https://hoantrantb90.wixsite.com/food/.

2. Kích vào mục “Join Us”.

3. Kích vào hộp “Name”.

4. Điền thông tin vào hộp “Name”.

[Bước 3] Trên trang “Join Us”, thực hiện các thay đổi thuộc tính của hộp văn bản

“Name”: (phần thay đổi thuộc tính phần tử giao diện của bảng 3.4).

[Bước 4] Chạy lại các ca kiểm thử.

[Bước 5] Kiểm tra công cụ có phát hiện được sự thay đổi giao diện hay không. Kết

quả như bảng 3.4 (F, P, P(D) được giải thích ở phần 3.1.3).

Bảng 3.4: Kiểm tra hộp nhập văn bản

STT Thay đổi thuộc tính phần

tử giao diện

Kết quả chạy lại ca kiểm thử sau khi thuộc

tính thay đổi

Thủ

công

Selen

ium

(khôn

g AI)

Appli

tools

Testi

m.io

Test

Comp

lete

Mabl

1 Sửa mô tả của hộp

"Name" F P P(D) P F P(D)

2 Xóa hộp "Name" F F F F F F

3 Hộp "Name" bị đổi kích

thước F P P(D) P F P

4 Hộp "Name" bị mất bên

trái F P P(D) P p P(D)

5 Hộp "Name" bị mất bên

phải F P P(D) P F P

6 Chữ của hộp "Email" đè

vào hộp "Name" F P P(D) F F P(D)

7 Hộp "Name" bị nút

submit đè F P P(D) F F P(D)

8 Hộp "Name" bị biến

dạng F P P(D) P(D) F P(D)

9 Hộp "Name" bị thay đổi

vị trí F P P P F P

Page 41: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

33

3.6. Kiểm tra hộp lựa chọn

Tiêu đề ca kiểm thử: Kiểm tra hộp lựa chọn “Portion” của trang “Join Us”.

Kịch bản ca kiểm thử:

[Bước 1] Trên trang “Join Us”, hộp lựa chọn “Portion” hiển thị đúng thiết kế.

[Bước 2] Ghi lại ca kiểm thử:

1. Mở trang https://hoantrantb90.wixsite.com/food/.

2. Kích vào mục “Join Us”.

3. Kích vào hộp lựa chọn “Portion”.

4. Lựa chọn một lựa chọn trong các lựa chọn được hiển thị.

[Bước 3] Trên trang web, thực hiện các thay đổi thuộc tính của đoạn văn bản

(phần thay đổi thuộc tính phần tử giao diện của bảng 3.5).

[Bước 4] Chạy lại các ca kiểm thử.

[Bước 5] Kiểm tra công cụ có phát hiện được sự thay đổi giao diện hay không. Kết

quả như bảng 3.5 (F, P, P(D) được giải thích ở phần 3.1.3).

Bảng 3.5: Kiểm tra hộp lựa chọn

STT Thay đổi thuộc tính

phần tử giao diện

Kết quả chạy lại ca kiểm thử sau khi thuộc tính

thay đổi

Thủ

công

Seleni

um

Appli

tools

Testi

m.io

Test

Comp

lete

Mabl

1 Cỡ chữ của thanh menu

quá nhỏ(5) F P P(D) P F P(D)

2

Cỡ chữ của thanh menu

quá lớn(70) và bị trào

khỏi khung

F P P(D) P F P(D)

3

Đổi vị trí phần tử

"Portfolio" trong thanh

menu

F P P(D) P(D) F P(D)

4 Xóa phần tử "Portfolio"

F F F F F F

5 Đổi thanh menu sang có

animation F P P P P P

6

Nhân đôi phần tử

"Portfolio" trong thanh

menu

F P P P P P

Page 42: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

34

3.7. Kiểm tra thanh thực đơn

Tiêu đề ca kiểm thử: Kiểm tra thực đơn “Portfolio” của thanh thực đơn.

Kịch bản ca kiểm thử:

[Bước 1] Trên trang web, thanh thực đơn hiển thị đúng các thực đơn “Home”,

“Portfolio”, “Book”, “Blog”, “Join Us”, “About”.

[Bước 2] Ghi lại ca kiểm thử:

1. Mở trang https://hoantrantb90.wixsite.com/food/.

2. Kích vào thực đơn “Portfolio”.

[Bước 3] Trên trang web, thực hiện các thay đổi thuộc tính của đoạn văn bản:

(phần thay đổi thuộc tính phần tử giao diện của bảng 3.6).

[Bước 4] Chạy lại các ca kiểm thử.

[Bước 5] Kiểm tra công cụ có phát hiện được sự thay đổi giao diện hay không. Kết

quả như bảng 3.6 (F, P, P(D) được giải thích ở phần 3.1.3).

Bảng 3.6: Kiểm tra thanh thực đơn

STT Thay đổi thuộc tính phần

tử giao diện

Kết quả chạy lại ca kiểm thử sau khi thuộc

tính thay đổi

Thủ

công

Selen

ium

Appl

itools

Testi

m.io

Test

Com

plete

Mabl

1 Thay đổi màu nền của hộp

lựa chọn F P P(D) P p P(D)

2 Đổi nội dung của các lựa

chọn sang từ khác nghĩa F P P(D) P(D) F P(D)

3 Đổi nội dung của các lựa

chọn sang từ cùng nghĩa F P P(D) P(D) F P(D)

4 Thay bằng hộp lựa chọn

khác cùng nội dung F F P P F P

5 Thay bằng hộp lựa chọn

khác và khác nội dung F F P(D) P(D) F F

6 Chuyển vị trí của hộp lựa

chọn F P P P F P

7 Xóa hộp lựa chọn F F F F F F

Page 43: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

35

8 Xóa một lựa chọn F F F F F F

9 Kéo dài hộp lựa chọn đến

hết trang F P P(D) P(D) p P(D)

10 Thu hẹp hộp lựa chọn còn

10% F P P(D) P(D) F P(D)

3.8. Kiểm tra biểu đồ

Tiêu đề ca kiểm thử: Kiểm tra biểu đồ của trang “About”.

Kịch bản ca kiểm thử:

[Bước 1] Trên trang “About”, biểu đồ “Food Article” hiển thị đúng thiết kế.

[Bước 2] Ghi lại ca kiểm thử:

1. Mở trang https://hoantrantb90.wixsite.com/food/.

2. Kích vào mục “About”.

3. Kích vào biểu đồ “Food Article”.

[Bước 3] Trên trang web, thực hiện các thay đổi thuộc tính của đoạn văn bản:

(phần thay đổi thuộc tính phần tử giao diện của bảng 3.3).

[Bước 4] Chạy lại các ca kiểm thử.

[Bước 5] Kiểm tra công cụ có phát hiện được sự thay đổi giao diện hay không. Kết

quả như bảng 3.7 (F, P được giải thích ở phần 3.1.3, NA: kết quả luôn thất bại vì

công cụ không tìm thấy thuộc tính của biểu đồ dù có thay đổi hay không thay đổi

thuộc tính bản đồ).

Bảng 3.7: Kiểm tra thanh biểu đồ

STT Thay đổi thuộc tính

phần tử giao diện

Kết quả chạy lại ca kiểm thử sau khi thuộc

tính thay đổi

Thủ

công

Selen

ium

Appli

tools

Testi

m.io

Test

Com

plete

Mabl

1 Thay đổi dữ liệu F NA NA P F NA

3.9. Đánh giá kết quả kiểm thử

Khi một phần tử giao diện bị thay đổi, kết quả mong đợi của chạy ca kiểm thử là phát

hiện ra sự thay đổi đó. Dưới đây là bảng thống kê số lượng các ca kiểm thử phát hiện ra

sự thay đổi phần tử giao diện của từng công cụ:

− Tổng số ca phát hiện ra sự thay đổi giao diện theo bảng 3.8.

Page 44: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

36

Bảng 3.8: Kết quả tổng số ca

Phân loại Seleni

um

Applit

ools

Testim

.io

Test

Compl

ete

Mabl

Số ca phát hiện lỗi 10 5 9 39 8

Số ca không phát hiện lỗi nhưng

có cảnh báo thay đổi 0 36 11 0 27

Số ca không phát hiện lỗi 43 12 33 14 18

Tổng số ca thực hiện 53 53 53 53 53

− Số ca phát hiện ra sự thay đổi giao diện được phân theo loại phần tử theo bản 3.9.

Bảng 3.9: Kết quả theo loại phần tử

Phân loại Seleni

um

Applit

ools

Testim

.io

Test

Compl

ete

Mabl Tổng

số ca

Nội dung văn bản 0 6 0 6 6 6

Ảnh 0 2 0 2 0 2

Nút 4 14 7 13 13 19

Hộp văn bản 1 8 4 8 6 9

Thanh thực đơn 1 4 2 4 4 6

Thanh lựa chọn 4 8 7 8 8 10

Biểu đồ 0 0 0 1 0 1

− Số ca phát hiện ra thay đổi giao diện được phân theo loại thay đổi theo bảng 3.10.

Bảng 3.10: Kết quả theo loại thay đổi

Phân loại Seleniu

m

Applito

ols

Testim.

io

Test

Comple

te

Mabl Tổng

số ca

Thay đổi văn bản 0 16 4 13 15 17

Thay đổi vị trí 0 4 4 9 4 9

Thay đổi màu sắc 0 3 0 0 3 3

Thay đổi phần tử 10 19 12 17 13 24

Page 45: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

37

Trong đó, tổng số ca kiểm thử được thực hiện là 53 ca, các ca kiểm thử sẽ được gom cụm

cùng nhau theo các hạng mục thay đổi giao diện (như bảng 3.8 và bảng 3.9) để thống kê.

Sau đó tỉ lệ được tính toán cho từng hạng mục như sau:

Tỷ lệ phát hiện thất bại =Số ca phát hiện thất bại

Tổng số ca thực hiện

Tỷ lệ phát hiện thay đổi =Số ca phát hiện thay đổi

Tổng số ca thực hiện

Tỷ lệ thông qua =Số ca thông qua

Tổng số ca thực hiện

Dưới đây là bảng tỉ lệ phát hiện thay đổi của từng hạng mục theo đơn vị phần trăm:

− Tổng số ca phát hiện ra sự thay đổi giao diện được hiển thị ở biểu đồ 3.1. Tỷ lệ

phát hiện lỗi và thay đổi của Applitools và Testcomplete cao do kỹ thuật các công

cụ sử dụng để so sánh đòi hỏi độ chính xác giao diện cao. Testim.io chỉ dựa vào

định vị phần tử nên chưa phát hiện được nhiều lỗi và thay đổi của giao diện.

Biểu đồ 3.1: Kết quả tổng số ca theo phần trăm

− Số ca phát hiện ra sự thay đổi giao diện được phân theo loại phần tử theo bảng 3.11

và biểu đồ 3.2. Testim.io không phát hiện được việc thay đổi nội dung văn bản do

19%9%

17%

74%

15%

0%

68%

21%

0%

51%

81%

23%

62%

26%34%

Thông qua

Phát hiện thay đổi

Phát hiện thất bại

Page 46: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

38

nó sử dụng bộ định vị để xác minh phần tử nên không thể phát hiện được thay đổi

nội dung. Applitools, Testcomplete, Mabl dựa vào ảnh màn hình, DOM nên phát

hiện rất tốt nội dung văn bản bị thay đổi. Với phần tử biểu đồ, bắt được thuộc tính

của phần tử rất khó và phức tạp, Testcomplete là công cụ duy nhất trong các công

cụ được tìm hiểu có thể xác minh phần tử biểu đồ, do kỹ thuật nhận dạng ký tự

quang học dịch ảnh màn hình biểu đồ sang ngôn ngữ máy có thể đọc và khoanh

vùng dữ liệu cần thiết chứ không dựa vào thuộc tính như định danh, đường dẫn.

Tỷ lệ phát hiện =Số ca phát hiện thất bại + Số ca phát hiện thay đổi

Tổng số ca thực hiện

Bảng 3.11: Kết quả tổng số ca theo phần trăm

Phân loại Selenium Applitools Testim.io Test

Complete Mabl

Văn bản 0% 100% 0% 100% 100%

Ảnh 0% 100% 0% 100% 0%

Nút 21% 74% 37% 68% 68%

Hộp văn bản 11% 89% 44% 89% 67%

Thanh thực đơn 17% 67% 33% 67% 67%

Thanh lựa chọn 40% 80% 70% 80% 80%

Biểu đồ 0% 0% 0% 100% 0%

− Số ca phát hiện ra sự thay đổi giao diện được phân theo loại thay đổi theo bảng

3.12 và biểu đồ 3.3. Testcomplete khoanh vùng phần tử cần xác định trên màn hình

giao diện nên nó có thể phát hiện 100% trường hợp vị trí phần tử giao diện thay

đổi. Nhưng Testcomplete không phát hiện được thay đổi màu sắc do nó chỉ dịch dữ

liệu nội dung của phần tử. Testim cũng không phát hiện được thay đổi màu sắc do

nó xác minh phần tử dựa vào định vị. Phát hiện ra thay đổi màu sắc và nội dung

của Applitools gần như là chính xác tuyệt đối, còn của Mabl là khá cao.

Bảng 3.12: Kết quả loại thay đổi theo phần trăm

Phân loại Selenium Applitools Testim.io Test

Complete Mabl

Thay đổi nội dung 0% 94% 24% 76% 88%

Thay đổi vị trí 0% 44% 44% 100% 44%

Thay đổi màu sắc 0% 100% 0% 0% 100%

Thay đổi phần tử 42% 79% 50% 71% 54%

Page 47: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

39

Biểu đồ 3.2: Kết quả loại phần tử theo phần trăm

100% 100%

74%

89%

67%

80%

0%0% 0%

37%

44%

33%

70%

0%

100% 100%

68%

89%

67%

80%

100%

0%

67%

0%

Nội dung văn

bản

Ảnh Nút Hộp văn bản Thanh thực

đơn

Thanh lựa

chọn

Biểu đồ

Applitools Testim.io Test Complete Mabl

Page 48: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

40

Biểu đồ 3.3: Kết quả loại thay đổi theo phần trăm

3.10. So sánh các công cụ

Sau thời gian nghiên cứu, trải nghiệm các công cụ(bản dùng thử), bản thân học viên có

đưa ra những so sánh ở bản 3.13 về các công cụ dựa trên kết quả kiểm thử, kết quả thống

kê như đã nói ở mục 4.9.

Bảng 3.13: So sánh các công cụ

STT Hạng mục Applitools Testim.io TestComplete Mabl

1 Mục đích

kiểm thử GUI GUI GUI GUI

2 Platform Web Web Web, Mobile,

Desktop Web

3 Cài đặt Tiện ích mở

rộng

Tiện ích mở

rộng Chương trình

Tiện ích mở

rộng

4 Trường hợp Kiểm tra Kiểm tra giao Kiểm tra biểu Kiểm tra giao

94%

44%

100%

79%

24%

44%

0%

50%

76%

100%

0%

71%

88%

44%

100%

54%

Văn bản Vị trí Màu sắc Phần tử

Applitools Testim.io Test Complete Mabl

Page 49: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

41

sử dụng tốt

nhất

chính xác đến

đơn vị điểm

ảnh

diện người

dùng

đồ, tập tin pdf diện người

dùng

5 AI Thị giác máy

tính Học máy

Thị giác máy

tính và học

máy

Học máy

6 Phương thức Đôi mắt

Applitools

Bộ định vị

thông minh

Nhận dạng ký

tự quang học

Mô hình học

máy của

Google

7 Bảo trì ca

kiểm thử Tự động Tự động Tự động Tự động

8

Thời gian

chạy ca kiểm

thử

9s 11s 60s 90s

9

Chạy ca kiểm

thử trên môi

trường cục bộ

Có Có Có Không

10

Chạy ca kiểm

thử trên môi

trường lưới

giao diện

Có Có Có Có

11 Lưới giao

diện web

Chrome,

Firefox, IE,

Edge, Safari

Chrome,

Firefox, IE,

Edge, Safari

Chrome,

Firefox, IE,

Safari

Chrome,

Firefox, IE,

Safari

12 Gỡ lỗi Tự động Tự động Tự động Tự động

13 Đưa ra quyết

định Không Có Có Có

14

Số bài đánh

giá trên

Garter- trang

đánh giá công

nghệ

12 7 16 1

15

Đánh giá theo

Garter- trang

đánh giá công

nghệ

4.5/5 4.3/5 4.8/5 5/5

Page 50: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

42

16

Số bài đánh

giá của đồng

nghiệp học

viên

3 3 3 3

17

Đánh giá theo

đồng nghiệp

học viên 4.3/5 4.1/5 4.5/5 4.0/5

18 Đánh giá của

học viên 4.3/5 4.0/5 4.3/5 4.0/5

Kết quả đánh giá theo đồng nghiệm của học viên được đính kèm cuối mục tài liệu tham

khảo.

Page 51: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

43

CHƯƠNG 4. KẾT LUẬN

Luận văn này đã tập trung vào việc giới thiệu ứng dụng của trí tuệ nhân tạo trong kiểm

thử tự động, các công cụ kiểm thử tự động liên quan, từ đó đưa ra các đánh giá.

Chương I giới thiệu về các khái niệm trí tuệ nhân tạo, kiểm thử phần mềm tự động,

Chương II trình bày về học máy được áp dụng như thế nào trong kiểm thử phần mềm tự

động. Chương III trình bày về các công cụ kiểm thử phần mềm có sử dụng trí tuệ nhân

tạo. Chương IV sẽ đưa ra các kịch bản kiểm thử, kết quả và đánh giá hiệu quả.

Như đã trình bày ở Chương II và Chương III, mỗi ca kiểm thử được thực hiện là một quá

trình đào tạo và thực thi học máy. Càng nhiều ca kiểm thử được chạy, trí tuệ nhân tạo của

các công cụ càng thông minh trong việc đưa ra các quyết định kết luận cho các ca kiểm

thử. Tuy nhiên, mỗi công cụ sẽ có những phương thức riêng của riêng mình, như

Applitools sử dụng thị giác máy tính, Testim.io sử dụng bộ định vị thông minh,

Testcomplete sử dụng nhận dạng đối tượng, Mabl sử dụng học máy.

Sau quá trình tìm hiểu, thực nghiệm và thu thập đánh giá, học viên rút ra được các kết

luận như sau:

Thứ nhất, việc sử dụng các công cụ có ứng dụng trí tuệ nhân tạo thực sự rút ngắn được

thời gian, công sức cho kiểm thử. Thay vì viết hàng trăm dòng lệnh so sánh, người kiểm

thử chỉ cần ghi lại kịch bản thao tác đơn giản (kích vào nút, chọn lựa chọn…), sau đó trí

tuệ nhân tạo sẽ so sánh và đưa ra sự khác biệt nếu có. Việc trí tuệ nhân tạo tự sinh ca kiểm

thử không nằm trong phạm vi tìm hiểu của đề tài.

Thứ hai, báo trì ca kiểm thử trở nên dễ dàng hơn. Khi giao diện thay đổi, người kiểm thử

không cần chỉnh sửa lại tập dòng lệnh, mà chỉ cần ích một cú kích chuột đồng ý. Sau đó,

ảnh chụp màn hình cơ sở của ca kiểm thử sẽ được cập nhật mới mà không cần bất kì thao

tác dòng lệnh nào.

Thứ ba, ứng dụng các công cụ có ứng dụng trí tuệ nhân tạo được tìm hiểu trong phạm vi

đề tài. Applitools thích hợp cho ca kiểm thử giao diện yêu cầu chính xác đến đơn vị điểm

ảnh. Testcomplete hoàn hảo nhất cho ca kiểm thử biểu đồ bảng và tập tin pdf. Testim.io

và Mabl thích hợp cho ca kiểm thử giao diện người dùng đầu cuối đơn thuần.

Thứ tư, các công cụ có ứng dụng trí tuệ nhân tạo cũng có những điểm hạn chế: Applitools

chưa tự đưa ra quyết định về ca kiểm thử (thông qua hoặc thất bại), Testim.io chưa phát

hiện được nhiều sự thay đổi (theo kết quả kiểm thử), Testcomplete và Mabl có tốc độ xác

minh phần tử khá lâu.

Page 52: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

44

Thứ năm, học viên có những đề xuất cho các công cụ có ứng dụng trí tuệ nhân tạo trong

phạm vi đề tài: hạn chế ở mục thứ tư nên được khắc phục. Ngoài ra, Applitools,

Testim.io, Mabl cũng nên tăng cường những chức năng liên quan đến biểu đồ bảng.

Cuối cùng, phạm vi thực nghiệm của luận văn chỉ hạn chế trong kiểm thử giao diện, cũng

như chưa thực nghiệm với các công cụ tự sinh ca kiểm thử giao diện. Về tương lai, học

viên sẽ tiếp tục tìm hiểu các công cụ kiểm thử giao diện khác có ứng dụng trí tuệ nhân tạo

khác cho sinh ca kiểm thử và mở rộng phạm vi trên các nhánh khác của kiểm thử như

API, bảo mật, hiệu năng.

Ngày nay, trí tuệ nhân tạo đang có những bước tiến trong kiểm thử giao diện phần mềm

tự động. Có rất nhiều công cụ sử dụng trí tuệ nhân tạo được giới thiệu đến người dùng, và

các công cụ được tìm hiểu trong đề tài này là một trong số đó. Mục đích cuối cùng của

các công cụ là giúp giảm tối thiểu thao tác, sức lực con người để hoàn thành công đoạn

kiểm thử, nhằm rút ngắn vòng đời phát triển phần mềm. Theo quan điểm cá nhân học

viên, trí tuệ nhân tạo sẽ phát triển cực kỳ mạnh mẽ trong kiểm thử giao diện phần mềm tự

động và sẽ dần thay thế hoàn toàn vị trí của kiểm thử thủ công.

Page 53: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

45

TÀI LIỆU THAM KHẢO

[1] D. Kraus, "AI in GUI-Based Software Testing," 2017.

[2] Kolawa, Adam, Huizinga, Dorota, Automated Defect Prevention: Best Practices in

Software Management, Wiley-IEEE Computer Society Press, 2007.

[3] M. Maloof, "Artificial Intelligence: An Introduction," 2017.

[4] Stuart J. Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, 2020.

[5] P. Merrill, "Top trends: 5 ways AI will change software testing".

[6] Dionny Santiago, Tariq M. King, Peter J. Clarke, "AI-Driven Test Generation:

Machines Learning from Human Testers," 2018.

[7] J. Arbon, "Testing AI: Supervised Learning," 2018.

[8] J. Arbon, "AI for Software Testing," 2017.

[9] R. Nathanie, Interviewee, Interview with Ram Nathaniel, Head of Computer Vision

Algorithms at Applitools. [Interview]. 2020.

Page 54: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

46

PHIẾU KHẢO SÁT

Page 55: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

47

Page 56: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

48

Page 57: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

49

Page 58: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

50

Page 59: NGHIÊN CỨU ỨNG DỤNG MỘT SỐ CÔNG CỤ KIỂM THỬ CÓ ỨNG DỤNG …

51