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. 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.
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ụ. 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. 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. TRÍ TUỆ NHÂN TẠO TRONG KIỂM THỬ PHẦN MỀM TỰ ĐỘNG 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. 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ả. 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.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].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 1 https://www.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 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. Ví dụ với ca kiểm thử xác minh phẩn tử “VIEW MORE”.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.