Luận Văn: Phương Pháp Sinh Dữ Liệu Kiểm Thử Tự Động UML & OCL

Luận văn thạc sĩ: Phương pháp sinh dữ liệu kiểm thử tự động từ UML (biểu đồ tuần tự, lớp) & OCL. Nghiên cứu mới, hiệu quả, chính xác.

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2016

74
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

TÓM TẮT

ABSTRACT

LỜI CAM ĐOAN

MỤC LỤC

DANH SÁCH BẢNG BIỂU

DANH SÁCH HÌNH VẼ

BẢNG THUẬT NGỮ VIẾT TẮT

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

2. Chƣơng 2: CÁC KHÁI NIỆM VÀ TỔNG QUAN KIỂM THỬ DỰA TRÊN MÔ HÌNH

2.1. Tổng quan kiểm thử dựa trên mô hình

2.2. Biểu đồ tuần tự và các khối phân đoạn trong UML

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

3. Chƣơng 3: PHƢƠNG PHÁP SINH ĐỒ THỊ DÒNG ĐIỀU KHIỂN TỪ BIỂU ĐỒ TUẦN TỰ

3.1. Điều kiện ràng buộc trong thiết kế

3.2. Thuật toán biến đổi biểu đồ tuần tự sang đồ thị dòng điều khiển

3.3. Kỹ thuật sinh kịch bản kiểm thử

3.4. Xây dựng hệ ràng buộc

3.5. Giải hệ sử dụng SMT-Solver

3.6. Các nghiên cứu liên quan

4. Chƣơng 4: CÔNG CỤ VÀ THỰC NGHIỆM

4.1. Giới thiệu công cụ và môi trƣờng thực nghiệm

4.3. Ý nghĩa thực nghiệm

5. Chƣơng 5: KẾT LUẬN

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan Về Kiểm Thử Tự Động Từ Biểu Đồ UML OCL

Kiểm thử tự động đang ngày càng trở nên quan trọng trong phát triển phần mềm hiện đại. Nó giúp giảm chi phí, thời gian và nâng cao chất lượng sản phẩm. Theo ước tính, kiểm thử chiếm khoảng 50% thời gian và 40% - 60% tổng chi phí trong toàn bộ quá trình phát triển phần mềm. Kiểm thử tự động đặc biệt quan trọng trong các lĩnh vực đòi hỏi độ chính xác cao như hàng không, quân sự, khoa học, vũ trụ. Kiểm thử tự động được xem là giải pháp chính nhằm giảm chi phí và thời gian mà vẫn đảm bảo chất lượng trong quá trình phát triển phần mềm. Nhiều công trình nghiên cứu đã được đề xuất để giải quyết, tối ưu và tự động hóa quá trình kiểm thử. Một số nghiên cứu đáng chú ý bao gồm phương pháp sinh ca kiểm thử tự động từ biểu đồ tuần tự UML, sinh dữ liệu kiểm thử tự động từ biểu đồ tuần tự UML và ràng buộc OCL, và sinh ca kiểm thử từ biểu đồ tuần tự và hệ thống chuyển đổi được gắn nhãn. Bài nghiên cứu này trình bày một phương pháp khác để sinh ca kiểm thử tự động và cải tiến một công đoạn sinh ca kiểm thử tự động để nâng cao chất lượng kiểm thử. Kiểm thử dựa trên mô hình đòi hỏi phải có các mô hình toán học đặc tả chính xác hành vi của hệ thống và có sẵn trong thực tế. Các mô hình này thường được biểu diễn bằng các máy hữu hạn trạng thái đơn định. Xây dựng mô hình cho các phần mềm là một công việc khó khăn và tiềm ẩn nhiều lỗi. Thay vào đó việc phân tích và thiết kế dựa trên các biểu đồ tuần tự UML là một công việc dễ dàng và trở nên phổ biến hơn. Do đó việc kiểm thử tính đúng đắn cho thiết kế dựa trên mô hình đang được nghiên cứu và áp dụng thực tế cho kiểm thử dự án phần mềm. Không những tự động hóa được qui trình kiểm thử mà thời gian bắt đầu kiểm thử cũng được tiến hành sớm hơn giúp rút ngắn thời gian phát triển phần mềm.

1.1. Vai Trò Của Biểu Đồ UML Và Ràng Buộc OCL Trong Kiểm Thử

