Luận văn 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

ĐẠ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  
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.  
i
 
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  
ii  
MỤC LỤC  
iii  
 
iv  
THUẬT NGỮ VIẾT TẮT  
Viết tắt  
AI  
Tiếng Anh  
Tiếng Việt  
Trí tuệ nhân tạo  
Artificial intelligence  
API  
Application Programming  
Interface  
Giao diện lập trình ứng dụng  
CD  
CI  
Continuous Deployment  
Continuous Integration  
Cascading Style Sheet  
Computer vision  
Phát triển liên tục  
Tích hợp liên tục  
CSS  
CV  
Định kiểu theo tầng  
Thị giác máy tính  
DOM  
F
Document Object Model  
Fail  
Mô hình đối tượng Tài liệu  
Thất bại  
HTML  
IDE  
Hypertext Markup Language  
Ngôn ngữ đánh dấu siêu văn bản  
Môi trường phát triển tích hợp  
Integrated Development  
Environment  
ML  
NA  
P
Machine learning  
Not Available  
Pass  
Học máy  
Không sẵn sàng  
Thông qua  
P(D)  
Pass(Different)  
Thông qua nhưng tìm thấy thay  
đổi  
PDF  
STT  
Portable Document Format  
Định dạng tài liệu di động  
Số thứ tự  
v
 
DANH MỤC BẢNG  
DANH MỤC BIỂU ĐỒ  
vi  
   
DANH MỤC SƠ ĐỒ, HÌNH VẼ  
vii  
 
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”.  
1
 
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.  
2
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.  
3
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  
4
     
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  
5
   
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  
6
 
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  
7
   
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  
8
     
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  
9
   
• 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.  
10  
   
• 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ử.  
11  
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  
12  
     
Tải về để xem bản đầy đủ
pdf 59 trang yennguyen 20920 Free
Bạn đang xem 20 trang mẫu của tài liệu "Luận văn 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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfluan_van_nghien_cuu_ung_dung_mot_so_cong_cu_kiem_thu_co_ung.pdf