Tổng quan nghiên cứu

Kiểm thử phần mềm là một giai đoạn quan trọng trong vòng đời phát triển phần mềm, chiếm tới khoảng 80% ngân sách kiểm thử hồi quy và ảnh hưởng trực tiếp đến chất lượng sản phẩm. Với sự phát triển nhanh chóng và độ phức tạp ngày càng tăng của phần mềm, việc kiểm thử truyền thống thủ công trở nên tốn kém về thời gian và chi phí, đồng thời khó đảm bảo hiệu quả. Tại Việt Nam, quy trình kiểm thử phần mềm vẫn chủ yếu dựa vào thủ công, gây ra nhiều hạn chế về năng suất và độ tin cậy. Trong bối cảnh đó, việc ứng dụng các kỹ thuật học máy, đặc biệt là học tăng cường sâu (Deep Reinforcement Learning), vào kiểm thử phần mềm tự động nhằm tối ưu hóa quá trình kiểm thử trở nên cấp thiết.

Mục tiêu nghiên cứu của luận văn là xây dựng mô hình ứng dụng học máy tăng cường kết hợp mạng nơ-ron nhân tạo để tối ưu hóa việc ưu tiên và lựa chọn trường hợp kiểm thử trong quy trình kiểm thử tự động, đặc biệt trong môi trường tích hợp liên tục (Continuous Integration - CI). Phạm vi nghiên cứu tập trung vào kiểm thử tự động, khai thác dữ liệu lịch sử kiểm thử từ hai bộ dữ liệu thực nghiệm là ABB Robotics Paint Control và Rails Travis CI, với tổng số vòng CI lần lượt là 312 và 2000. Nghiên cứu nhằm nâng cao hiệu quả phát hiện lỗi, giảm thiểu thời gian và chi phí kiểm thử dưới các ràng buộc về thời gian thực thi.

Việc áp dụng học máy trong kiểm thử phần mềm không chỉ giúp tăng độ bao phủ và độ tin cậy mà còn hỗ trợ lập lịch kiểm thử hiệu quả, góp phần rút ngắn vòng đời phát triển phần mềm và nâng cao chất lượng sản phẩm phần mềm trong thực tế.

Cơ sở lý thuyết và phương pháp nghiên cứu

Khung lý thuyết áp dụng

Luận văn dựa trên hai lý thuyết chính: Quy trình quyết định Markov (Markov Decision Process - MDP) và học máy tăng cường sâu (Deep Reinforcement Learning - DRL). MDP cung cấp mô hình toán học để tối ưu hóa việc ra quyết định trong môi trường không chắc chắn, với các thành phần gồm bộ trạng thái, bộ hành động, hàm chuyển trạng thái, hàm phần thưởng và hệ số giảm trừ. Học tăng cường cho phép máy học từ tương tác với môi trường thông qua việc nhận phần thưởng, kết hợp giữa khám phá và khai thác để tìm chiến lược tối ưu.

Mạng nơ-ron nhân tạo (Artificial Neural Network - ANN) được sử dụng làm hàm ước lượng trong học tăng cường, giúp xử lý không gian trạng thái và hành động lớn, liên tục. Mạng nơ-ron đa lớp (Multilayer Perceptron - MLP) với các lớp ẩn và hàm kích hoạt ReLU được huấn luyện bằng thuật toán truyền ngược sai số (backpropagation) và tối ưu bằng Adam. Thuật toán Q-learning được mở rộng thành Deep Q-learning (DQN) sử dụng mạng nơ-ron để ước lượng hàm giá trị Q, giúp máy học chiến lược ưu tiên và lựa chọn trường hợp kiểm thử hiệu quả.

Ba khái niệm chính trong nghiên cứu gồm:

  • Ưu tiên trường hợp kiểm thử (Test Case Prioritization - TCP) với mục tiêu sắp xếp thứ tự thực thi để phát hiện lỗi sớm nhất.
  • Lựa chọn trường hợp kiểm thử thích nghi (Adaptive Test Case Selection - ATCS) nhằm chọn bộ kiểm thử tối ưu dưới ràng buộc thời gian.
  • Hàm phần thưởng trong học tăng cường phản ánh hiệu năng phát hiện lỗi và thời gian thực thi.

Phương pháp nghiên cứu

Nguồn dữ liệu chính gồm hai bộ dữ liệu lịch sử kiểm thử: ABB Robotics Paint Control với 114 trường hợp kiểm thử qua 312 vòng CI và Rails Travis CI với 2000 vòng CI. Dữ liệu được thu thập, tiền xử lý và chiết xuất đặc trưng, bao gồm kết quả thành công/thất bại và thời gian thực thi từng trường hợp kiểm thử.

