Thuật toán sinh tậpđường đi độc lập từ CFG

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 33 - 35)

22

Bước đầu tiên, quá trình tìm đường đi ngắn nhất shortestPathđược tiến hành bằng cách duyệt đồ thị graph theo nhánh false, sau đó lưu shortestPath vào tập đường đi độc lập. Tiếp theo, các đỉnh quyết định trên shortestPath được thêm vào tập, biến

visited dùng lưu các đỉnh quyết định đã duyệt cả hai nhánh đúng-sai được khởi tạo bằng rỗng. Vòng lặp while lặp lại đến khi hai nhánh đúng-sai của mọi đỉnh quyết định tồn tại trong tập đường đi độc lập. Trong vòng while, một đỉnh bất kì u trong tập S

được lấy ra và tìm cạnh (u,v) chưa tồn tại trong tập đường đi độc lập. Từ cặp cạnh này, tatìm đường đi ngắn nhất nextPath đi qua cặp cạnh (u,v) để thêm vào tập đường đi độc lập. Tập S được cập nhật bằng cách thêm vào các đỉnh không thuộc tập visited trên đường đi nextPathvà xóa đỉnh u. Cuối cùng, đỉnh u được lưu vào tập visited.

3.3.2.Xây dựng đường kiểm thử vòng lặp

Trong thực tế, đa phần các hàm Java chứa vòng lặp nên tầm quan trọng của kiểm thử tính đúng đắn vòng lặp là tất yếu. Các đường đi sinh từ CFG chỉ có thể kiểm thử vòng lặp tối đa 1 lần nên chưa đảm bảo tính đúng đắn vòng lặp. Vì thế, luận văn này nghiên cứu cách sinh ca kiểm thử cho hàm Java chứa hai loại vòng lặp: vòng lặp đơn và hai vòng lặp lồng nhau. Tư tưởng chung của phương pháp nghiên cứu là viết lại đường đi chứa vòng lặp để tạo đường đi mới lặp nhiều hơn 1 lần, sau đó sinh ca kiểm thử từ đường đi mới đó.

Ba loại đường đi trong tập đường đi độc lập được kiểm thử vòng lặp gồm:

Đường đi chứa vòng lặp đơn. Nằm trong tập đường đi độc lập có chứa vòng lặp. Câu lệnh ứng với đỉnh quyết định đi vào vòng lặp và thoát khỏi vòng lặp đó là phủ định của nhau.

Đường đi chứa vòng lặp liền kề. Là đường đi có đúng một vòng lặp. Đường đi này chỉ có một đỉnh duy nhất đi vào vòng lặp và thoát khỏi vòng lặp.

Đường đi chứa vòng lặp lồng nhau. Là đường đi có hai vòng lặp: một vòng lặp bên trong và một vòng lặp bên ngoài. Đường đi loại này có hai đỉnh đặc biệt: một đỉnh đi vào và thoát khỏi vòng lặp bên trong, đỉnh còn lại đi vào và thoát khỏi vòng lặp bên ngoài.

3.3.2.1. Đường kiểm thử cho vòng lặp đơn

Đường đi chứa vòng lặp đơn được viết lại để tạo đường đi mới bằng cách sao chép vòng lặp một số lần cụ thể. Nếu vòng lặp đơn biết số lần lặp tối đa bằng n thì số lần lặp là 0, 1, 2, một số ngẫu nhiên lần, n - 1, n n + 1 lần. Ngược lại, nếu không biết số lần lặp tối đa của vòng lặp đơn, số lần lặp là 0, 1, 2 và một số ngẫu nhiên lần. Hình 3.8 trình bày các bước tạo đường đi mới với đầu vào là đường đi chứa vòng lặp đơn lưu trong biến PATH, số lần lặp lưu trong biến n; đầu ra là đường đi mới với vòng lặp đơn được lặp lại n lần.

23

Đầu tiên, đỉnh điều kiện của vòng lặp đơn được gán cho biến v. Sau đó, khối lặp vòng lặp khoi_lap được tìm ra. Tiếp theo, khối lặp khoi_lap được nhân bản n lần để tạo đường đi mới. Cuối cùng, cập nhật PATHbằng một đường đi mới với khối lặp đơn

khoi_lap đã được nhân bản n lần. Thuật toán kết thúc. Bắt đầu

v:= Đỉnh điều kiện của vòng lặp đơn

Khối lặp

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

path:= đường đi tử đỉnh đầu tiên đến đỉnh cuối cùng trong CFG

có chứa vòng lặp đơn

n: số lần lặp tối đa

Cập nhật path

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 33 - 35)

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

(62 trang)