1. Trang chủ
  2. » Luận Văn - Báo Cá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

59 24 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 59
Dung lượng 1,85 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ế

Trang 1

`

ĐẠ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

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

THUẬT NGỮ VIẾT TẮT

Interface

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

IDE Integrated Development

Environment

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

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

Trang 7

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

Trang 8

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

Trang 9

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”

Trang 10

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

Trang 11

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.

Trang 12

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

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

Trang 13

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

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

1 https://www.edureka.co/blog/types-of-artificial-intelligence/

2 https://viblo.asia/p/kiem-thu-tu-dong-ung-dung-tri-tue-nhan-tao-ai-ai-test-automation-maGK7W8OKj2

Trang 14

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

Trang 15

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ử

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

Trang 16

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]:

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

• 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

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

Trang 17

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ụ

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:

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

Trang 18

• 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

Trang 19

• 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ử

Trang 20

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ả

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

Trang 21

• 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

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]

"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ở

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

Trang 22

đượ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

Trang 23

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

8 https://help.testim.io/docs/testim-overview

9 https://www.testim.io/blog/author-execute-automated-tests/

10 https://help.testim.io/docs/working-with-locators

Trang 24

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

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

Trang 25

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

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

Trang 26

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

Trang 27

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

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ủ

Trang 28

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

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

Trang 29

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

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

Ngày đăng: 28/12/2020, 16:55

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w