Thị dòng điều khiể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 từ biểu đồ tuần tự UML, biểu đồ lớp và ràng buộc OCL (Trang 29 - 30)

Chƣơng 1 : GIỚI THIỆU

2.3 thị dòng điều khiển

Đồ thị dòng điều khiển (Control Flow Graph - CFG) là đồ thị đƣợc sinh ra từ biểu đồ tuần tự bởi một thuật toán hồi qui, với các ràng buộc và thông số trong thiết kế biểu đồ tuần tự thì sẽ đƣợc bóc tách, biến đổi để sinh dữ liệu kiểm thử. Đồ thị dòng điều khiển là một đồ thị biểu diễn trực tiếp của biểu đồ tuần tự và đƣợc tạo nên từ bảy loại nốt nối với nhau bởi các đƣờng. Bảy loại nốt đó là [4]:

Nốt bắt đầu (Start node): là nốt khởi đầu của đồ thị.

Nốt đơn vị (BN – Block node): là nốt biểu thị cho một thông điệp hoặc một tuần

tự của của các thông điệp. Mỗi thông điệp m(i) bao gồm thông tin của lớp gửi và lớp nhận và có cấu trúc ( m(i), ParameterList, returnValue ). Mỗi thông số của một thông điệp có thể là một thuộc tính của ràng buộc OCL.

Nốt quyết định (DC – Decision node): là nốt biểu thị cho một hàm điều kiện nhƣ

điều kiện đúng (hoặc sai) cần đƣợc thỏa mãn để lựa chọn các toán hạng tƣơng ứng trong một phân đoạn.

Nốt sáp nhập (MN – Merge node): là nốt biểu thị cho sự sáp nhập các nhánh ra từ

một hành vi lựa chọn (chẳng hạn nhƣ lối ra từ một phân đoạn ALT hoặc OPT).

Nốt rẽ nhánh (FN – Fork node): là nốt biểu thị đầu vào của phân đoạn PAR hoặc

SEQ.

Nốt kết hợp (JN – Join node): là nốt đầu ra (hay kết thúc) của phân đoạn PAR hoặc SEQ.

 Nốt kết thúc (End node): là nốt kết thúc của tất cả các chu trình trong đồ thị. Một đồ thị dòng điều khiển G đƣợc biểu diễn nhƣ sau: G <A, E, in, F> với:

o „in‟ là nốt khởi tạo (nốt bắt đầu).

o F là tập các nốt hay trạng thái cuối cùng của đồ thị.

o A là tập các nốt bao gồm (BN CN) với BN là nốt đơn vị (Block node),

CN = (DN MN FN JN) đƣợc gọi là tập các nốt điều khiển.

o E là tập các cạnh nối giữa các nốt. E = {f (x; y) | x, y A F}

Cấu trúc mỗi nốt A đƣợc đề xuất nhƣ sau: < nodeId, nodeType, nodeDetails, outEdge > với:

nodeId: là nhãn duy nhất đƣợc đính kèm vào mỗi nốt.

nodeType = {decision, merge, fork, join} với mỗi và

nodeType = {block, initial, final} cho tất cả các nốt còn lại.

nodeDetails = { ,..., | q là số của một tin nhắn trong BN}. Mỗi

nodeDetails đƣợc định nghĩa là một bộ ba < m, s, r > với mỗi bản tin xác định đƣợc đối tƣợng gửi s, đối tƣợng nhận r và tên của mỗi bản tin m cho tất cả các nốt

đơn vị BN. Mỗi thông điệp bao gồm các thông tin bên gửi từ biểu đồ lớp

và có cấu trúc < m, ParamList, rValue >. Các thông tin này sẽ đƣợc đính kèm vào cả các bộ thông số ParamList = { } và trả về giá trị rValue. Ngoài ra, một

thông số của một phƣơng thức còn có thể đƣợc cung cấp từ các thuộc tính,

ràng buộc các lớp. Một thông số hay một giá trị trả về đƣợc tách riêng và các thông tin ràng buộc từ biểu đồ lớp và có cấu trúc < name, type, value, constraint > với

name là tên của bộ thông số hoặc thuộc tính, type là dạng dữ liệu, value là giá trị

đƣợc gán. Còn constraint đƣợc lấy từ ràng buộc OLC đƣợc khai báo từ các thuộc

tính biểu đồ lớp hoặc đã đƣợc đính kèm vào biểu đồ tuần tự.

outEdge = { ,…, | q là số cạnh nối}. Mỗi đƣợc xác định bằng < sourceNode, targetNode > [13].

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 từ biểu đồ tuần tự UML, biểu đồ lớp và ràng buộc OCL (Trang 29 - 30)

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

(74 trang)