Kết quả với Z3 – số học phi tuyến tính

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu phương pháp sinh dữ liệu kiểm thử phần mềm dựa trên kỹ thuật kiểm chứng mô hình (Trang 52 - 54)

Nhìn vào hình trên ta sẽ thấy Z3 cho ra 2 mô hình tƣơng ứng với các trƣờng hợp z> 10 và z<=10:

 Ca kiểm thử 1 là: x = 1; y = 11;  Ca kiểm thử 2 là: x =0 ; y = 0;

Nhƣ vậy chúng ta có thể thấy rằng việc sử dụng Z3 có thể giải quyết nhiều bài toán hơn ( đại số phi tuyến tính là 1 ví dụ). Về nguyên tắc nếu tích hợp đầy đủ Z3 vào JPF, thì không gian bài toán giải đƣợc sẽ đƣợc mở rộng hơn rất nhiều. Z3 giải quyết đƣợc rất nhiều bài toán trong khi Choco, IAsolver là rất hạn chế.

Tuy nhiên cách tiếp cận mới này cũng gặp phải một vấn đề đó là về mặt tốc độ chƣơng trình. Việc chuyển đổi ràng buộc từ JPF sang SMT-LIB, lƣu ra file sau đó gọi z3 thông qua dòng lệnh là mất thời gian nếu không gian điều kiện đƣờng đi của bài toán là lớn. Vì vậy đối với số học tuyến tính ta nên sử dụng nhƣ JPF hiện thời, còn với các trƣờng hợp khác nhƣ số học phi tuyến tính ta có thể sử dụng kết quả của luận văn này.

KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN CỦA ĐỀ TÀI

KẾT LUẬN

Do thời gian nghiên cứu có hạn nên kết quả của luận văn này vẫn còn nhiều hạn chế. Tuy nhiên qua quá trình nghiên cứu tác giả cũng đã tìm hiểu và nắm bắt đƣợc những lý thuyết, công cụ liên quan đến việc kiểm chứng, kiểm thử chƣơng trình một cách tự đông. Tác giả cũng có những đóng góp nhất định trong luận văn này. Đó là việc mở rộng thành công JPF với Z3 để sinh tự động dữ liệu kiểm thử chƣơng trình Java.

Kết quả của luận văn này chỉ mang tính thử nghiệm và là những bƣớc đi đầu tiên. Trong tƣơng lai hoàn toàn có thể đƣợc áp dụng trong thực tiễn nếu đƣợc đầu tƣ đúng mức về mặt nhân lực và thời gian.

HƢỚNG PHÁT TRIỂN

Các công cụ kiểm thử và JPF là những dự án rất đƣợc quan tâm hiện nay trong việc kiểm chứng, kiểm thử phần mềm, Z3 là một ví dụ. Vì vậy hƣớng phát triển tiếp theo của đề tài là làm sao hoàn thiện hơn nữa để có thể sử dung Z3 và các công cụ khác giải quyết đƣợc các bài toán khác, các kiểu dữ liệu nhƣ mảng, vector… điều này sẽ làm cho chƣơng trình đƣợc tối ƣu hơn.

TÀI LIỆU THAM KHẢO

1. Clart Barret, Aaron Stump, Ceasar Timeli (2010), The SMT-Lib Standard, version 2.0, www.SMT-LIB.org

2. Java Path Finder, http://javapathfinder.sourceforge.net/

3. D. Detlefs, G. Nelson, and J. B. Saxe (2005), Simplify: a theorem prover for program checking, J. ACM, pp. 365-473

4. King, J.C (1976), Symbolic Execution and testing, communications of the ACM, pp. 385 - 394

5. Leonardo de Moura and Nikolaj Bjørner (2006), Z3 – a tutorial, Microsoft Research, USA

6. Leonardo de Moura and Nikolaj Bjørner (2008), Z3: An Efficient SMT Solver, Microsoft Research, One Microsoft Way, Redmond, vWA, 98074, USA, pp. 2-3

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu phương pháp sinh dữ liệu kiểm thử phần mềm dựa trên kỹ thuật kiểm chứng mô hình (Trang 52 - 54)

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

(54 trang)