Biểu đồ UMLràng buộc OCL đóng vai trò quan trọng trong việc mô tả hệ thống phần mềm và xác định các quy tắc, điều kiện ràng buộc. Sử dụng biểu đồ UML và ràng buộc OCL giúp xác định và kiểm tra các tình huống lỗi tiềm ẩn trong thiết kế trước khi triển khai. Phương pháp này giúp giảm chi phí và thời gian sửa lỗi sau này. Từ biểu đồ UML và ràng buộc OCL, có thể tạo ra các ca kiểm thử tự động và hiệu quả. Ràng buộc OCL được sử dụng để biểu diễn các điều kiện ràng buộc trên các đối tượng trong hệ thống. Điều này cho phép kiểm tra các quy tắc kinh doanh và các ràng buộc dữ liệu quan trọng. Ví dụ, một ràng buộc OCL có thể chỉ định rằng số dư tài khoản phải luôn lớn hơn 0.

1.2. Lợi Ích Của Tự Động Hóa Kiểm Thử Từ Biểu Đồ UML OCL

Tự động hóa kiểm thử từ biểu đồ UMLràng buộc OCL mang lại nhiều lợi ích, bao gồm giảm thời gian và chi phí kiểm thử, tăng độ bao phủ kiểm thử, và cải thiện chất lượng phần mềm. Tự động hóa cho phép thực hiện kiểm thử một cách nhanh chóng và hiệu quả, đặc biệt là trong các dự án lớn và phức tạp. Các ca kiểm thử được tạo ra từ biểu đồ UMLràng buộc OCL có thể được tái sử dụng và cập nhật dễ dàng khi hệ thống thay đổi. Điều này giúp giảm chi phí bảo trì và nâng cấp phần mềm. Ngoài ra, tự động hóa còn giúp giảm thiểu sai sót do con người gây ra trong quá trình kiểm thử thủ công.

1.3. Các Phương Pháp Kiểm Thử Dựa Trên Mô Hình Phổ Biến

Có nhiều phương pháp kiểm thử dựa trên mô hình phổ biến, bao gồm kiểm thử dựa trên máy trạng thái (state machine testing), kiểm thử dựa trên biểu đồ hoạt động (activity diagram testing), và kiểm thử dựa trên biểu đồ tuần tự (sequence diagram testing). Mỗi phương pháp có ưu và nhược điểm riêng, và việc lựa chọn phương pháp phù hợp phụ thuộc vào đặc điểm của hệ thống cần kiểm thử. Kiểm thử dựa trên biểu đồ tuần tự tập trung vào việc kiểm tra sự tương tác giữa các đối tượng trong hệ thống, trong khi kiểm thử dựa trên biểu đồ hoạt động tập trung vào việc kiểm tra luồng điều khiển và các hoạt động trong hệ thống. Máy trạng thái sử dụng các trạng thái để xác định chức năng hệ thống ở trạng thái đã cho, và những quá trình chuyển đổi trạng thái cho phép kiểm tra xem một hệ thống có hoạt động chính xác hay không.

II. Thách Thức Trong Kiểm Thử Tự Động Từ UML và Ràng Buộc OCL

Việc tự động hóa kiểm thử từ biểu đồ UMLràng buộc OCL không phải là một nhiệm vụ dễ dàng. Một trong những thách thức lớn nhất là việc chuyển đổi biểu đồ UMLràng buộc OCL sang các ca kiểm thử có thể thực thi. Điều này đòi hỏi phải có các công cụ và kỹ thuật phù hợp để phân tích biểu đồ UMLràng buộc OCL, và tạo ra các ca kiểm thử tương ứng. Một thách thức khác là việc xử lý các ràng buộc phức tạp trong OCL. Ràng buộc OCL có thể rất phức tạp và khó hiểu, và việc tự động hóa việc kiểm tra các ràng buộc này đòi hỏi phải có các thuật toán và kỹ thuật đặc biệt. Ngoài ra, việc đảm bảo độ bao phủ kiểm thử cũng là một thách thức. Cần phải có các phương pháp để đo lường độ bao phủ kiểm thử và đảm bảo rằng tất cả các khía cạnh quan trọng của hệ thống đều được kiểm tra.

2.1. Khó khăn trong việc chuyển đổi biểu đồ UML sang mã kiểm thử

Việc chuyển đổi biểu đồ UML sang mã kiểm thử đòi hỏi một quá trình phức tạp và tinh vi. Các biểu đồ UML thường chứa thông tin trừu tượng, và việc chuyển đổi thông tin này sang mã kiểm thử cụ thể đòi hỏi phải có các quy tắc và kỹ thuật đặc biệt. Quá trình này có thể trở nên phức tạp hơn khi biểu đồ UML chứa các yếu tố phức tạp như các phân đoạn lặp và rẽ nhánh. Để giải quyết vấn đề này, cần phải có các công cụ và kỹ thuật tự động để phân tích biểu đồ UML và tạo ra mã kiểm thử tương ứng.

