AI in software testing - Trí tuệ nhân tạo trong kiểm thử phần mềm

Một trong những từ thông dụng gần đây nhất trong ngành phát triển phần mềm là trí tuệ nhân tạo. Nhưng nó thực sự có nghĩa gì? AI trong bối cảnh tự động hóa kiểm thử phần mềm khác với định nghĩa rộng hơn của nó như thế nào?
Chúng ta hiểu khi nào thì nói về AI và các khái niệm nhỏ hơn của nó như Machine learning (học máy)? Sử dụng AI và học máy để cải tiến công nghệ tiên tiến trong kiểm thử phần mềm.

1. Triển khai AI trong kiểm thử tự động

  • Trí tuệ nhân tạo là một trong những từ thông dụng được tìm kiếm nhiều nhất hiện nay. AI gợi lên hình ảnh của những thứ như siêu máy tính toàn năng, địa ngục quyết định sự hủy diệt của con người; hỗ trợ kiểm soát giọng nói theo cách của Alexa hoặc Siri; đối thủ cờ vua máy tính; hoặc xe tự lái.
  • Wikipedia định nghĩa về nghiên cứu AI là "nghiên cứu về" các tác nhân thông minh: bất kỳ thiết bị nào nhận biết môi trường của nó và thực hiện các hành động nhằm tối đa hóa cơ hội đạt được mục tiêu của nó. Khả năng của một chương trình máy tính hoặc máy móc để suy nghĩ (lý do cho chính nó) và học hỏi (thu thập dữ liệu và sửa đổi hành vi trong tương lai theo cách có lợi). Theo định nghĩa này, chúng ta bắt đầu thấy điều gì đó có ý nghĩa hơn trong bối cảnh AI có ý nghĩa gì đối với phần mềm công cụ phát triển và công nghệ.
  • Nó cũng rất quan trọng để nhận ra rằng phạm vi của những gì được coi là "AI" thay đổi theo thời gian. Tại một thời điểm, ví dụ, nhận dạng ký tự quang học (OCR) được coi là tiên tiến nhất trong AI. Hoặc các câu trả lời câu hỏi và trả lời từ Siri và Alexa, từng được coi là hiện đại, hiện nay phần lớn được coi là điều hiển nhiên và không phải lúc nào cũng được coi là AI. Điều tương tự sẽ xảy ra với các công cụ kiểm thử phần mềm - những đổi mới trong tự động hóa ngày nay sẽ trở nên được mong đợi khi các khả năng mới phát triển. Nhưng hiện tại, hãy xem xét AI trong tự động hóa thử nghiệm phần mềm vào năm 2018.

2. AI trong kiểm thử tự động phần mềm năm 2019

  • Việc sử dụng AI trong phát triển phần mềm vẫn còn ở giai đoạn sơ khai và 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, mặc dù nó vẫn đang tiến về phía trước theo hướng tự trị thử nghiệm. Ứ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. Thông qua việc áp dụng lý luận, giải quyết vấn đề và trong một số trường hợp, học máy, AI 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 và tẻ nhạt trong phát triển và thử nghiệm.
  • "Công cụ tự động hóa đã sẵn sàng để làm việc này chưa?" Bạn có thể hỏi. Và tất nhiên là "Có" nhưng còn hạn chế
  • Trường hợp AI tỏa sáng trong phát triển phần mềm là khi nó được áp dụng để loại bỏ những hạn chế đó, để cho phép các công cụ tự động kiểm thử phần mềm cung cấp nhiều giá trị hơn cho các nhà phát triển và người thử nghiệm. Giá trị của AI đến từ việc giảm sự tham gia trực tiếp của nhà phát triển hoặc người thử nghiệm vào các nhiệm vụ thủ công nhất. (Trí thông minh của con người vẫn rất cần thiết trong việc áp dụng logic nghiệp vụ, v.v.)
  • Ví dụ, hãy xem xét rằng hầu hết (nếu không phải là tất cả) các công cụ kiểm thử tự động chạy thử nghiệm cho bạn và cung cấp kết quả. Không phải hầu hết đều biết thử nghiệm nào để chạy, bởi vậy họ chạy tất cả chúng hoặc một số được xác định trước. Vậy điều gì sẽ xảy ra nếu một BOT hỗ trợ AI có thể xem lại được trạng thái của thử nghiệm hiện tại, những thay đổi code gần đây, phạm vi code và các số liệu khác, quyết định thử nghiệm nào để chạy và sau đó chạy chúng? Quyết định đưa ra rằng, dựa trên việc thay đổi dữ liệu là một ví dụ về việc áp dụng AI. Phần mềm có hiệu quả có thể thay thế nhà phát triển / người thử nghiệm trong quá trình ra quyết định.

