Quá trình sinh dữ liệu kiểm thử: phát triển từ [75] cho vòng lặp

Một phần của tài liệu (LUẬN án TIẾN sĩ) các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML luận án TS máy tính 624801 (Trang 114 - 116)

Từ tập hợp các đường dẫn kiểm thử T sinh ra từ Phần 4.3.2, nút quyết định đầu tiên kiểm tra T có rỗng khơng. Nếu tất cả các đường trong T được

kiểm tra và dữ liệu khơng tìm thấy thì q trình tìm kiếm thất bại, nghĩa là khơng có đường dẫn khả thi từ điểm N1 đến điểm kết thúc Ng. Trường hợp tập hợp T không rỗng, chọn một đườngtitrong tập T để duyệt và di chuyển nó khỏi T để không chọn lại nữa. Bước tiếp theo của thủ tục là duyệt đường dẫn ti lần lượt xét tuần tự các nút từ nút bắt đầu đến nút kết thúc của ti. Nếu nút hiện

tại là nút quyết định (kiểm tra nút hiện tại là DN?) thì giá trị biến của nhánh ra tương ứng được giảm miền của biến thích hợp với ràng buộc thỏa mãn.

Nếu nút hiện tại khơng là nút quyết định thì câu lệnh được thực thi và cũng có thể làm thay đổi giá trị của biến. Nếu nút hiện tại là nút quyết định, thủ tục sẽ đánh dấu, đếm DN và đọc vị từ trên cạnh nhánh. Các vị từ (trên các cạnh nhánh) từ nút quyết định DN được sử dụng để tạo ra các ràng buộc mới. Từ các ràng buộc của các biến và các vị từ theo từng đường dẫnti, GetSplit [75] để tạo ra điểm chia mới nhằm giảm miền giới hạn của các biến. Đường dẫn ti

được duyệt, một quá trình tìm kiếm được sử dụng để chia các miền của biến với mục đích nỗ lực để tìm một tập hợp các giá trị mà vẫn thỏa mãn các ràng buộc. GetSplit là thuật toán thay đổi miền các biến trong một ràng buộc thỏa mãn: các miền mới vẫn thỏa mãn các ràng buộc và kích thước của hai miền được chia là bằng nhau. Ví dụ, vị từ x > y với miền của x, y là (1..50), quá trình chia

đầu tiên sẽ tạo ra miền cho x là (26..50) và miền cho y là (1..25). Thuật tốn

GetSplit được chỉ ra ở Hình 4.4, tìm kiếm heuristic là khóa chính của q trình tìm kiếm để chọn các giá trị của các biến thỏa mãn trong từng đường dẫn ti. Khi các biến hoặc một biểu thức có quan hệ với nhau, xác định bởi ràng buộc, có hai trường hợp, được xác định bởi quan hệ giữa hai miền của biến. Nếu hai miền của biến xác định khơng giao nhau thì các ràng buộc có sẵn là thỏa mãn hoặc không thỏa mãn. Nếu hai miền xác định một tập hợp các giá trị giao nhau thì có giá trị thỏa mãn, có giá trị khơng thỏa mãn. Khi đó sử dụng thuật tốn GetSplit để tìm các miền giá trị của biến để thỏa mãn các ràng buộc. GetSplit chấp nhận hai miền, chỉ số tìm kiếm để tìm các miền mới mà ràng buộc sẽ đúng cho tất cả các giá trị trong các miền mới. Ban đầu, một giá trị trong hai miền được chọn để làm điểm chia ra thành các miền con, điểm đó là split. Điểm chia này được lựa chọn trong trường hợp hai miền khơng giao nhau thì mỗi miền giảm đi bởi số lượng xấp xỉ bằng nhau. Nếu một điểm chia được lựa chọn là khơng hợp lệ thì kết quả các miền được chia khơng thích hợp với những ràng

buộc sau đó. Nếu điểm chia được chọn tạo ra các ràng buộc sau đó là khơng khả thi thì GetSplit được sử dụng để tìm kiếm một điểm chia tốt hơn. Trong suốt quá trình tìm kiếm, điểm chia được liên tục đánh giá lại sử dụng chia làm hai đoạn, điểm chia này được di chuyển một nửa theo một hướng, và phần còn lại di chuyển trong nửa kia, cứ làm như vậy cho đến khi:

Trѭӡng hӧp 1: Trѭӡng hӧp 2: Trѭӡng hӧp 3: Trѭӡng hӧp 4: Top Bottom Bottom Top Left Right Top Top Bottom Bottom Left Right Top Bottom Bottom Top Left Right Top Bottom Left Right Bottom Top

Một phần của tài liệu (LUẬN án TIẾN sĩ) các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML luận án TS máy tính 624801 (Trang 114 - 116)