2.2. Xử lý ràng buộc OCL phức tạp trong tự động hóa kiểm thử

Ràng buộc OCL có thể rất phức tạp và khó hiểu, và việc tự động hóa việc kiểm tra các ràng buộc này đòi hỏi phải có các thuật toán và kỹ thuật đặc biệt. Các ràng buộc OCL có thể chứa các biểu thức logic phức tạp, các phép toán số học, và các truy vấn dữ liệu. Để xử lý các ràng buộc này, cần phải có các công cụ và kỹ thuật để phân tích ràng buộc OCL, tạo ra các ca kiểm thử tương ứng, và thực thi các ca kiểm thử này một cách hiệu quả. Các công cụ này có thể sử dụng các kỹ thuật như giải quyết ràng buộc (constraint solving) và suy luận logic (logical reasoning) để xác định xem một ràng buộc OCL có được thỏa mãn hay không.

2.3. Đảm bảo độ bao phủ kiểm thử đầy đủ từ biểu đồ UML

Đảm bảo độ bao phủ kiểm thử đầy đủ là một thách thức quan trọng trong tự động hóa kiểm thử từ biểu đồ UML. Độ bao phủ kiểm thử đo lường mức độ mà các ca kiểm thử đã kiểm tra các khía cạnh khác nhau của hệ thống. Để đảm bảo độ bao phủ kiểm thử đầy đủ, cần phải có các phương pháp để xác định các yếu tố quan trọng của hệ thống và tạo ra các ca kiểm thử để kiểm tra các yếu tố này. Các phương pháp này có thể bao gồm việc phân tích biểu đồ UML để xác định các trạng thái, các chuyển tiếp, và các hoạt động quan trọng, và tạo ra các ca kiểm thử để kiểm tra các yếu tố này.

III. Phương Pháp Sinh Đồ Thị Dòng Điều Khiển Từ Biểu Đồ UML

Biểu đồ tuần tự biểu diễn thiết kế theo trình tự thời gian. Biến đổi biểu đồ tuần tự sang đồ thị dòng điều khiển là một công việc khó khăn vì chúng không tuân theo một qui luật nào cả. Để làm được điều này chúng ta phải liệt kê tất cả các thành phần, khối toán tử bên trong biểu đồ tuần tự và dùng thuật toán tương ứng biến đổi cho từng toán tử và thành phần đó. Thuật toán này không những phải hoạt động đúng mà còn phải đảm bảo tính đúng đắn khi các thành phần và toán tử lồng ghép vào nhau trong thiết kế.

3.1. Thuật toán biến đổi biểu đồ UML sang đồ thị dòng điều khiển

Thuật toán biến đổi biểu đồ UML sang đồ thị dòng điều khiển bao gồm các bước sau: Phân tích biểu đồ UML để xác định các trạng thái, các chuyển tiếp, và các hoạt động. Tạo ra một đồ thị dòng điều khiển tương ứng với biểu đồ UML, trong đó mỗi trạng thái, chuyển tiếp, và hoạt động trong biểu đồ UML được biểu diễn bằng một nút trong đồ thị dòng điều khiển. Kết nối các nút trong đồ thị dòng điều khiển để biểu diễn luồng điều khiển trong hệ thống. Thuật toán này có thể được thực hiện tự động bằng cách sử dụng các công cụ và kỹ thuật phân tích biểu đồ UML.

3.2. Xây dựng đồ thị dòng điều khiển từ biểu đồ tuần tự UML

Việc xây dựng đồ thị dòng điều khiển từ biểu đồ tuần tự UML yêu cầu việc xác định các yếu tố quan trọng trong biểu đồ tuần tự, bao gồm các đối tượng, các thông điệp, và các phân đoạn tương tác. Các đối tượng trong biểu đồ tuần tự được biểu diễn bằng các nút trong đồ thị dòng điều khiển, và các thông điệp được biểu diễn bằng các cạnh giữa các nút. Các phân đoạn tương tác được biểu diễn bằng các cấu trúc điều khiển trong đồ thị dòng điều khiển, chẳng hạn như các phân đoạn rẽ nhánh và lặp.

3.3. Các Loại Nút và Cạnh Trong Đồ Thị Dòng Điều Khiển

Các loại nút trong đồ thị dòng điều khiển bao gồm: 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. Nút quyết định (DC – Decision node): là nút biểu thị cho một hàm điều kiện. 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ị.

