Ví dụ minh họa AST

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp sinh dữ liệu kiểm thử tự động cho các ứng dụng java (Trang 45 - 47)

Hình 4.2 thể hiện mã nguồn của một class test đơn giản. Bằng việc sử dụng ASTView trong Eclipse, ta có thể thấy được cú pháp trừu tượng của class này như trong hình 4.3. Các nút (node) in đậm là các nhánh có thể truy cập được khi ta sử dụng một visitor để duyệt các nút (node). Ví dụ:MethodDeclaration, Modifier,SimpleName, SingleVariableDeclaration, v.v. Những nút (node) khác có thểđược truy cậpthông qua việc sử dụng các phương thức (method) của các nút (node) in đậm.

Cú pháp trừu tượng mô tả thông qua ASTView trong hình 4.3 có thể được mô tả lại dưới dạng cây cú pháp trừu tượng như trong hình 4.4. Như ta thấy, dù chỉ là một vài dòng mã nguồn đơn giản, taphải cần đến một cây AST rất lớn để mô tả nó.Vì vậy, tùy vào yêu cầu phân tích mà độ sâu cây AST cần xây dựngsẽ khác nhau. Ở cấp độ

34

xây dựng CFG từ mã nguồn thì cần phân tích đến khi mỗi một đỉnh trong AST tương ứng với câu lệnh gán/khởi tạo/điều kiện là đủ, thay vì phân tích sâu hơn đến mức biến/toán tử/tên hàm/... Trong thử nghiệm nêu ra ở [5], thời gian xây dựng cây AST từ mã nguồn có độ dài 25000 dòng trên máy tính chạy Java 32 bit là 0.40 giây. JDT được coi là một trong những bộ phân tích cấu trúc mã nguồn Java hiệu quả nhất và được sử dụng rộng rãi.

Hình 4.3. Sử dụng ASTView trong Eclipse trên đoạn mã nguồn “test”

4.2.2. Bộ giải hệ Z3 Prover

Z3 Prover là một bộ công cụ dùng để chứng minh định lý, phát triển bởi Microsoft Research. Công cụ Z3 này cho phép nhập đầu vào là các ràng buộc dưới dạng biểu thức các biến, các hằng số, cùng các phép toán theo thứ tự duyệt cây pre- order (các phép toán là nút cha và được liệt kê trước, các biểu thức ứng với phép toàn là các nút con và được liệt kê sau. Thí dụ: biểu thức 1 + 2*3 sẽ được chuyển thành +1(* 2 3)). Sau đó, công cụ sẽ kiểm tra xem liệu các ràng buộc này có là khả thi hay không, tức có tồn tại một bộ các giá trị cho các biến số mà làm cho mọi ràng buộc đầu vào đều đúng hay không. Nếu khả thi, công cụ này cũng hỗ trợ tạo ra một bộ nghiệm số cụ thể thỏa mãn.

35

Hình 4.4. Cây AST của mã nguồn class “test”

Ví dụ,

Bài toán: Tìm giá trị biến số year thỏa mãn:

 year là một số nguyên dương

 year là một năm nhuận

//Cú pháp hàm Java

year > 0 year %400==0||( year %4==0 && year %100!=0))

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp sinh dữ liệu kiểm thử tự động cho các ứng dụng java (Trang 45 - 47)

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

(62 trang)