Phương pháp phân tích sử dụng thuật toán học tăng cường sâu DQN với mạng nơ-ron đa lớp gồm 3 lớp ẩn (200, 100, 50 nút), hàm kích hoạt ReLU, tối ưu Adam, tốc độ học 0.001 và bộ nhớ replay kích thước 10,000. Tỉ lệ khám phá (epsilon) bắt đầu từ 0.2 và giảm dần theo thời gian. Mô hình được huấn luyện trên dữ liệu lịch sử để học cách ưu tiên và lựa chọn trường hợp kiểm thử nhằm tối đa hóa hàm phần thưởng.

Timeline nghiên cứu kéo dài từ năm 2016 đến 2019, bao gồm các bước thu thập dữ liệu, xây dựng mô hình, huấn luyện và đánh giá trên hai bộ dữ liệu thực nghiệm. Phương pháp đánh giá hiệu quả mô hình dựa trên chỉ số NAPFD (Normalized Average Percentage of Faults Detected), đo lường tốc độ phát hiện lỗi trong bộ kiểm thử được ưu tiên.

Kết quả nghiên cứu và thảo luận

Những phát hiện chính

  1. Hiệu quả mô hình học tăng cường sâu: Mô hình sử dụng mạng nơ-ron hỗ trợ Q-learning đạt hiệu năng cao hơn đáng kể so với Q-learning truyền thống dùng bảng, với NAPFD tăng trung bình khoảng 15-20% trên cả hai bộ dữ liệu.
  2. Ảnh hưởng của hàm phần thưởng: Hàm phần thưởng dựa trên số lần thất bại (tcfail) cho kết quả tốt nhất, với NAPFD đạt khoảng 0.85 trên bộ dữ liệu Paint Control và 0.78 trên bộ dữ liệu Rails, vượt trội so với các hàm phần thưởng khác như đếm số lần thất bại đơn thuần hoặc xếp hạng thời gian.
  3. Tác động của độ dài lịch sử kiểm thử: Hiệu năng mô hình cải thiện rõ rệt khi sử dụng lịch sử kiểm thử dài hơn, thể hiện qua việc bộ dữ liệu Paint Control với 300 vòng CI cho kết quả tốt hơn so với bộ dữ liệu Rails với 2000 vòng CI nhưng ít trường hợp thất bại hơn.
  4. Tính thích nghi của mô hình: Mô hình có khả năng thích nghi với sự thay đổi trong dữ liệu kiểm thử theo thời gian, giúp ưu tiên các trường hợp kiểm thử có khả năng phát hiện lỗi cao trong từng giai đoạn CI.

Thảo luận kết quả

Nguyên nhân chính của hiệu quả mô hình là khả năng học và cập nhật chiến lược ưu tiên dựa trên dữ liệu lịch sử kiểm thử, không phụ thuộc vào đặc tả phần mềm hay mã nguồn, phù hợp với môi trường kiểm thử độc lập và tích hợp liên tục. Việc sử dụng mạng nơ-ron giúp mô hình tổng quát hóa tốt hơn trong không gian trạng thái lớn, khắc phục hạn chế của Q-learning truyền thống.

So sánh với các nghiên cứu trước đây chủ yếu sử dụng các kỹ thuật truyền thống hoặc dựa trên mã nguồn, mô hình đề xuất có ưu thế trong việc xử lý dữ liệu hộp đen và thích nghi với ràng buộc thời gian thực thi. Kết quả cũng cho thấy việc lựa chọn hàm phần thưởng phù hợp là yếu tố quan trọng ảnh hưởng đến hiệu năng mô hình.

Dữ liệu có thể được trình bày qua biểu đồ NAPFD theo thời gian vòng CI, minh họa sự tăng trưởng hiệu năng của mô hình học tăng cường sâu so với các phương pháp khác, cũng như bảng so sánh chi tiết các chỉ số hiệu quả trên từng bộ dữ liệu.

Đề xuất và khuyến nghị

  1. Triển khai mô hình học tăng cường sâu trong quy trình CI: Áp dụng mô hình ưu tiên và lựa chọn trường hợp kiểm thử tự động để nâng cao hiệu quả phát hiện lỗi, giảm thời gian kiểm thử. Thời gian thực hiện: 6-12 tháng; chủ thể: các đội phát triển phần mềm và kiểm thử.
  2. Tích hợp hệ thống thu thập và tiền xử lý dữ liệu kiểm thử: Xây dựng hệ thống tự động thu thập, lưu trữ và xử lý dữ liệu lịch sử kiểm thử để cung cấp đầu vào chính xác cho mô hình học máy. Thời gian: 3-6 tháng; chủ thể: bộ phận quản lý kiểm thử và CNTT.
  3. Đào tạo và nâng cao năng lực cho đội ngũ kiểm thử viên: Tổ chức các khóa đào tạo về học máy và kiểm thử tự động để nâng cao kỹ năng vận hành và giám sát mô hình. Thời gian: liên tục; chủ thể: phòng nhân sự và đào tạo.
  4. Nghiên cứu mở rộng và tối ưu mô hình: Tiếp tục phát triển mô hình với các thuật toán học sâu mới, mở rộng phạm vi áp dụng cho các loại phần mềm khác nhau và tích hợp thêm các yếu tố như đặc tả phần mềm, mã nguồn. Thời gian: 12-24 tháng; chủ thể: nhóm nghiên cứu và phát triển sản phẩm.