IV. Phương Pháp Sinh Ca Kiểm Thử Tự Động Từ Đồ Thị CFG

Đồ thị dòng điều khiển được sinh ra từ biểu đồ tuần tự đưa ta trở về bài toán quen thuộc trong kiểm thử hộp trắng. Có nhiều phƣơng pháp sinh luồng kiểm thử có thể đƣợc áp dụng nhƣ: thuật toán tìm theo chiều sâu, thuật toán tìm theo chiều rộng. Xét về mặt giải thuật, cả hai thuật toán duyệt theo chiều rộng và thuật toán duyệt theo chiều sâu đều có thể đƣợc sử dụng. Tuy nhiên, với mong muốn sinh lần lƣợt các ca kiểm thử tƣơng ứng, tức duyệt lần lƣợt từng đƣờng đi từ điểm bắt đầu tới điểm kết thúc thì thuật toán duyệt theo chiều sâu là phù hợp hơn. Vì vậy, trong bài nghiên cứu này tôi sử dụng giải thuật thuật toán duyệt theo chiều sâu để duyệt đồ thị CFG và sinh ca kiểm thử.

4.1. Thuật Toán Duyệt Đồ Thị CFG Theo Chiều Sâu DFS

Thuật toán duyệt theo chiều sâu là thuật toán mà quá trình tìm kiếm được phát triển từ đỉnh con đầu tiên của nút đang tìm kiếm cho tới khi gặp được đỉnh cần tìm hoặc tới một nút không có con. Khi đó giải thuật quay lui về đỉnh vừa mới tìm kiếm ở bước trước và tiếp tục tìm kiếm cho tới khi duyệt hết tất cả các đỉnh trong đồ thị.

4.2. Sinh Dữ Liệu Kiểm Thử Từ Ràng Buộc OCL và Biểu Thức

Sau khi có ca kiểm thử sẽ sinh dữ liệu kiểm thử. Quá trình sinh dữ liệu kiểm thử phải đảm bảo ca kiểm thử không vi phạm các ràng buộc OCL trong thiết kế. Các ràng buộc OCL có thể là các điều kiện ràng buộc về giá trị của các thuộc tính, các điều kiện ràng buộc về mối quan hệ giữa các đối tượng, hoặc các điều kiện ràng buộc về luồng điều khiển. Để sinh dữ liệu kiểm thử thỏa mãn các ràng buộc OCL, có thể sử dụng các công cụ giải quyết ràng buộc hoặc các kỹ thuật tìm kiếm ngẫu nhiên.

4.3. Các Độ Đo Kiểm Thử Test Coverage Đánh Giá Mức Độ Bao Phủ

Để đo mức độ bao phủ của các ca kiểm thử, có thể sử dụng các độ đo kiểm thử, chẳng hạn như độ bao phủ câu lệnh (statement coverage), độ bao phủ nhánh (branch coverage), và độ bao phủ đường dẫn (path coverage). Độ bao phủ câu lệnh đo lường mức độ mà các câu lệnh trong hệ thống đã được thực thi bởi các ca kiểm thử. Độ bao phủ nhánh đo lường mức độ mà các nhánh trong luồng điều khiển đã được thực thi bởi các ca kiểm thử. Độ bao phủ đường dẫn đo lường mức độ mà các đường dẫn trong luồng điều khiển đã được thực thi bởi các ca kiểm thử. Tuỳ từng mục đích và yêu cầu sẽ có các độ đo tương ứng.

V. Ứng Dụng Thực Tế Và Kết Quả Nghiên Cứu Kiểm Thử UML OCL

Để kiểm nghiệm mức độ khả thi của phƣơng pháp, một công cụ hỗ trợ đã đƣợc cài đặt và thử nghiệm với một số ví dụ đơn giản nhằm minh chứng cho tính đúng đắn và hiệu quả của phƣơng pháp trên. Kết quả thực nghiệm cho thấy hiệu quả của các ca kiểm thử cũng là khả quan để áp dụng cho các công ty phát triển phần mềm.

5.1. Công Cụ Hỗ Trợ Kiểm Thử Tự Động Từ Biểu Đồ UML

Việc áp dụng phương pháp kiểm thử tự động từ biểu đồ UML đòi hỏi phải có các công cụ hỗ trợ để phân tích biểu đồ UML, tạo ra các ca kiểm thử, và thực thi các ca kiểm thử. Có nhiều công cụ hỗ trợ kiểm thử tự động từ biểu đồ UML có sẵn trên thị trường, cả mã nguồn mở và thương mại. Các công cụ này có thể cung cấp các chức năng như phân tích biểu đồ UML, tạo ca kiểm thử tự động, thực thi ca kiểm thử, và tạo báo cáo kiểm thử.

