.Xây dựng hệ ràng buộc

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 37 - 39)

Hệ ràng buộc được sinh ra bằng cách phân tích đường đi sử dụng kỹ thuậtSE [7]. Trong kỹ thuậtSE, giá trị của biến là các giá trị tượng trưng mà không phải giá trị cụ thể, có thể là số nguyên, số thực hoặc biểu thức. Đầu vào của bước xây dựng hệ ràng buộc là một đường kiểm thử, đầu ra là một hệ ràng buộc. Tất cả các nghiệm thỏa mãn hệ ràng buộc này đều đảm bảo đường đi này sẽ được thực thi khi chạy trong môi trường chạy. Biến trong hệ ràng buộc là biến truyền vào hàm, một vài trường hợp phức tạp có thêm biến mảng. Số câu lệnh điều kiện trên đường đi bằng số biểu thức lôgic trong hệ ràng buộc tương ứng. Một đường đi gọi là thực thi được nếu hệ ràng buộc tương ứng có nghiệm và ngược lại. Hình 3.11 mô tả một hệ ràng buộc sinh từ một đường kiểm thử nào đó.

{ ! (𝑎 == 0 )

(b − 2 == b) or (c == d𝑎𝑛𝑑 𝑏 − 2 == 0)

Hình 3.11. Ví dụ một hệ ràng buộc.

Hình 3.12 trình bày cách sinh hệ ràng buộc từ đường đi. Đầu vào thuật toán là một đường đi từ đỉnh đầu tiên đến đỉnh cuối cùng của CFG, đầu ra là hệ ràng buộc tương ứng. Đầu tiên, tập các đỉnh trên đường đi được lưu trong biến V (dòng 1). Sau đó, bảng lưu thông tin các biến bang_bien và tập lưu hệ ràng buộc he_rang_buoc được khởi tạo (dòng 2, 3). Trong vòng for, câu lệnh được rút gọn bằng cách thay thế biến với giá trị của biến đó (dòng 5). Tiếp theo, nếuv là câu lệnh khởi tạo, biến mới được sinh ra và gán giá trị mặc định là chữ cái viết hoa tên biến đó nếu biến đó không được tạo giá trị khởi đầu (dòng 6). Nếu v là câu lệnh gán, giá trị biến được cập nhật trong

bang_bien (dòng 12). Nếu v là câu lệnh điều kiện thì lưu lại vào hệ ràng buộc (dòng 15). Thuật toán kết thúc khi mọi đỉnh trên đường đi đều được phân tích.

26

Hình 3.12. Thuật toán sinh hệ ràng buộc từ đường kiểm thử

Hình 3.13 trình bày chi tiết các bước trong pha rút gọn. Đầu tiên, các biến thường trong câu lệnh được thay thế với giá trị biến đó. Bước tiếp theo, các chỉ số mảng dạng biểu thức được tính toán thành các giá trị cụ thể. Sau đó, các biến mảng được thay thế với giá trị cụ thể. Quá trình rút gọn này lặp lại với một số lần cho trước.

27

Bắt đầu

Thay thế biến thường

Rút gọn chỉ số mảng

Thay thế biến mảng

Kết thúc Lặp n lần cho trước

Hình 3.13. Quá trình rút gọn câu lệnh.

3.5. Sinh tập dữ liệu kiểm thử dựa trên giải nghiệm hệ ràng buộc ràng buộc

Cho tới nay, vấn đề tìm nghiệm thỏa mãn hệ ràng buộc một cách hiệu quả là một bài toán khó và thách thức. Yêu cầu giải hệ tìm nghiệm trong thời gian nhanh nhất có thể ngày càng gia tăng trong các bài toán khoa học kỹ thuật . Với các công cụ sinh ca kiểm thử tự động, nhu cầu giải hệ trong thời gian thực là tất yếu và là một vấn đề mang tính cấp bách. Vì vậy, luận văn này trình bày hai cách tiếp cận để tìm nghiệm thỏa mãn hệ ràng buộc gồm: tận dụng sức mạnh các công cụ SMT-Solver hiện nay như Z3, SmtInterpol, v.v. và kỹ thuậtsinh ngẫu nhiên.

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 37 - 39)

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

(62 trang)