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

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp sinh bộ kiểm thử từ biểu đồ tuần tự UML 2 0 và ứng dụng cho kiểm thử phần mềm 04 (Trang 46 - 48)

3.6.7 .Thuật toán xác định đƣờng kiểm thử cho khối weak

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

Trong kỹ thuật SE, giả định đƣợc đƣa ra là chƣơng trình chỉ nhận 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. Bằng cách phân tích đƣờng đi để sinh ra hệ ràng buộc [8]. Đầ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 4.1 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 4.1. Ví dụ một hệ ràng buộc.

Thuật toán 10: Sinh hệ ràng buộc

Đầu vào: PATH là một đƣờng đi từ đỉnh đầu tiên đến đỉnh cuối cùng của CFG

Đầu ra: Hệ ràng buộc tƣơng ứng

1: Lấy các đỉnh của CFG mà PATH đi qua và lƣu lại trong biến V 2: Khởi tạo bang_bien lƣu thông tin các biến

3: Khởi tạo he_rang_buoc lƣu thông tin hệ ràng buộc 4: for mỗi đỉnh v trong V do

5: Rút gọn câu lệnh mà đỉnh v lƣu trữ 6: if v làcâu lệnh khởi tạo then

7: Tạo biến var với giá trị khởi đầu là tên viết hoa của biến 8: if biến var đƣợc khởi tạo giá trị cụ thể then

9: Cập nhật giá trị biến var 10: end if

11: Thêm biến var vào bang_bien 12: else if v là câu lệnh gán then

13: Cập nhật giá trị biến đƣợc gán giá trị mới trong bang_bien 14: else

15: Thêm v vào he_rang_buoc 16: end if

17: end for

Thuật toán 10 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ếu v 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.

Hình 4.2 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.

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

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp sinh bộ kiểm thử từ biểu đồ tuần tự UML 2 0 và ứng dụng cho kiểm thử phần mềm 04 (Trang 46 - 48)

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

(72 trang)