5.2. Các Ví Dụ Thực Tế Về Kiểm Thử Tự Động UML và OCL

Có nhiều ví dụ thực tế về kiểm thử tự động UML và OCL trong các lĩnh vực khác nhau, chẳng hạn như phát triển phần mềm nhúng, phát triển phần mềm doanh nghiệp, và phát triển ứng dụng web. Trong các dự án phát triển phần mềm nhúng, kiểm thử tự động UML và OCL có thể được sử dụng để kiểm tra tính đúng đắn của các hệ thống điều khiển và các hệ thống thời gian thực. Trong các dự án phát triển phần mềm doanh nghiệp, kiểm thử tự động UML và OCL có thể được sử dụng để kiểm tra tính đúng đắn của các quy trình nghiệp vụ và các hệ thống quản lý dữ liệu. Trong các dự án phát triển ứng dụng web, kiểm thử tự động UML và OCL có thể được sử dụng để kiểm tra tính đúng đắn của giao diện người dùng và các chức năng của ứng dụng.

5.3. Đánh Giá Hiệu Quả Của Phương Pháp Kiểm Thử Đề Xuất

Để đánh giá hiệu quả của phương pháp kiểm thử đề xuất, cần phải thực hiện các thử nghiệm thực tế trên các dự án phần mềm khác nhau và so sánh kết quả với các phương pháp kiểm thử truyền thống. Các tiêu chí đánh giá có thể bao gồm độ bao phủ kiểm thử, số lượng lỗi được phát hiện, và chi phí kiểm thử.

VI. Kết Luận Và Hướng Phát Triển Kiểm Thử Tự Động UML OCL

Việc kiểm thử tự động từ biểu đồ UMLràng buộc OCL mang lại nhiều lợi ích, bao gồm giảm thời gian và chi phí kiểm thử, tăng độ bao phủ kiểm thử, và cải thiện chất lượng phần mềm. Tuy nhiên, việc tự động hóa kiểm thử từ biểu đồ UMLràng buộc OCL cũng đối mặt với nhiều thách thức, chẳng hạn như việc chuyển đổi biểu đồ UMLràng buộc OCL sang các ca kiểm thử có thể thực thi, việc xử lý các ràng buộc phức tạp trong OCL, và việc đảm bảo độ bao phủ kiểm thử đầy đủ. Trong tương lai, các nghiên cứu về kiểm thử tự động từ biểu đồ UMLràng buộc OCL sẽ tập trung vào việc giải quyết các thách thức này và phát triển các công cụ và kỹ thuật hiệu quả hơn.

6.1. Tóm tắt những đóng góp và hạn chế của nghiên cứu

Nghiên cứu này đã đóng góp vào lĩnh vực kiểm thử tự động bằng cách đề xuất một phương pháp sinh đồ thị dòng điều khiển từ biểu đồ UML và sử dụng thuật toán duyệt đồ thị theo chiều sâu để sinh ca kiểm thử. Nghiên cứu cũng đã chỉ ra các thách thức trong việc tự động hóa kiểm thử từ biểu đồ UML và ràng buộc OCL, và đề xuất các hướng nghiên cứu trong tương lai. Tuy nhiên, nghiên cứu này cũng có một số hạn chế, chẳng hạn như việc chưa đánh giá hiệu quả của phương pháp đề xuất trên các dự án phần mềm thực tế.

6.2. Các Hướng Nghiên Cứu Mở Rộng và Phát Triển Trong Tương Lai

Các hướng nghiên cứu mở rộng và phát triển trong tương lai có thể bao gồm: Phát triển các công cụ và kỹ thuật tự động để chuyển đổi biểu đồ UML và ràng buộc OCL sang các ca kiểm thử có thể thực thi. Phát triển các thuật toán và kỹ thuật để xử lý các ràng buộc phức tạp trong OCL. Phát triển các phương pháp để đo lường và đảm bảo độ bao phủ kiểm thử đầy đủ. Thực hiện các thử nghiệm thực tế trên các dự án phần mềm khác nhau để đánh giá hiệu quả của các phương pháp kiểm thử tự động từ biểu đồ UML và ràng buộc OCL.

6.3. Tầm Quan Trọng Của Nghiên Cứu Trong Phát Triển Phần Mềm

