Kiến trúc tổng quan công cụ HiFa

Một phần của tài liệu Xây dựng công cụ định vị lỗi cho ứng dụng CC++ (Trang 34 - 35)

Công cụ HiFa được xây dựng dựa trên công cụ định vị lỗi Zoltar [15]. Công cụ HiFa cải tiến quá trình điều chỉnh mã nguồn bằng framework LLVM 11. Ngồi phổ ESHS đã được Zoltar cung cấp, cơng cụ HiFa cung cấp thêm các loại phổ khác như: DHS, DHS-def và DHS-use.

Kiến trúc công cụ định vị lỗi dựa trên phổ HiFa được mơ tả như Hình 3-3. Đầu vào của công cụng bao gồm: mã nguồn của chương trình, bộ kiểm thử. Đầu ra của cơng cụ là bảng xếp hạng độ nghi ngờ của tất cả các câu lệnh của chương trình.

Ở bước đầu tiên, tại mơ-đun Code Instrumentation, mã nguồn của chương trình được điều chỉnh để tạo dữ liệu thực thi của các câu lệnh trong quá trình chạy

ca kiểm thử. Framework LLVM được sử dụng để xây dựng mô-đun này. Sau khi được điều chỉnh, mã nguồn được cài đặt thành chương trình có thể thực thi được.

HiFa Tool

Code Instrumentation

Data Analysis Test Case

Execution Test Suite Collector Source code Test Suite Suspicious Rank

Hình 3-3: Kiến trúc cơng cụ HiFa

Mơ-đun Test Suite Collector thực hiện thu thập dữ liệu kiểm thử: các đầu vào của mỗi ca kiểm thử và đầu ra mong muốn của ca kiểm thử. Sau khi có được chương trình thực thi và dữ liệu kiểm thử, mơ-đun Test Case Execution sẽ thực hiện chạy toàn bộ ca kiểm thử của bộ kiểm thử. Kết quả đầu ra của chương trình được so sánh với đầu ra mong muốn của ca kiểm thử. Nếu kết quả so sánh là giống nhau thì ca kiểm thử được gán nhãn thành thông. Ngược lại, kết quả so sánh khác nhau thì ca kiểm thử được gán nhán thất bại.

Sau khi thu thập đầy đủ dữ liệu phổ của từng ca và kết quả thành công/thất bại của từng ca kiểm thử. Mô-đun Data Analysis sẽ thực hiện xác định độ nghi ngờ gây lỗi dựa trên công thức của các kỹ thuật định vị lỗi dựa trên phổ. Sau khi xác định độ nghi ngờ của toàn bộ câu lệnh, mô-đun này sẽ đưa ra được bảng xếp hạng độ nghi ngờ của chương trình. Dựa vào bảng xếp hạng này, nhà phát triển sẽ kiểm tra các câu lệnh từ xếp hạng cao nhất để xác định câu lệnh gây lỗi.

Một phần của tài liệu Xây dựng công cụ định vị lỗi cho ứng dụng CC++ (Trang 34 - 35)

Tải bản đầy đủ (PDF)

(59 trang)