Các bước cơ bản sinh các dữ liệu kiểm thử

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 55 - 57)

ˆ Sinh dữ liệu kiểm thử trong các kịch bản kiểm thử từ các hàm vị từ đó.

3.3.2 Chuyển đổi biểu đồ tuần tự UML thành CFG

Có ba loại mơ hình trung gian có thể chọn để sinh ra các kịch bản kiểm thử từ biểu đồ tuần tự UML là: mơ hình hoạt động, mơ hình Petri và các loại đồ thị [89]. Luận án chọn CFG là đồ thị trung gian để sinh ra các dữ liệu kiểm thử. Kế thừa từ phương pháp trong [72] đã áp dụng cho năm loại toán tử: alt, opt, break, loop và parallel; thuật toán sinh CFG cải tiến áp dụng cho tất cả mười hai loại toán tử và trong các trường hợp lồng nhau của biểu đồ tuần tự UML 2.0. Các thông tin trong CFG được chuyển từ biểu đồ tuần tự UML 2.0 và các ràng buộc trong các lớp tương ứng của biểu đồ lớp.

Điểm mới của phương pháp chuyển đổi CFG đưa ra so với [72] là: phát triển thêm cho các toán tử weak sequencing, strict, critical, ignore, consider, assert và negative và cải tiến đối với toán tử parallel. Việc chuyển đổi sang CFG của toán tử parallel trong nghiên cứu [72] là chuyển từng toán hạng tương ứng với các nút của đồ thị, trong khi đó ở phương pháp đề xuất thì chuyển đổi từng thơng điệp tương ứng với từng nút để thuật tốn sinh các đường dẫn kiểm thử có thể thực hiện đan xen nhau (trong Chương 4). Việc sinh CFG từ biểu đồ tuần tự được sử dụng thuật toán đệ quy, và các ràng buộc của các biến được thêm vào từ biểu đồ lớp để sinh dữ liệu kiểm thử.

Ý tưởng phương pháp sinh CFG: Đầu tiên, việc sinh cấu trúc dữ liệu của biểu đồ tuần tự tạo nên hàng đợi bao gồm: thơng điệp (message), tốn tử (fragment) và toán hạng (operand). Hàm lặp gọi là processElement* với mục đích sinh ra các loại nút khác nhau từ hàng đợi. Mỗi bước lặp, nó phân tích mỗi

phần tử của hàng đợi để tạo nút ra tương ứng, cạnh tạo ra được nối từ nút hiện tại với nút ra tương ứng đó, sau đó nút ra đó lại được xem như nút hiện tại. Bởi vì các tham số của một thơng điệp trong biểu đồ tuần tự thiếu các thông tin về ràng buộc và kiểu dữ liệu của chúng, do đó các ràng buộc này sẽ được lấy từ biểu đồ lớp và cập nhật vào từng thơng điệp. Thuật tốn 3.1 được kế thừa dựa vào phương pháp trong [72, 70]. Thuật tốn phân tích các phần tử của biểu đồ tuần tự trong trường hợp các toán tử lồng nhau, áp dụng cho tất cả các toán tử của biểu đồ UML 2.0. Thuật toán đưa ra bắt buộc chuyển biểu đồ tuần tự thành dạng file xmi, sử dụng phân tích biểu đồ tuần tự xmi để tạo ra hàng đợi tương ứng [70]. Cấu trúc dữ liệu của biểu đồ tuần tự là một mảng các phần tử gồm có các thơng điệp, các tốn tử và toán hạng. Tất cả các phần tử được sắp xếp theo đúng trình tự của biểu đồ tuần tự đưa vào.

Đầu vào của Thuật toán 3.1 là file xmi của biểu đồ tuần tự, các quy tắc để viết file xmi được mô tả như sau:

ˆ <sequence> và <\sequence> là cặp thẻ bắt đầu và kết thúc của file xmi. ˆ Cặp thẻ <fragment> và <\fragment> là bắt đầu và kết thúc một toán tử.

Trong fragment gồm trường id, type và operator lần lượt là mã xác định, loại và toán hạng của tốn tử đó.

ˆ Cặp thẻ <operand> và <\operand> là bắt đầu và kết thúc của các toán hạng bên trong toán tử, bắt buộc phải nằm giữa hoặc ngay sau cặp thẻ khai báo toán tử; bao gồm id và loại toán hạng type.

ˆ Thẻ <lifeline> bắt đầu trục thời gian; bao gồm id, trường type và tên (name) của đường sống (lifeline).

ˆ Cặp thẻ <message> và <\message> là bắt đầu và kết thúc của một thông điệp; Trong message gồm các trường id, type, name (tên thông điệp), sendEvent là id của lifetime của đầu thông điệp, receivedEvent là id của lifetime của cuối thông điệp.

ˆ Thẻ <constraint> gồm các ràng buộc trong các fragment và operand, bao gồm trường id, type, condition (điều kiện). Trong toán tử ignore được dùng để khai báo các thơng điệp bị loại bỏ, trong tốn tử consider là các thông điệp cần giữ lại.

Ă͗ Ă͗ ď͗ ůŽŽƉ Đ͗ Đ͗ Ăůƚ ΀Ă΁ ΀ď΁ ŵϭ;Ϳ ŵϮ;Ϳ ŵϯ;Ϳ ŵϰ;Ϳ ŵϱ;Ϳ

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 55 - 57)