Nghiên cứu về kiểm thử tự động từ biểu đồ UML và ràng buộc OCL có tầm quan trọng lớn trong phát triển phần mềm, vì nó giúp giảm chi phí và thời gian kiểm thử, tăng độ bao phủ kiểm thử, và cải thiện chất lượng phần mềm. Các công cụ và kỹ thuật kiểm thử tự động có thể được sử dụng để kiểm tra tính đúng đắn của các hệ thống phần mềm phức tạp, phát hiện các lỗi tiềm ẩn, và đảm bảo rằng phần mềm đáp ứng các yêu cầu của người dùng.

24/09/2025

Trích đoạn nội dung tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN HÒA 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 LUẬN VĂN THẠC SĨ KỸ THUẬT PHẦN MỀM HÀ NỘI – 2016 TIEU LUAN MOI download : skknchat@gmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN HÒA 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 Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ KỸ THUẬT PHẦN MỀM CÁN BỘ HƢỚNG DẪN KHOA HỌC: PGS. PHẠM NGỌC HÙNG HÀ NỘI – 2016 TIEU LUAN MOI download : skknchat@gmail.com VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING TECHNOLOGY NGUYEN VAN HOA A METHOD AND TOOL SUPPORTING FOR AUTOMATED TESTING FROM UML SEQUENCE DIAGRAMS, CLASS DIAGRAMS AND OCL CONSTRAINS THE MS. THESIS INFORMATION TECHNOLOGY Supervisor: Assoc., PHAM NGOC HUNG, PhD HÀ NỘI – 2016 TIEU LUAN MOI download : skknchat@gmail.com i LỜI CẢM ƠN Đầu tiên, tôi xin gửi lời cảm ơn chân thành và sâu sắc tới thầy Phạm Ngọc Hùng – Ngƣời đã trực tiếp hƣớng dẫn nhiệt tình, giúp đỡ và động viên tôi rất nhiều, cho tôi có cơ hội đƣợc tiếp xúc với các tài liệu tham khảo quý giá, góp ý cho tôi những lời khuyên chân thành trong quá trình nghiên cứu để hoàn thành đề tài này. Tiếp theo tôi xin gửi lời cảm ơn đến các thầy cô giảng viên Trƣờng Đại học Công Nghệ - Đại học Quốc Gia Hà Nội – những ngƣời đã tận tâm truyền đạt những kiến thức quý báu làm nền tảng cho tôi suốt 2 năm học.

Cuối cùng, tôi xin gửi lời biết ơn sâu sắc tới gia đình vì đã luôn ở bên cạnh tôi, mang lại cho tôi nguồn động viên tinh thần to lớn và tạo mọi điều kiện thuận lợi cho tôi trong quá trình học tập và hoàn thành luận văn này. Với luận văn này tôi rất mong nhận đƣợc ý kiến đóng góp từ Thầy, Cô giáo và các bạn quan tâm để hoàn thiện và phát triển nhiều hơn về các phƣơng pháp mới trong kiểm thử phần mềm. Xin trân trọng cảm ơn! Hà Nội, ngày 10 tháng 10 năm 2016 Học viên Nguyễn Văn Hòa TIEU LUAN MOI download : skknchat@gmail.com ii TÓM TẮT Luận văn này trình bày một phƣơng pháp nghiên cứu tự động hóa quá trình kiểm thử dự án phần mềm từ biểu đồ tuần tự UML 2. Hƣớng nghiên cứu dựa trên lý thuyết kiểm thử dựa trên mô hình.

Mục tiêu đề ra là tự động hóa quá trình kiểm thử, nâng cao hiệu quả kiểm thử, tiết kiệm chi phí và thời gian phát triển dự án. Phƣơng pháp đƣợc đề xuất với nội dung chính nhƣ sau. Đầu vào là biểu đồ tuần tự UML 2.0 lƣu giữ dƣới dạng tệp xmi. Chƣơng trình kiểm thử biến đổi tệp xmi bằng cách bóc tách các thông điệp, toán tử và các ràng buộc đƣợc đƣa vào trong thiết kế, từ đó vẽ đồ thị dòng điều khiển tƣơng ứng.

Từ đồ thị dòng điều khiển sử dụng thuật toán dò tìm, thuật toán sinh ca kiểm thử cho các toán tử song song có các điểm chia sẻ dữ liệu tìm ra các đƣờng đi từ điểm bắt đầu cho tới điểm kết thúc gọi là các đƣờng kiểm thử. Tập các đƣờng kiểm thử đƣợc chia tƣơng ứng thành 3 cấp độ kiểm thử khác nhau. Các ràng buộc trên mỗi đƣờng đi đƣợc thu thập và giải lấy kết quả dựa trên công cụ SMT solver kết hợp phƣơng pháp sinh ngẫu nhiên. Kết quả thu đƣợc sau khi giải hệ chính là đầu vào cho các ca kiểm thử tƣơng ứng.

