Chƣơng 2 TỔNG QUAN KIỂM THỬ DỰA TRÊN MÔ HÌNH
3.6. Thuật toán sinh tự động các đƣờng kiểm thử
3.6.6. Thuật toán xác định đƣờng kiểm thử cho khối par và seq
Thuật toán 6: Thuật toán xác định đƣờng kiểm thử cho khối par và seq.
Đầu vào: Biểu đồ tuần tự của khối par và seq biểu diễn bằng tệp xmi.
Đầu ra: Đƣờng kiểm thử tƣơng ứng.
1: create listParPaths = new ArrayList 2: add listParPaths.add(element.genPath()) 3: create results = new ArrayList
4: for i = 0 to listParPaths.get(n).size() do 5: currentPath[n] = listParPaths.get(n).get(i) 6: if n == listParPaths.size() – 1 then 7: for j = 0 to listParPaths.size() do 8: parPath += "(" + currentPath[j] + ")" 9: end for 10: results.add(parPath); 11: else
12: Gọi đệ quy genBacktrack(n + 1, currentPath, listParPaths, results) 13: end if
14: end for
15: return results
Thuật toán 6 mô tả quá trình sinh biểu thức chính quy cho phân đoạn par và seq. Phân đoạn par yêu cầu các hành vi thuộc cùng một operand phải bảo toàn thứ tự thực hiện, còn giữa các operand thì các hành vi có thể đan xen tùy ý. Bằng cách gọi đệ quy hàm genpath ta sinh ra đƣờng kiểm thử tƣơng ứng. Phân đoạn seq yêu cầu các hành vi thuộc cùng 1 operand phải bảo toàn thứ tự thực hiện, các hành vi
thực thi trên cùng một lifeline cũng phải đảm bảo thứ tự thực hiện, còn giữa các operand khác nhau hoặc giữa các lifeline khác nhau thì có thể đan xen tùy ý. Do đó ta phải sinh ra các thứ tự hợp lệ của các hành vi rồi tìm đƣờng kiểm thử của các thứ tự này và ghép lại. Ta xem xét có thể chèn phần tử thứ i của mảng elementList vào vị trí thứ j của mảng sequence để thỏa mãn điều kiện của một thứ tự hợp lệ hay không? Việc này dựa vào các yêu cầu của một thứ tự hợp lệ của phân đoạn par hoặc seq đã nêu ở trên.