3. AI và Machine Learning (học máy)

  • Vậy học máy thì sao? Học máy có thể tăng cường AI bằng cách áp dụng các thuật toán cho phép công cụ tự động cải thiện bằng cách thu thập lượng dữ liệu khổng lồ được tạo ra bằng thử nghiệm.
  • Nghiên cứu về học máy là một tập hợp con của nghiên cứu AI tổng thể, tập trung vào việc đưa ra quyết định dựa trên dữ liệu được quan sát trước đó. Đây là một khía cạnh quan trọng của AI nói chung, vì trí thông minh đòi hỏi phải sửa đổi việc ra quyết định khi việc học tập được cải thiện. Tuy nhiên, trong các công cụ kiểm thử phần mềm, học máy không phải lúc nào cũng cần thiết - đôi khi, một công cụ hỗ trợ AI được điều chỉnh thủ công tốt nhất để phù hợp với tổ chức sử dụng công cụ, và sau đó có thể áp dụng logic và lý luận tương tự mọi lúc của kết quả.
  • Trong các trường hợp khác, thu thập dữ liệu là chìa khóa cho quá trình ra quyết định và học máy có thể cực kì có giá trị, đòi hỏi một số dữ liệu ban đầu và sau đó cải thiện hoặc điều chỉnh khi thu thập được nhiều dữ liệu hơn. Ví dụ như phạm vi code, kết quả phân tích tĩnh, kết quả kiểm thử, hoặc các số liệu phần mềm khác, theo thời gian có thể thông báo cho AI về trạng thái của dự án phần mềm.

4. Ví dụ thực tế về AI và Machine Learning trong kiểm thử phần mềm

Ví dụ 1: Sử dụng trí tuệ nhân tạo để tự động hóa việc tạo và tham số kiểm thử đơn vị

  • Trong Parasof Jtest, giải pháp kiểm thử phần mềm dành cho các nhà phát triển Java bao gồm phân tích tĩnh, kiểm thử đơn vị, phạm vi và truy xuất nguồn gốc... Việc áp dụng AI ở đây, để tạo ra trường hợp kiểm thử tự động, giúp các nhà phát triển lấp đầy thiếu sót khi bắt đầu từ một khai thác JUnit thưa thớt.
  • Parasoft Jtest DE plug-in bổ sung thêm tự động hóa hữu ích vào thực tiễn kiểm tra đơn vị với các hành động dễ dàng bằng một cú nhấp chuột để tạo, thu nhỏ và duy trì kiểm tra đơn vị. Bằng cách sử dụng Jtest hỗ trợ AI, người dùng có thể đạt được phạm vi bao phủ code cao hơn trong khi giảm một nửa thời gian và công sức cần thiết để xây dựng một bộ trường hợp thử nghiệm Junit toàn diện và có ý nghĩa.

Ví dụ 2: Sử dụng AI và học máy để tự động hóa việc tạo và bảo trì kiểm tra API

  • Một ví dụ điển hình khác, thêm học máy vào hỗn hợp, là Trình tạo thử nghiệm API thông minh của Parasoft SOAtest, vượt xa thử nghiệm ghi và phát lại, tận dụng AI và học máy để chuyển đổi các bài kiểm tra UI thủ công thành các kịch bản kiểm tra API tự động hoàn chỉnh.
  • Trình tạo kiểm tra API thông minh sử dụng lý luận để hiểu các mẫu và mối quan hệ trong các lệnh gọi API khác nhau được thực hiện trong khi thực hiện UI. Từ phân tích đó, một loạt các lệnh gọi API được xây dựng đại diện cho các lệnh gọi giao diện cơ bản được thực hiện trong luồng UI. Sau đó, nó áp dụng học máy bằng cách quan sát những gì có thể về các tài nguyên API khác nhau và lưu trữ chúng dưới dạng mẫu trong cấu trúc dữ liệu độc quyền. Cấu trúc bên trong này được cập nhật bằng cách kiểm tra các trường hợp thử nghiệm khác trong thư viện của người dùng để tìm hiểu các loại hành vi khác nhau khi thực hiện API, ví dụ: xác nhận hoặc thêm một tiêu đề cụ thể vào đúng chỗ.
  • Mục tiêu của AI ở đây là tạo ra các thử nghiệm nâng cao hơn (không chỉ lặp lại những gì người dùng đang làm, như bạn có được với thử nghiệm ghi và phát lại đơn giản). Công cụ nhận dạng các mẫu bên trong lưu lượng, tạo mô hình dữ liệu toàn diện về các tham số quan sát, tạo các thử nghiệm API tự động và cho phép áp dụng các mẫu đã học cho các thử nghiệm API khác để cải thiện chúng và giúp người dùng tạo các kịch bản thử nghiệm tự động nâng cao hơn. Các thử nghiệm API tự động thu được hoàn toàn có thể tái sử dụng, có thể mở rộng và có khả năng phục hồi để thay đổi.

Tương lai của trí tuệ nhân tạo và học máy


Vậy điều gì sẽ đến tiếp theo? Chúng tôi đang hoạt động R & D trong lĩnh vực này, tiếp tục theo đuổi các ứng dụng khác về trí tuệ nhân tạo và học máy để tăng cường bộ công cụ kiểm thử phần mềm của chúng tôi. Có nhiều lộ trình nghiên cứu, nhưng mục tiêu cuối cùng rất rõ ràng: giúp các nhóm phát triển và kiểm tra mã của họ hiệu quả và hiệu quả hơn, để tạo ra phần mềm chất lượng cao hơn với tốc độ.

Bài viết được tham khảo của parasoft:
https://blog.parasoft.com/what-is-artificial-intelligence-in-software-testing