Cuối cùng trích xuất ra tệp excel là các ca kiểm thử theo từng độ bao phủ dùng cho kiểm thử thiết kế. Để kiểm nghiệm mức độ khả thi của phƣơng pháp, một công cụ hỗ trợ đã đƣợc cài đặt và thử nghiệm với một số ví dụ đơn giản nhằm minh chứng cho tính đúng đắn và hiệu quả của phƣơng pháp trên. Kết quả thực nghiệm cho thấy hiệu quả của các ca kiểm thử cũng là khả quan để áp dụng cho các công ty phát triển phần mềm. Từ khóa: Kiểm thử dựa trên mô hình, kiểm thử tự động, biểu đồ tuần tự, đồ thị dòng điều khiển, kiểm thử luồng song song, kiểm thử có chia sẻ dữ liệu luồng song song.

TIEU LUAN MOI download : skknchat@gmail.com iii ABSTRACT The content of this thesis is research and propose a method to generate a set of test cases from the UML 2. Based on model-based testing in order to automate the testing process, increase effectiveness, reduce cost and time of testing. The method follows the following steps. At first, in order to have the input model for testing, it analyzes and divides the input diagram into fragments.

These fragments can be Sequential or nested based on their relationship. After that, it generates the corresponding control flow graph for the input Sequence diagram. The final control flow graph is analyzed to generate a set of testing paths. Symbolic Execution (SE) technique is used to create reStrictions associated with that set of testing paths.

Finally, the method uses SMT solver to solve the set of reStrictions to find solution and then to generate a set of test cases. A tool is also implemented and tested with some simple examples in order to show the correctness and effectiveness of the method. The experimental results give us the potential application of the tool in automation testing in companies. Keywords: Model base testing, automated testing, Sequence diagram, control flow testing, Parallel threading testing, threading testing with data shared.

TIEU LUAN MOI download : skknchat@gmail.com iv LỜI CAM ĐOAN Tôi xin cam đoan rằng những nghiên cứu về sinh tự động bộ kiểm thử từ biểu đồ tuần tự đƣợc trình bày trong luận văn này dƣới sự hƣớng dẫn của thầy Phạm Ngọc Hùng là của tôi. Những gì tôi viết ra không sao chép từ các tài liệu, không sử dụng các kết quả của ngƣời khác mà không trích dẫn cụ thể. Tôi xin cam đoan công cụ kiểm thử tự động tôi trình bày trong luận văn là do tôi tự phát triển, không sao chép mã nguồn của ngƣời khác. Nếu sai tôi hoàn toàn chịu trách nhiệm theo quy định của Trƣờng Đại học Công Nghệ - Đại học Quốc Gia Hà Nội.

Hà nội, ngày 10 tháng 10 năm 2016 Học viên: Nguyễn Văn Hòa TIEU LUAN MOI download : skknchat@gmail.com v MỤC LỤC LỜI CẢM ƠN.iii LỜI CAM ĐOAN. iv MỤC LỤC. v DANH SÁCH BẢNG BIỂU. vii DANH SÁCH HÌNH VẼ.viii BẢNG THUẬT NGỮ VIẾT TẮT.

x Chƣơng 1: GIỚI THIỆU. 1 Chƣơng 2: CÁC KHÁI NIỆM VÀ TỔNG QUAN KIỂM THỬ DỰA TRÊN MÔ HÌNH .1 Tổng quan kiểm thử dựa trên mô hình. Khái niệm kiểm thử dựa trên mô hình. Quy trình chung của kiểm thử dựa trên mô hình.

Phƣơng pháp đặc tả mô hình bằng máy trạng thái UML. Thuận lợi và khó khăn của kiểm thử tự động dựa trên mô hình .2 Biểu đồ tuần tự và các khối phân đoạn trong UML. Biểu đồ tuần tự. Các phân đoạn sử dụng trong biểu đồ tuần tự .3 Đồ thị dòng điều khiển.

17 Chƣơng 3: PHƢƠNG PHÁP SINH ĐỒ THỊ DÒNG ĐIỀU KHIỂN TỪ BIỂU ĐỒ TUẦN TỰ.1 Điều kiện ràng buộc trong thiết kế .2 Thuật toán biến đổi biểu đồ tuần tự sang đồ thị dòng điều khiển. Thuật toán sinh đồ thị dòng điều khiển. Đồ thị dòng điều khiển tƣơng ứng với các phân đoạn. 29 TIEU LUAN MOI download : skknchat@gmail.3 Kỹ thuật sinh kịch bản kiểm thử.