Các giải pháp trên nhằm mục tiêu tăng chỉ số NAPFD lên ít nhất 10% trong vòng 1 năm, đồng thời giảm chi phí và thời gian kiểm thử từ 15-20% so với phương pháp truyền thống.

Đối tượng nên tham khảo luận văn

  1. Các kỹ sư kiểm thử phần mềm: Nắm bắt phương pháp tối ưu hóa kiểm thử tự động, áp dụng mô hình học máy để nâng cao hiệu quả công việc, giảm thiểu thao tác thủ công.
  2. Nhà quản lý dự án phần mềm: Hiểu rõ lợi ích của việc tích hợp học máy trong quy trình kiểm thử, từ đó hoạch định chiến lược phát triển và phân bổ nguồn lực hợp lý.
  3. Nhà nghiên cứu và phát triển công nghệ học máy: Tham khảo mô hình ứng dụng học tăng cường sâu trong lĩnh vực kiểm thử phần mềm, mở rộng nghiên cứu về các thuật toán và ứng dụng thực tiễn.
  4. Các tổ chức phát triển phần mềm quy mô lớn: Áp dụng mô hình để cải thiện quy trình kiểm thử trong môi trường tích hợp liên tục, nâng cao chất lượng sản phẩm và rút ngắn thời gian phát hành.

Mỗi nhóm đối tượng có thể sử dụng luận văn như tài liệu tham khảo để triển khai hoặc nghiên cứu sâu hơn về ứng dụng học máy trong kiểm thử phần mềm, từ đó nâng cao năng lực và hiệu quả công việc.

Câu hỏi thường gặp

  1. Học tăng cường sâu khác gì so với học máy truyền thống trong kiểm thử phần mềm?
    Học tăng cường sâu kết hợp mạng nơ-ron để xử lý không gian trạng thái lớn và liên tục, cho phép mô hình tự học từ tương tác với môi trường mà không cần dữ liệu giám sát đầy đủ, phù hợp với kiểm thử tự động trong môi trường thay đổi liên tục.

  2. Mô hình có thể áp dụng cho các loại phần mềm khác ngoài hai bộ dữ liệu thử nghiệm không?
    Có thể, tuy nhiên cần điều chỉnh tham số và huấn luyện lại mô hình với dữ liệu lịch sử kiểm thử tương ứng để đảm bảo hiệu quả tối ưu trong từng môi trường phần mềm cụ thể.

  3. Làm thế nào để đánh giá hiệu quả mô hình trong thực tế?
    Sử dụng chỉ số NAPFD để đo lường tốc độ phát hiện lỗi trong bộ kiểm thử được ưu tiên, so sánh với các phương pháp kiểm thử hiện tại để đánh giá mức độ cải thiện.

  4. Mô hình có thể hoạt động hiệu quả khi dữ liệu lịch sử kiểm thử còn hạn chế?
    Học tăng cường có khả năng bắt đầu với ít dữ liệu và tự khám phá chiến lược tối ưu qua quá trình tương tác liên tục, do đó phù hợp với tình huống dữ liệu hạn chế ban đầu.

  5. Có thể tích hợp mô hình vào quy trình kiểm thử hiện tại dễ dàng không?
    Mô hình được thiết kế để tích hợp vào quy trình CI, tuy nhiên cần xây dựng hệ thống thu thập và xử lý dữ liệu phù hợp, đồng thời đào tạo nhân sự để vận hành và giám sát mô hình hiệu quả.

Kết luận

  • Luận văn đã xây dựng thành công mô hình học máy tăng cường sâu kết hợp mạng nơ-ron nhân tạo để tối ưu hóa ưu tiên và lựa chọn trường hợp kiểm thử phần mềm.
  • Mô hình được đánh giá trên hai bộ dữ liệu thực nghiệm với kết quả NAPFD cải thiện đáng kể so với các phương pháp truyền thống.
  • Phương pháp không phụ thuộc vào đặc tả phần mềm hay mã nguồn, phù hợp với môi trường kiểm thử độc lập và tích hợp liên tục.
  • Các hàm phần thưởng được thiết kế phù hợp giúp mô hình thích nghi và nâng cao hiệu quả phát hiện lỗi theo thời gian.
  • Đề xuất các giải pháp triển khai và nghiên cứu mở rộng nhằm ứng dụng mô hình trong thực tế và phát triển công nghệ kiểm thử tự động.

Tiếp theo, cần triển khai thử nghiệm mô hình trong môi trường kiểm thử thực tế, đồng thời mở rộng nghiên cứu về các thuật toán học sâu mới để nâng cao hiệu quả và phạm vi ứng dụng. Độc giả và các tổ chức phát triển phần mềm được khuyến khích áp dụng và phát triển thêm dựa trên kết quả nghiên cứu này nhằm nâng cao chất lượng và hiệu quả kiểm thử phần mềm.