Kịch bản kiểm thử cho các toán từ thông thƣờng. Kịch bản kiểm thử cho các phân đoạn song song (Par, Seq) .4 Xây dựng hệ ràng buộc .5 Giải hệ sử dụng SMT-Solver .6 Các nghiên cứu liên quan. 46 Chƣơng 4: CÔNG CỤ VÀ THỰC NGHIỆM .1 Giới thiệu công cụ và môi trƣờng thực nghiệm .3 Ý nghĩa thực nghiệm. 57 Chƣơng 5: KẾT LUẬN.

59 TÀI LIỆU THAM KHẢO. 61 TIEU LUAN MOI download : skknchat@gmail.com vii DANH SÁCH BẢNG BIỂU ảng 2.1 Ca kiểm thử độ bao phủ yếu .2 Ca kiểm thử độ bao phủ trung bình.3 Ca kiểm thử độ bao phủ mạnh .1 Các khóa cơ bản và ý nghĩa trong tệp xmi .2 Dữ liệu thu thập tƣơng ứng theo các nốt đƣợc nối với nhau .1 Môi trƣờng thử nghiệm công cụ sinh ca kiểm thử từ thiết kế. 49 TIEU LUAN MOI download : skknchat@gmail.com viii DANH SÁCH HÌNH VẼ Hình 2.1 Qui trình kiểm thử dựa trên mô hình.2 Phân đoạn Alt.3 Phân đoạn Opt.4 Phân đoạn Loop vô hạn.5 Phân đoạn Loop với cận trên bằng cận dƣới bằng 10.6 Phân đoạn Loop với cận trên bằng 5, cận dƣới bằng 10.7 Phân đoạn Break.8 Phân đoạn Par.9 Phân đoạn Seq.10 Phân đoạn Strict.11 Phân đoạn Ignore.12 Phân đoạn Consider.13 Phân đoạn Neg.14 Phân đoạn Assert.15 Phân đoạn Critical.16 Đồ thị dòng điều khiển tƣơng ứng của phân đoạn Par.1 Thiết kế tên thông điệp.2 Thiết kế ràng buộc.3 Khai báo biến trong ràng buộc tƣơng ứng cho các lớp.4 Xóa triệt để các đối tƣợng không dùng nữa.5 Đồ thị CFG tƣơng ứng cho phân đoạn Alt.6 Đồ thị CFG tƣơng ứng cho phân đoạn Opt.7 Đồ thị CFG tƣơng ứng cho phân đoạn Loop.8 Đồ thị CFG tƣơng ứng cho phân đoạn Break.9 Đồ thị CFG tƣơng ứng cho phân đoạn Par.10 Đồ thị CFG tƣơng ứng cho phân đoạn Seq. 33 TIEU LUAN MOI download : skknchat@gmail.com ix Hình 3.11 Đồ thị CFG tƣơng ứng cho phân đoạn Ignore.12 Đồ thị CFG tƣơng ứng cho phân đoạn Consider.13 Đồ thị CFG tƣơng ứng cho phân đoạn Neg.14 Đồ thị CFG tƣơng ứng cho phân đoạn Assert.15 Đồ thị CFG tƣơng ứng cho phân đoạn Strict.16 Ví dụ cây đồ thị cần duyệt.17 Đồ thị dòng điều khiển.18 Ví dụ về ràng buộc OCL đƣợc khai báo trong thiết kế.19 Mô tả công cụ SMT Solver .1 Cấu trúc công cụ thực nghiệm.2 Đầu vào công cụ của ví dụ 1.3 Đầu ra - đồ thị CFG của ví dụ 1.4 Đồ thị CFG và ca kiểm thử độ bao phủ yếu cho ví dụ 1.5 Ca kiểm thử độ bao phủ yếu cho ví dụ 1.6 Ca kiểm thử độ bao phủ trung bình cho ví dụ 1.7 Dữ liệu kiểm thử sau khi xuất ra tệp MS Excel .8 Đầu vào của ví dụ 2.9 Đầu ra đồ thị CFG cho ví dụ 2.10 Ca kiểm thử độ bao phủ yếu cho ví dụ 2.11 Ca kiểm thử độ bao phủ trung bình cho ví dụ 2.12 Ca kiểm thử độ bao phủ mạnh cho ví dụ 2.13 Đƣờng đi tƣơng ứng của một ca kiểm thử độ bao phủ mạnh của ví dụ 2.

57 TIEU LUAN MOI download : skknchat@gmail.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