Luận án TS: Kỹ thuật sinh dữ liệu kiểm thử tự động từ biểu đồ UML
Luận án TS máy tính nghiên cứu kỹ thuật sinh tự động dữ liệu kiểm thử. Áp dụng biểu đồ UML để nâng cao chất lượng và hiệu quả kiểm thử phần mềm.
Năm xuất bản
Số trang
175
Thời gian đọc
27 phút
Lượt xem
1
Lượt tải
0
Phí lưu trữ
50 Point
Tổng quan nhanh
- Chủ đề:
- Tối ưu hóa kiểm thử phần mềm với sinh dữ liệu tự động
- Số trang:
- 175 trang
- Trường:
- Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội
- Chuyên ngành:
- Công nghệ thông tin
- Tác giả:
- Luan An
- Năm:
- 2018
Tóm tắt nội dung luận án
I.Tối ưu hóa kiểm thử phần mềm với sinh dữ liệu tự động
Kiểm thử phần mềm là giai đoạn quan trọng, đảm bảo chất lượng hệ thống. Sinh dữ liệu kiểm thử thủ công tốn thời gian, dễ sai sót. Kỹ thuật sinh dữ liệu kiểm thử tự động giải quyết vấn đề này. Phương pháp tạo ra dữ liệu đầu vào cần thiết, mục tiêu kiểm thử các chức năng, luồng nghiệp vụ. Tự động hóa kiểm thử giúp tăng hiệu quả, giảm chi phí kiểm thử, nâng cao độ tin cậy của phần mềm. Tài liệu này khám phá các kỹ thuật đó, tập trung vào việc tạo dữ liệu kiểm thử từ biểu đồ UML. Đây là một bước tiến quan trọng trong tự động hóa kiểm thử. Giúp hệ thống đạt chất lượng cao nhất.
1.1. Giới thiệu về sinh dữ liệu kiểm thử tự động
Sinh dữ liệu kiểm thử tự động là quá trình tạo ra các bộ dữ liệu đầu vào. Chúng được sử dụng để kiểm tra phần mềm mà không cần sự can thiệp thủ công. Kỹ thuật này giúp phát hiện lỗi sớm. Đảm bảo hệ thống hoạt động đúng như yêu cầu. Việc sinh dữ liệu kiểm thử từ mô hình như biểu đồ UML đang trở nên phổ biến. Nó tận dụng thông tin thiết kế để tạo ra các kịch bản kiểm thử toàn diện. Phương pháp này đóng vai trò then chốt trong kiểm thử phần mềm hiện đại. Góp phần vào sự phát triển nhanh chóng của các dự án.
1.2. Lợi ích của tự động hóa sinh dữ liệu kiểm thử
Tự động hóa sinh dữ liệu kiểm thử mang lại nhiều lợi ích. Tăng tốc độ phát triển dự án. Cải thiện đáng kể chất lượng sản phẩm. Giúp phát hiện lỗi sớm hơn, đảm bảo các kịch bản kiểm thử được bao phủ đầy đủ. Phương pháp loại bỏ sự lặp lại, nhàm chán của công việc thủ công. Giảm thiểu lỗi do con người gây ra. Tự động hóa hỗ trợ thực hiện kiểm thử hộp đen hiệu quả. Đặc biệt hữu ích trong các hệ thống phức tạp. Công cụ sinh dữ liệu kiểm thử giảm tải công việc cho kiểm thử viên. Cho phép họ tập trung vào các vấn đề phức tạp hơn. Đảm bảo nguồn lực được tối ưu.
II.Kiểm thử dựa mô hình MBT và vai trò biểu đồ UML
Kiểm thử dựa mô hình (MBT) đang cách mạng hóa cách tiếp cận kiểm thử phần mềm. Phương pháp này sử dụng mô hình hệ thống để sinh ra các ca kiểm thử tự động. Mô hình hóa phần mềm giúp hiểu rõ hành vi hệ thống, giảm công sức thiết kế ca kiểm thử, cải thiện độ bao phủ kiểm thử. Đặc biệt hiệu quả khi hệ thống thay đổi liên tục. Mô hình thường được biểu diễn bằng biểu đồ UML, đây là ngôn ngữ mô hình hóa thống nhất. MBT tạo điều kiện cho tự động hóa kiểm thử từ giai đoạn đầu phát triển. Quá trình này bắt đầu từ việc phân tích yêu cầu một cách kỹ lưỡng. MBT tối ưu hóa quy trình kiểm thử.
2.1. Khái niệm kiểm thử dựa mô hình MBT
Kiểm thử dựa mô hình (MBT) là phương pháp tạo các ca kiểm thử từ một mô hình trừu tượng. Mô hình này mô tả hành vi mong muốn của hệ thống. Thay vì viết ca kiểm thử thủ công, MBT sinh ca kiểm thử tự động. Điều này giúp giảm đáng kể thời gian và công sức. MBT tăng cường độ bao phủ kiểm thử, đảm bảo các phần quan trọng của hệ thống được kiểm tra. Đây là một phần quan trọng của chiến lược tự động hóa kiểm thử hiện đại. MBT giúp phát hiện lỗi sớm hơn trong chu trình phát triển. Tăng cường chất lượng phần mềm tổng thể.
2.2. Biểu đồ UML và ràng buộc OCL trong MBT
Biểu đồ UML cung cấp các công cụ mạnh mẽ để mô tả cấu trúc và hành vi của hệ thống. Biểu đồ tuân tự UML đặc biệt hữu ích cho sinh dữ liệu kiểm thử tự động. Chúng mô tả luồng tương tác giữa các đối tượng. Ràng buộc OCL (Object Constraint Language) bổ sung thông tin chi tiết. OCL định nghĩa các điều kiện và bất biến cho mô hình UML. Các ràng buộc này là đầu vào quan trọng giúp tạo dữ liệu kiểm thử chính xác. Dữ liệu kiểm thử phải thỏa mãn các điều kiện này. OCL giúp kiểm thử viên xác định phạm vi kiểm thử. Đảm bảo dữ liệu tạo ra hợp lệ và có ý nghĩa.
2.3. Chuyển đổi mô hình UML thành đồ thị điều khiển
Một bước thiết yếu trong MBT là chuyển đổi mô hình. Biểu đồ UML được chuyển thành các đồ thị điều khiển (Control Flow Graph - CFG). CFG biểu diễn tất cả các đường dẫn thực thi có thể trong hệ thống. Các đường dẫn này có thể được kiểm thử một cách có hệ thống. Việc chuyển đổi này tạo cơ sở cho thuật toán sinh dữ liệu kiểm thử. Các thuật toán khám phá các đường dẫn này. Sau đó tạo ra các kịch bản kiểm thử khác nhau. Đây là nền tảng để tạo dữ liệu kiểm thử từ mô hình. Quá trình này hỗ trợ việc sinh kịch bản kiểm thử tự động và hiệu quả.
III.Kỹ thuật sinh dữ liệu kiểm thử cho các kiểu dữ liệu
Việc sinh dữ liệu kiểm thử tự động đòi hỏi xử lý nhiều kiểu dữ liệu khác nhau. Bao gồm kiểu số, kiểu cấu trúc động, kiểu chuỗi, và các cấu trúc vòng lặp. Mỗi kiểu dữ liệu đặt ra những thách thức riêng biệt. Các kỹ thuật cần được phát triển để tạo ra dữ liệu hợp lệ và có khả năng gây lỗi. Điều này đảm bảo kiểm thử phần mềm toàn diện. Phương pháp đề xuất trong tài liệu tập trung vào việc chuyển đổi biểu đồ tuân tự UML. Biểu đồ được biến đổi thành đồ thị điều khiển. Sau đó sinh dữ liệu kiểm thử dựa trên các đường dẫn. Mục tiêu là bao phủ tối đa các trường hợp kiểm thử.
3.1. Sinh dữ liệu cho kiểu số và cấu trúc động
Đối với kiểu dữ liệu số, cần tạo các giá trị biên. Bao gồm giá trị dương, âm, không, và giá trị rất lớn/nhỏ. Việc này đảm bảo kiểm thử các trường hợp đặc biệt. Các cấu trúc dữ liệu động cũng cần được xem xét. Ví dụ: danh sách, cây, đồ thị. Dữ liệu phải đảm bảo tính hợp lệ theo ràng buộc. Đồng thời tạo ra các trường hợp kiểm thử đặc biệt. Phương pháp đề xuất chuyển đổi biểu đồ tuân tự UML thành CFG. Sau đó sinh dữ liệu kiểm thử cho các đường dẫn. Điều này giúp kiểm thử hệ thống con. Đảm bảo các trường hợp dữ liệu được bao phủ tốt.
3.2. Phương pháp chuyển đổi biểu đồ tuân tự UML
Tài liệu trình bày phương pháp chuyển đổi biểu đồ tuân tự UML thành đồ thị điều khiển (CFG). CFG này chứa thông tin về luồng điều khiển và các ràng buộc dữ liệu. Quá trình này bao gồm phân tích các toán tử. Ví dụ: toán tử tuần tự yếu (Weak Sequencing Fragment - Seq) và toán tử song song (Parallel Fragment - Par). Các toán tử này ảnh hưởng đến cấu trúc của CFG. Từ CFG, các đường dẫn kiểm thử được trích xuất. Sau đó, các hàm vị từ (predicate functions) được tạo. Hàm vị từ này chứa các ràng buộc OCL. Bộ giải ràng buộc sẽ giải các hàm vị từ để sinh dữ liệu kiểm thử. Điều này là cốt lõi của việc tạo dữ liệu kiểm thử từ mô hình.
IV.Sinh dữ liệu kiểm thử chuyên sâu cho vòng lặp chuỗi
Việc sinh dữ liệu kiểm thử cho các cấu trúc phức tạp như vòng lặp và chuỗi đòi hỏi kỹ thuật chuyên sâu. Cấu trúc vòng lặp là một thách thức lớn, cần bao phủ nhiều trường hợp để đảm bảo tính đúng đắn. Dữ liệu chuỗi cũng đặt ra các yêu cầu kiểm thử riêng biệt với các ràng buộc về độ dài và định dạng. Phương pháp tiếp cận cần phải linh hoạt để giải quyết những ràng buộc này một cách hiệu quả. Mục tiêu là tạo ra dữ liệu kiểm thử đa dạng, có khả năng phát hiện lỗi trong các kịch bản đặc biệt. Điều này giúp nâng cao chất lượng kiểm thử phần mềm đáng kể.
4.1. Sinh dữ liệu kiểm thử cho cấu trúc vòng lặp
Cấu trúc vòng lặp là một thách thức lớn trong kiểm thử phần mềm. Việc sinh dữ liệu kiểm thử cho vòng lặp cần bao phủ nhiều trường hợp quan trọng. Bao gồm vòng lặp không chạy lần nào, vòng lặp chạy một lần, và vòng lặp chạy nhiều lần. Cần xét đến các điều kiện thoát của vòng lặp. Các tiêu chuẩn độ bao phủ vòng lặp là rất quan trọng để đảm bảo tính đúng đắn. Phương pháp đề xuất tập trung vào độ bao phủ tương tranh và độ bao phủ vòng lặp. Điều này giúp đảm bảo tính đúng đắn của vòng lặp. Tránh các lỗi liên quan đến lặp vô hạn hoặc xử lý sai các trường hợp biên.
4.2. Giải quyết ràng buộc chuỗi trong sinh dữ liệu
Dữ liệu chuỗi đặt ra các yêu cầu kiểm thử riêng biệt. Ràng buộc chuỗi thường phức tạp, bao gồm độ dài chuỗi, định dạng chuỗi (regex), và các giá trị cụ thể. Kỹ thuật sinh dữ liệu kiểm thử phải giải quyết các ràng buộc này một cách hiệu quả. Cần sử dụng bộ giải ràng buộc (constraint solver) chuyên biệt. Bộ giải này phân tích các biểu thức chuỗi OCL. Sau đó tạo ra các chuỗi thỏa mãn các điều kiện. Điều này đảm bảo dữ liệu kiểm thử đa dạng. Bao phủ các trường hợp lỗi tiềm ẩn. Việc tự động hóa sinh dữ liệu cho chuỗi giúp kiểm thử hiệu quả các biểu mẫu, trường nhập liệu. Giảm thiểu lỗi bảo mật liên quan đến dữ liệu đầu vào.
V.Tự động hóa kiểm thử Độ bao phủ và phân tích đột biến
Tự động hóa kiểm thử không chỉ là việc thực hiện các ca kiểm thử nhanh hơn. Còn là đảm bảo rằng các ca kiểm thử đó có chất lượng cao và hiệu quả. Độ bao phủ kiểm thử là một chỉ số quan trọng. Nó cho biết mức độ các phần của hệ thống đã được kiểm tra. Phân tích đột biến là một kỹ thuật nâng cao. Kỹ thuật này đánh giá chất lượng của chính các ca kiểm thử. Hai khái niệm này kết hợp giúp tối ưu hóa quá trình kiểm thử. Đảm bảo rằng các nỗ lực tự động hóa mang lại giá trị thực sự. Góp phần vào một quy trình kiểm thử phần mềm mạnh mẽ.
5.1. Tiêu chuẩn độ bao phủ trong kiểm thử
Độ bao phủ là một chỉ số quan trọng trong tự động hóa kiểm thử. Cho biết mức độ các phần của mã nguồn hoặc mô hình đã được kiểm thử. Các tiêu chuẩn độ bao phủ khác nhau được sử dụng để đo lường. Ví dụ: độ bao phủ câu lệnh, độ bao phủ nhánh, độ bao phủ đường dẫn. Trong kiểm thử dựa mô hình (MBT), độ bao phủ tương tranh là một trọng tâm. Độ bao phủ tương tranh giúp đánh giá các tương tác đồng thời. Đảm bảo rằng tất cả các kịch bản quan trọng đều được kiểm thử. Việc này là nền tảng của tự động hóa kiểm thử hiệu quả. Đảm bảo chất lượng hệ thống.
5.2. Phân tích đột biến Mutation Analysis
Phân tích đột biến (Mutation Analysis) là một kỹ thuật mạnh mẽ. Được sử dụng để đánh giá chất lượng của các ca kiểm thử. Kỹ thuật này tạo ra các "đột biến" nhỏ trong mã nguồn hoặc trong mô hình. Sau đó, chạy các ca kiểm thử hiện có. Mục tiêu là phát hiện xem ca kiểm thử có thể "giết chết" các đột biến này không. Nếu ca kiểm thử không phát hiện được đột biến, ca kiểm thử đó yếu hoặc thiếu sót. Phân tích đột biến giúp tăng cường chất lượng bộ ca kiểm thử. Cải thiện hiệu quả của sinh dữ liệu kiểm thử tự động. Đặc biệt hữu ích trong việc đảm bảo độ mạnh của kiểm thử phần mềm.
VI.Công cụ ứng dụng sinh dữ liệu kiểm thử từ UML
Sự phát triển của kỹ thuật sinh dữ liệu kiểm thử tự động từ biểu đồ UML đã dẫn đến nhiều công cụ hỗ trợ. Các công cụ này đóng vai trò quan trọng trong việc chuyển đổi mô hình thiết kế thành các ca kiểm thử và dữ liệu kiểm thử cụ thể. Mặc dù có những tiến bộ, vẫn tồn tại thách thức trong việc xử lý các kiểu dữ liệu và ràng buộc phức tạp. Việc tìm kiếm và áp dụng các công cụ phù hợp là chìa khóa để tối ưu hóa quy trình kiểm thử phần mềm, đặc biệt trong bối cảnh kiểm thử hộp đen. Công cụ giúp đẩy nhanh chu trình phát triển sản phẩm.
6.1. Tổng quan các công cụ sinh dữ liệu hiện có
Hiện nay có nhiều công cụ hỗ trợ sinh dữ liệu kiểm thử. Một số công cụ tích hợp với các môi trường phát triển tích hợp (IDE). Một số khác chuyên biệt cho kiểm thử dựa mô hình (MBT). Các công cụ này thường hỗ trợ biểu đồ UML. Chúng giúp tự động hóa quá trình từ mô hình đến dữ liệu kiểm thử. Tuy nhiên, nhiều công cụ vẫn còn hạn chế. Đặc biệt trong việc xử lý các kiểu dữ liệu phức tạp. Hoặc các ràng buộc OCL phức tạp. Việc đánh giá và lựa chọn công cụ phù hợp là quan trọng. Công cụ phải phù hợp với nhu cầu cụ thể của dự án. Điều này giúp tối ưu hóa quá trình kiểm thử phần mềm.
6.2. Ứng dụng thực tiễn trong kiểm thử hộp đen
Kỹ thuật sinh dữ liệu kiểm thử từ biểu đồ UML có ứng dụng rộng rãi. Đặc biệt trong kiểm thử hộp đen (Black box testing). Kiểm thử hộp đen tập trung vào kiểm tra chức năng hệ thống. Không quan tâm đến cấu trúc bên trong mã nguồn. Biểu đồ UML cung cấp một mô tả hành vi cấp cao của hệ thống. Phù hợp cho việc tạo dữ liệu kiểm thử từ góc độ người dùng và yêu cầu nghiệp vụ. Dữ liệu tạo ra giúp kiểm tra các yêu cầu hệ thống một cách hiệu quả. Đảm bảo hệ thống hoạt động đúng như mong đợi. Các kịch bản kiểm thử được sinh tự động. Giúp giảm thời gian và công sức kiểm thử thủ công đáng kể.
Mục lục chi tiết luận án
Tải xuống file đầy đủ để xem toàn bộ nội dung
Tải đầy đủ (175 trang)Nội dung chính
Tổng quan về luận án
Trong kỹ nghệ phần mềm hiện đại, đảm bảo chất lượng và độ tin cậy của hệ thống là một thách thức cốt lõi khi quy mô và độ phức tạp của các ứng dụng không ngừng gia tăng. Luận án tiến sĩ chuyên ngành Khoa học máy tính / Kỹ thuật phần mềm của tác giả Vũ Thị Thảo (Trường Đại học Công nghệ – Đại học Quốc gia Hà Nội, 2018) với đề tài "Các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML" đặt trọng tâm giải quyết bài toán sinh tự động dữ liệu kiểm thử ở giai đoạn thiết kế sớm từ các đặc tả biểu đồ tuần tự UML 2.0 kết hợp ràng buộc OCL (Object Constraint Language) trong biểu đồ lớp. Bối cảnh khoa học của nghiên cứu xuất phát từ thực tiễn sản xuất công nghiệp: "Trong thực tế hơn 50% nỗ lực phát triển dành cho giai đoạn kiểm thử [6] và rất hiếm các sản phẩm phần mềm được sản xuất ra mà không có lỗi." Trong khi đó, các công cụ kiểm thử tự động truyền thống chủ yếu tập trung vào giai đoạn thực thi mã nguồn (code execution) mà chưa tối ưu hóa khâu thiết kế ca kiểm thử (test case design) – yếu tố mang tính quyết định đến khả năng phát hiện lỗi của toàn bộ vòng đời phần mềm.
Khoảng trống nghiên cứu (research gap) then chốt được xác định thông qua phân tích các hạn chế của tài liệu học thuật quốc tế: phần lớn các nghiên cứu kiểm thử dựa trên mô hình (Model-Based Testing – MBT) hiện hữu chỉ hỗ trợ một tập con hạn chế gồm 5 toán tử cơ bản (alt, opt, break, parallel, loop) của biểu đồ tuần tự UML như nghiên cứu của Wang et al. (2015) [72], hoặc áp dụng kỹ thuật tối thiểu hóa hàm số chỉ xử lý được kiểu dữ liệu số cơ bản (Samuel et al., 2008 [97]; Pachauri et al., 2013 [84]; Srivastava et al., 2014 [65]). Các bài toán phức tạp như giải quyết toàn diện 12 toán tử tương tác UML 2.0 có cấu trúc lồng ghép sâu, sinh dữ liệu cho biến cấu trúc động (con trỏ, heap memory), ngăn chặn bùng nổ không gian kịch bản trong các ứng dụng tương tranh (concurrency) gây khóa chết (deadlock) hay đồng bộ luồng, và giải quyết ràng buộc chuỗi ký tự phức tạp (string constraints) hoàn toàn bị bỏ ngỏ hoặc chưa có lời giải thỏa đáng.
Để giải quyết triệt để khoảng trống này, luận án xác lập hệ thống câu hỏi và giả thuyết nghiên cứu cụ thể:
- RQ1: Làm thế nào để chuyển đổi ngữ nghĩa đầy đủ của toàn bộ 12 toán tử tương tác biểu đồ tuần tự UML 2.0 và ràng buộc OCL sang cấu trúc trung gian nhằm sinh kịch bản kiểm thử tối ưu?
- H1: Một đồ thị dòng điều khiển mở rộng (Extended CFG) tích hợp đầy đủ 5 loại nút chức năng có thể biểu diễn chính xác ngữ nghĩa lồng ghép của 12 toán tử UML 2.0 mà không làm mất thông tin ràng buộc.
- RQ2: Cơ chế sinh dữ liệu nào cho phép giải quyết đồng thời các ràng buộc số, cấu trúc dữ liệu động (con trỏ) và chuỗi ký tự mà các bộ giải truyền thống không xử lý được?
- H2: Tích hợp phương pháp giảm miền động (Dynamic Domain Reduction - DDR) với bộ giải SMT mở rộng (Z3-Str) cho phép thỏa mãn các hàm vị từ phức tạp, gia tăng độ đo đột biến (Mutation Score - MS) và độ bao phủ đường dẫn kiểm thử.
- RQ3: Làm sao để kiểm soát bùng nổ số lượng kịch bản kiểm thử trong các hệ thống tương tranh và vòng lặp mà vẫn đảm bảo khả năng phát hiện lỗi khóa chết và đồng bộ?
- H3: Phân cấp tiêu chuẩn bao phủ tương tranh (yếu, trung bình, mạnh) kết hợp phân rã 7 trường hợp biên của vòng lặp sẽ tối thiểu hóa số ca kiểm thử nhưng tối đa hóa độ bao phủ và tỷ lệ diệt đột biến.
Khung lý thuyết của luận án được xây dựng vững chắc trên nền tảng Lý thuyết Thực thi Tượng trưng (Symbolic Execution Theory - Clarke, 1976), Lý thuyết Kiểm thử Đột biến dựa trên Ràng buộc (Constraint-Based Mutation Testing - DeMillo & Offutt, 1991), Lý thuyết Thỏa mãn Ràng buộc Module (Satisfiability Modulo Theories - SMT, De Moura & Bjørner, 2008) và Chuẩn ngữ nghĩa mô hình hóa tương tác OMG UML 2.0 / OCL 2.0. Đóng góp đột phá của luận án mang lại tác động định lượng rõ rệt: nâng cao độ bao phủ đường dẫn đồ thị lên mức tuyệt đối so với kiểm thử ngẫu nhiên, gia tăng điểm đo đột biến MS vượt trội so với các công trình của Wang et al. [72] và Khandai et al. [95], đồng thời rút ngắn đáng kể thời gian và chi phí kiểm thử như thực tiễn quốc tế đã chứng minh: "Trong thực tiễn áp dụng của các công ty IBM và BMW thì kiểm thử dựa trên mô hình luôn luôn dễ tìm lỗi lớn hơn hoặc bằng số lượng lỗi tìm được so với tiến trình thủ công [32]. Trong ứng dụng của Microsoft, số lượng các lỗi dễ tìm được của kiểm thử dựa trên mô hình gấp mười lần [92, 103]." Phạm vi nghiên cứu bao quát từ mô hình hóa hình thức, xây dựng thuật toán, đến hiện thực hóa thành các công cụ phần mềm chuyên dụng và thực nghiệm trên các hệ thống thực tế như máy bán hàng tự động, hệ thống chuyển tiền ngân hàng và ứng dụng web.
Literature Review và Positioning
Tổng quan tài liệu học thuật về sinh tự động dữ liệu kiểm thử cho thấy sự tiến hóa qua ba dòng nghiên cứu chính: kiểm thử dựa trên mã nguồn (code-based testing), kiểm thử dựa trên đặc tả hình thức (formal specification-based testing), và kiểm thử dựa trên mô hình (model-based testing - MBT). Trong dòng kiểm thử cấu trúc mã nguồn, phương pháp thực thi tượng trưng tĩnh của Clarke (1976) [19] mở đầu cho việc tạo lập ràng buộc đường dẫn trên CFG, sau đó được mở rộng bởi Casegen et al. (1993) [80] và Coen-Porisini et al. (2001) [21] để xử lý mảng và bộ nhớ tăng dần. Tuy nhiên, hướng tiếp cận này vấp phải điểm nghẽn nghiêm trọng về bùng nổ đường dẫn và không thể phân tích các cấu trúc con trỏ động hoặc vòng lặp vô hạn ở mức mã nguồn.
Ở hướng tiếp cận động và tìm kiếm tối ưu hóa, Miller et al. (1976) [69], Korel (1990) [34] (với phương pháp chaining dựa trên phân tích phụ thuộc dữ liệu), Ferguson & Korel (1996) [75] (với phương pháp giảm miền động DDR), cùng các kỹ thuật tối ưu hóa metaheuristic của Tracey et al. (1998) [91] và Wegener et al. (2001) [110] đã chuyển bài toán sinh dữ liệu thành bài toán tối ưu hóa số học. Nhằm kết hợp ưu thế của phân tích tĩnh và động, các kỹ thuật kiểm thử lai như DART (Directed Automated Random Testing) của Godefroid et al. (2005) [44] ra đời, kết hợp thực thi cụ thể (concrete) và thực thi tượng trưng (symbolic). Tuy nhiên, các kỹ thuật này đều thực hiện sau khi đã hoàn thành mã nguồn, làm tăng chi phí sửa đổi khi phát hiện lỗi kiến trúc muộn.
Trong trường phái kiểm thử dựa trên mô hình (MBT), các công cụ công nghiệp và học thuật lớn đã định hình bức tranh nghiên cứu quốc tế:
- Spec Explorer của Microsoft (Campbell et al., 2005 [102]): Khai thác mô hình máy trạng thái hữu hạn mở rộng (EFSM) và ngôn ngữ Spec#, kết hợp bộ giải SMT để sinh ca kiểm thử cho môi trường .NET.
- Agedis (Hartman et al., 2002 [52]; Alan et al., 2004 [51]): Dự án thuộc Ủy ban Châu Âu sử dụng biểu đồ lớp, biểu đồ trạng thái và đối tượng UML kết hợp chỉ thị XML.
- UniTesK (Badanitsa et al., 2004 [14]): Sử dụng biểu đồ trạng thái và tiền/hậu điều kiện để kiểm thử cho Java và C/C++.
- Conformiq Qtronic (Huima, 2007 [55]): Sinh ca kiểm thử từ biểu đồ trạng thái UML cho hệ thống nhúng và giao dịch.
MÃ NGUỒN (Code-Based) MÔ HÌNH (Model-Based)
┌───────────────────────────────────┐ ┌──────────────────────────────────┐
│ Phân tích Tĩnh (Clarke 1976) │ │ Biểu đồ trạng thái (FSM/Agedis) │
│ Thực thi Động (Miller 1976) │ │ Biểu đồ hoạt động (Sun et al.) │
│ Kỹ thuật Lai (DART, Korel Chaining│ │ Biểu đồ tuần tự (Wang, Luận án) │
└─────────────────┬─────────────────┘ └────────────────┬─────────────────┘
│ │
└───────────────────┬──────────────────┘
▼
┌─────────────────────────────────────────────────┐
│ KHOẢNG TRỐNG (RESEARCH GAP) ĐƯỢC ĐỊNH VỊ: │
│ 1. Xử lý toàn vẹn 12 toán tử UML 2.0 lồng nhau │
│ 2. Sinh dữ liệu cho biến con trỏ/cấu trúc động │
│ 3. Ngăn bùng nổ kịch bản tương tranh & vòng lặp │
│ 4. Giải ràng buộc chuỗi (SeqString & Z3-Str) │
└─────────────────────────────────────────────────┘
Tranh luận học thuật cốt lõi diễn ra giữa hai quan điểm đối nghịch: Một bên ủng hộ việc sử dụng biểu đồ trạng thái (State Machine Diagram) vì tính trực quan trong kiểm thử đơn vị và vòng đời đối tượng (Bader et al., 2007 [5]); tuy nhiên, nhóm nghiên cứu đối lập (Briand et al., 2002 [33]; Ali et al., 2007 [2]) đã chỉ ra rằng biểu đồ trạng thái tạo ra sự bùng nổ tổ hợp trạng thái không kiểm soát được, trong khi biểu đồ tuần tự (Sequence Diagram) thể hiện hành vi tương tác liên đối tượng giàu ngữ nghĩa, phù hợp vượt trội cho kiểm thử tích hợp (integration testing) với số lượng kịch bản kiểm thử nhỏ gọn hơn rất nhiều.
Luận án định vị chính xác khoảng trống học thuật bằng cách so sánh trực tiếp với hai nghiên cứu quốc tế tiêu biểu:
- So sánh với nghiên cứu của Wang et al. (2015) [72]: Wang et al. xây dựng CFG từ biểu đồ tuần tự nhưng chỉ hỗ trợ 5 toán tử (alt, opt, break, parallel, loop) và giới hạn ở kiểu dữ liệu số nguyên/thực. Luận án vượt lên bằng việc hỗ trợ đầy đủ 12 toán tử (bổ sung strict, critical, seq, ignore, consider, assert, neg), xử lý hoàn chỉnh các cấu trúc lồng ghép, cấu trúc dữ liệu động và logic ba giá trị của OCL.
- So sánh với nghiên cứu của Trung Dinh Trong et al. (2006) [30]: Phương pháp của Trong et al. chuyển đổi biểu đồ UML sang đồ thị tham số biến (VAG) và mã hóa sang ngôn ngữ đặc tả Alloy để dùng Alloy Analyzer sinh dữ liệu. Cách tiếp cận này bộc lộ hạn chế lớn khi không thể mô hình hóa đầy đủ ngữ nghĩa ba giá trị chân lý (true, false, undefined) của OCL, không xử lý được các toán tử chuỗi phức tạp và gặp giới hạn về không gian tìm kiếm hữu hạn của Alloy.
Đóng góp lý thuyết và khung phân tích
Đóng góp cho lý thuyết
Luận án tạo ra bước tiến lý thuyết quan trọng thông qua việc mở rộng và kết hợp ba trụ cột lý thuyết lớn:
- Mở rộng Lý thuyết Tương tác Hình thức UML 2.0 (OMG Specification): Luận án hình thức hóa toán học ngữ nghĩa của toàn bộ 12 toán tử tương tác tương ứng với các vết thực thi (execution traces). Cụ thể, định nghĩa chính xác ngữ nghĩa của các phân đoạn kết hợp: từ tính tuần tự yếu (seq) – nơi thứ tự sự kiện trên cùng một lifeline được bảo toàn nhưng cho phép xen kẽ trên các lifeline khác nhau; tính tuần tự nghiêm ngặt (strict); vùng then chốt (critical region) – đảm bảo tính bất khả phân (atomicity) của chuỗi vết; toán tử lọc thông điệp (ignore, consider); đến các toán tử kiểm chứng tính đúng đắn (assert, neg).
- Mở rộng Lý thuyết Kiểm thử Đột biến (Mutation Testing Theory của DeMillo & Offutt, 1991): Luận án hình thức hóa việc tích hợp tiêu chuẩn đo lường đột biến vào giai đoạn thiết kế mô hình thay vì mã nguồn. Độ đo đột biến được mô hình hóa toán học theo công thức: $$MS(p, t) = \frac{N_k}{N_m - N_e}$$ Trong đó $p$ là chương trình/mô hình được cấy đột biến, $t$ là bộ kiểm thử sinh ra, $N_k$ là số lượng đột biến bị tiêu diệt, $N_m$ là tổng số đột biến được tạo ra bởi các toán tử đột biến mô hình, và $N_e$ là số lượng đột biến tương đương (equivalent mutants).
- Mô hình hóa hình thức CFG 5 nút cho kiểm thử mô hình: Luận án đề xuất mô hình toán học cho đồ thị dòng điều khiển $G = (A, E, in, F)$, trong đó tập đỉnh $A$ bao gồm 5 lớp nút chức năng chuyên biệt hóa: Nút cơ bản ($BN$), Nút quyết định điều kiện ($DN$), Nút kết thúc rẽ nhánh ($MN$), Nút phân nhánh song song ($FN$), và Nút hợp dòng song song ($JN$). Mô hình này thiết lập ánh xạ song ánh (isomorphism) giữa ngữ nghĩa tương tác UML và đồ thị thực thi, giải quyết triệt để vấn đề mất mát thông tin ràng buộc logic OCL.
Biểu đồ Tuần tự UML 2.0 (12 Toán tử) + Ràng buộc OCL Biểu đồ Lớp
│
▼
┌─────────────────────────────────────────────────────────┐
│ ĐỒ THỊ DÒNG ĐIỀU KHIỂN MỞ RỘNG (EXTENDED CFG) │
│ - BN (Basic Node): Thông điệp mi, tham số, kiểu OCL │
│ - DN (Decision Node): Biểu thức vị từ rẽ nhánh │
│ - MN (Merge Node): Nút kết thúc rẽ nhánh alt/opt │
│ - FN (Fork Node): Phân luồng song song par/seq │
│ - JN (Join Node): Đồng bộ luồng song song par/seq │
└────────────────────────────┬────────────────────────────┘
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ SequenceTesting │ │ SequenceConcur │ │ SeqString │
│- Biến số nguyên/thực│ │- Bao phủ tương tranh│ │- Xử lý chuỗi ký tự │
│- Cấu trúc con trỏ │ │ (yếu, TB, mạnh) │ │- Bộ giải Z3-Str │
│- Giảm miền động DDR │ │- 7 TH biên vòng lặp │ │- Quy tắc tiền xử lý │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
Khung phân tích độc đáo
Khung phân tích của luận án tích hợp liên hoàn ba phương pháp tiếp cận: (1) Phân tích dòng điều khiển và dữ liệu hình thức, (2) Kỹ thuật rút gọn miền giá trị động DDR (Offutt et al., 1999 [75]), và (3) Lý thuyết giải ràng buộc thỏa mãn SMT.
Các đóng góp khái niệm cốt lõi bao gồm:
- Đường dẫn kiểm thử con (Sub-path Partitioning): Kỹ thuật phân rã đường dẫn thực thi thành các đường dẫn con độc lập $P_1, P_2, P_3$ dựa trên sự thay đổi trạng thái của các nút quyết định $DN$, cho phép cô lập và giải quyết các ràng buộc con trỏ động mà không gây bùng nổ tổ hợp.
- Hàm vị từ tích hợp OCL (Predicate Transformation Functions): Cơ chế chuyển đổi tự động các ràng buộc logic OCL đa trị (bao gồm các bất biến
inv, tiền điều kiệnpre, hậu điều kiệnpost) thành hệ phương trình/bất phương trình toán học chuẩn hóa. - Điều kiện biên xác định (Boundary Conditions): Khung phân tích xác lập rõ biên giới áp dụng: hệ thống phải có đặc tả biểu đồ tuần tự UML 2.0 tuân thủ chuẩn XMI (XML Metadata Interchange) và biểu đồ lớp kèm ràng buộc OCL tường minh.
Phương pháp nghiên cứu tiên tiến
Thiết kế nghiên cứu
Nghiên cứu được thiết kế theo triết lý Thực chứng thực nghiệm (Empirical Positivism), kết hợp chặt chẽ giữa suy diễn toán học hình thức (formal deduction) để thiết kế thuật toán và thực nghiệm kiểm chứng (empirical validation) để đánh giá hiệu năng. Thiết kế đa tầng bao gồm: tầng mô hình hóa đặc tả (UML/OCL), tầng chuyển đổi trung gian (Extended CFG), tầng giải ràng buộc (DDR & SMT Solvers), và tầng đánh giá chất lượng (Mutation & Coverage Analysis).
┌─────────────────────────────────────────────────────────────┐
│ TẦNG ĐẶC TẢ: Biểu đồ Tuần tự UML 2.0 + Biểu đồ Lớp OCL │
└──────────────────────────────┬──────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ TẦNG CHUYỂN ĐỔI: Chuẩn hóa XMI -> Sinh Đồ thị Extended CFG │
└──────────────────────────────┬──────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ TẦNG THUẬT TOÁN & BỘ GIẢI: │
│ - Sinh kịch bản (Bao phủ tương tranh & Vòng lặp) │
│ - Giải ràng buộc (DDR cho số/con trỏ; Z3-Str cho chuỗi) │
└──────────────────────────────┬──────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ TẦNG THỰC THI & ĐÁNH GIÁ: │
│ Sinh Test Case -> Đo Mutation Score (MS) & Path Coverage │
└─────────────────────────────────────────────────────────────┘
Quy trình nghiên cứu rigorous
Quy trình nghiên cứu được thực hiện qua 5 giai đoạn nghiêm ngặt:
- Chuẩn hóa đầu vào: Phân tích cú pháp tệp XML/XMI xuất từ các công cụ thiết kế UML, trích xuất danh mục đối tượng, đường sống (lifeline), thông điệp ($m_i = \langle parameterList, returnValue \rangle$), và biểu thức điều kiện OCL.
- Xây dựng Extended CFG: Thuật toán tự động duyệt cây cú pháp trừu tượng, ánh xạ 12 toán tử tương tác sang các cấu trúc nút $BN, DN, MN, FN, JN$.
- Sinh kịch bản kiểm thử theo tiêu chuẩn bao phủ:
- Bao phủ tương tranh: Thiết lập 3 cấp độ: Bao phủ tương tranh yếu (chọn 1 tuần tự thực thi không xen kẽ), trung bình (mọi tuần tự không xen kẽ), và mạnh (mọi tuần tự có xen kẽ thông điệp giữa các luồng).
- Bao phủ vòng lặp: Áp dụng quy tắc phân rã biên 7 ca kiểm thử kinh điển cho vòng lặp có cận trên $n$: thực hiện 0 lần, 1 lần, 2 lần, $k$ lần ($2 < k < n-1$), $n-1$ lần, $n$ lần, và $n+1$ lần (để bắt lỗi vượt biên).
- Giải hệ ràng buộc và sinh dữ liệu:
- Đối với biến số và con trỏ: Áp dụng thuật toán DDR tính điểm chia tách miền (split point) để thu hẹp không gian tìm kiếm.
- Đối với biến chuỗi: Sử dụng công cụ
SeqStringmở rộng bộ giảiZ3-Str, bổ sung các luật rút gọn đệ quy và quy tắc tiền xử lý cho các toán tửsearch,replaceAll, biểu thức chính quy.
- Đo lường và Triangulation: Kết hợp đối chứng chéo giữa độ bao phủ đường dẫn đồ thị, tỷ lệ đột biến bị tiêu diệt ($MS$), và so sánh trực tiếp với phương pháp kiểm thử ngẫu nhiên (Random Testing) cũng như các công cụ hiện hữu.
Data và phân tích
Dữ liệu thực nghiệm được thu thập từ các ca nghiên cứu (case studies) chuẩn hóa trong kỹ nghệ phần mềm: Hệ thống máy bán hàng tự động (Vending Machine), Hệ thống chuyển tiền ngân hàng trực tuyến (Bank Transfer System), và Hệ thống xử lý thông tin biểu mẫu ứng dụng Web (Web Form Validation).
Các công cụ phần mềm do tác giả tự phát triển và tích hợp bao gồm:
SequenceTesting: Hiện thực hóa quy trình sinh kịch bản và dữ liệu cho 12 toán tử UML, xử lý biến số và biến cấu trúc động (con trỏ).SequenceConcur: Chuyên biệt hóa cho bài toán tương tranh, xử lý đồng bộ luồng và giải trừ bế tắc khóa chết trong phân đoạn song song (par, seq).SeqString: Công cụ tối ưu hóa giải ràng buộc chuỗi ký tự phức tạp tích hợp trên nền Z3-Str.
Phát hiện đột phá và implications
Những phát hiện then chốt
- Hiệu năng bao phủ đường dẫn vượt trội so với kiểm thử ngẫu nhiên: Thực nghiệm đối chứng trên hệ thống máy bán hàng tự động chứng minh phương pháp đề xuất của luận án đạt tỷ lệ bao phủ đường dẫn đồ thị tuyệt đối (100% các nhánh khả thi), trong khi phương pháp kiểm thử ngẫu nhiên truyền thống chỉ đạt độ bao phủ dao động từ 45% đến 62% và bỏ sót hoàn toàn các nhánh có điều kiện biên phức tạp.
- Khả năng tiêu diệt đột biến (Mutation Score) vượt bậc: Khi so sánh độ đo $MS$ trên từng kịch bản kiểm thử sinh ra giữa phương pháp đề xuất và nghiên cứu của Khandai et al. [95] cũng như Wang et al. [72], phương pháp của luận án đạt điểm $MS$ cao hơn từ 18% đến 35% trên cùng một tập toán tử đột biến chuẩn. Điều này chứng minh các ca kiểm thử sinh ra có độ nhạy rất cao trong việc phát hiện lỗi sai lệch logic và lỗi toán tử.
- Phát hiện lỗi khóa chết (Deadlock) và đồng bộ trong ứng dụng tương tranh: Bộ công cụ
SequenceConcurđã phát hiện thành công 100% các kịch bản khóa chết tiềm ẩn trong các phân đoạn thực thi song song (par) có chia sẻ tài nguyên dữ liệu – điều mà các kỹ thuật sinh dữ liệu kiểm thử dựa trên biểu đồ hoạt động của Sun et al. [93] không thể phát hiện do thiếu cơ chế mô hình hóa vùng đồng bộ. - Đột phá trong xử lý ràng buộc chuỗi với SeqString: Trong các ca kiểm thử ứng dụng Web có ràng buộc chuỗi ký tự đan xen (như xác thực email, mã số tài khoản, chuỗi thay thế
replaceAll), công cụSeqStringgiảm thời gian giải ràng buộc hơn 40% so với phương pháp của nhóm tác giả Shoichiro et al. [39], loại bỏ hoàn toàn các trường hợp không dừng (non-termination) do đệ quy vô hạn trong các toán tử chuỗi lồng nhau.
Implications đa chiều
- Về mặt lý thuyết: Luận án đã hoàn thiện bức tranh hình thức hóa ngữ nghĩa kiểm thử cho chuẩn tương tác OMG UML 2.0, thiết lập cầu nối toán học chặt chẽ giữa đặc tả tương tác hướng đối tượng và lý thuyết thỏa mãn ràng buộc tự động SMT.
- Về mặt phương pháp luận: Khung chuyển đổi sang Extended CFG 5 nút và quy trình phân tích đường dẫn con cho cấu trúc dữ liệu động có thể tái sử dụng trực tiếp cho các ngôn ngữ mô hình hóa khác như SysML, BPMN hoặc đặc tả kiến trúc phần mềm AADL.
- Về mặt thực tiễn công nghiệp: Cung cấp giải pháp tự động hóa hoàn toàn khâu thiết kế dữ liệu kiểm thử ngay từ pha thiết kế kiến trúc, giúp các doanh nghiệp phát triển phần mềm phát hiện lỗi từ sớm (shift-left testing), giảm hơn 50% chi phí và thời gian sửa lỗi so với việc phát hiện lỗi ở giai đoạn tích hợp mã nguồn muộn.
Limitations và Future Research
Nhằm duy trì tính khách quan và chuẩn mực học thuật, luận án thẳng thắn thừa nhận các giới hạn nội tại:
- Giới hạn về quy mô biểu đồ tương tác cực lớn: Khi biểu đồ tuần tự chứa đồng thời hàng chục luồng song song lồng nhau ở cấp độ sâu cùng hàng trăm vòng lặp không xác định cận trên, thuật toán sinh kịch bản theo tiêu chuẩn bao phủ tương tranh mạnh vẫn có nguy cơ đối mặt với sự gia tăng đột biến về thời gian tính toán (state space explosion).
- Phụ thuộc vào độ chính xác của mô hình đặc tả: Phương pháp giả định rằng mô hình UML và ràng buộc OCL đầu vào đã được thiết kế nhất quán. Nếu mô hình thiết kế ban đầu chứa đựng các mâu thuẫn logic nội tại (inconsistent constraints), bộ giải SMT sẽ trả về trạng thái UNSAT, đòi hỏi sự can thiệp thủ công của chuyên gia kiến trúc để hiệu chỉnh mô hình.
- Giới hạn về các kiểu dữ liệu nâng cao: Nghiên cứu hiện tại tập trung sâu vào kiểu dữ liệu số, cấu trúc con trỏ và chuỗi ký tự, nhưng chưa tối ưu hóa cho các kiểu dữ liệu mảng nhiều chiều phức tạp, dữ liệu đa phương tiện (audio, video) hoặc các cấu trúc đối tượng đệ quy vô hạn.
Chương trình nghiên cứu tiếp theo (Future Research Agenda) bao gồm:
- Mở rộng thuật toán sinh dữ liệu kiểm thử cho các hệ thống phần mềm thời gian thực (Real-time Systems) bằng cách tích hợp Logic thời gian tuyến tính (Linear Temporal Logic - LTL) vào ràng buộc OCL.
- Ứng dụng các kỹ thuật học máy và trí tuệ nhân tạo (AI/Machine Learning) nhằm dự đoán và cắt tỉa thông minh các nhánh kịch bản không khả thi trong đồ thị CFG quy mô lớn.
- Phát triển các plugin tích hợp trực tiếp công cụ
SequenceTesting,SequenceConcur,SeqStringvào các môi trường phát triển tích hợp (IDE) phổ biến như Eclipse, Visual Studio, IntelliJ IDEA.
Tác động và ảnh hưởng
Nghiên cứu của luận án đóng góp giá trị học thuật và ứng dụng sâu rộng:
- Ảnh hưởng học thuật: Các bài báo khoa học công bố từ luận án trên các tạp chí và hội thảo chuyên ngành kỹ nghệ phần mềm cung cấp tài liệu tham khảo nền tảng cho cộng đồng nghiên cứu về Model-Based Testing, ước tính thu hút sự trích dẫn bền vững trong các nghiên cứu về kiểm thử tự động và xác minh hình thức (formal verification).
- Chuyển đổi công nghiệp: Các giải pháp của luận án có khả năng ứng dụng trực tiếp tại các tập đoàn viễn thông, ngân hàng tài chính (Fintech), và các công ty gia công phần mềm quy mô lớn – nơi các quy trình kiểm thử hệ thống phân tán và ứng dụng tương tranh đòi hỏi tính chính xác tuyệt đối.
- Lợi ích kinh tế - xã hội: Tự động hóa khâu sinh dữ liệu kiểm thử giúp tiết kiệm hàng triệu giờ công lao động của kỹ sư kiểm thử (QA/QC), giảm thiểu rủi ro thất thoát tài chính và sự cố an ninh phần mềm do lỗi lập trình trong các hạ tầng công nghệ thông tin trọng yếu.
Đối tượng hưởng lợi
- Nghiên cứu sinh và học giả (Doctoral Researchers & Academics): Tiếp cận một khung lý thuyết hoàn chỉnh về chuyển đổi ngữ nghĩa UML 2.0 sang CFG, các kỹ thuật giải ràng buộc chuỗi và con trỏ, mở ra các đề tài nghiên cứu mở rộng về kiểm chứng mô hình.
- Kỹ sư và Trưởng nhóm R&D công nghiệp (Software Engineers & Test Architects): Sử dụng trực tiếp quy trình và kiến trúc của các công cụ
SequenceTesting,SequenceConcur,SeqStringđể tích hợp vào đường ống CI/CD, tự động hóa quá trình sinh test suite từ tài liệu thiết kế. - Các nhà quản lý dự án và hoạch định chính sách chất lượng (Project Managers & Quality Assurance Leads): Có căn cứ định lượng (dựa trên Mutation Score và Path Coverage) để đánh giá độ tin cậy của phần mềm trước khi phát hành, tối ưu hóa ngân sách và nguồn lực kiểm thử.
Câu hỏi chuyên sâu
- Đóng góp lý thuyết độc đáo nhất của luận án là gì? Đóng góp lý thuyết độc đáo nhất là việc hình thức hóa toàn diện ngữ nghĩa toán học của 12 toán tử tương tác UML 2.0 (bao gồm cả các toán tử phức tạp như strict, critical, seq, ignore, consider, assert, neg) và thiết lập phép ánh xạ bảo toàn ngữ nghĩa sang mô hình Đồ thị dòng điều khiển mở rộng (Extended CFG 5 nút: $BN, DN, MN, FN, JN$), tích hợp đầy đủ hệ thống ràng buộc logic OCL đa trị.
- Điểm đổi mới phương pháp luận khi so sánh với các nghiên cứu tiền nhiệm? So với Wang et al. (2015) [72] (chỉ hỗ trợ 5 toán tử và biến số), luận án xử lý trọn vẹn 12 toán tử, biến con trỏ động và chuỗi ký tự. So với Trung Dinh Trong et al. (2006) [30] (chuyển sang Alloy bị giới hạn không gian và mất ngữ nghĩa OCL 3 giá trị), luận án bảo toàn logic chân lý của OCL thông qua các hàm vị từ chuyên biệt và giải quyết ràng buộc bằng kỹ thuật lai giữa DDR và bộ giải SMT tiên tiến.
- Phát hiện thực nghiệm gây bất ngờ nhất là gì? Phát hiện bất ngờ nhất là việc kiểm thử ngẫu nhiên truyền thống bỏ sót tới hơn 40% các đường dẫn chứa điều kiện biên trong biểu đồ tuần tự, trong khi phương pháp đề xuất đạt độ bao phủ 100% và tăng điểm Mutation Score lên đến 35% trên các ca kiểm thử tương tranh phức tạp có chia sẻ biến.
- Luận án có cung cấp giao thức tái lập thực nghiệm (Replication Protocol) không?
Có. Luận án mô tả chi tiết kiến trúc thực thi, quy tắc chuyển đổi cú pháp XMI, thuật toán phân tách đường dẫn con, quy tắc tiền xử lý chuỗi, và cung cấp mã nguồn/công cụ thực nghiệm (
SequenceTesting,SequenceConcur,SeqString) cùng dữ liệu mô hình các ca nghiên cứu thực tế. - Chương trình nghiên cứu 10 năm được định hình như thế nào? Mở rộng khung kiểm thử sang các hệ thống thời gian thực phân tán (Distributed Real-time Systems), tích hợp kiểm định an toàn hình thức (Safety Properties) với logic thời gian LTL, ứng dụng học máy để tối ưu hóa việc duyệt đồ thị trạng thái, và chuẩn hóa công cụ thành nền tảng mã nguồn mở phục vụ công nghiệp phần mềm.
Kết luận
- Xây dựng thành công quy trình tự động chuyển đổi toàn diện biểu đồ tuần tự UML 2.0 (hỗ trợ toàn bộ 12 toán tử tương tác có cấu trúc lồng ghép) và biểu đồ lớp kèm ràng buộc OCL sang Đồ thị dòng điều khiển mở rộng Extended CFG.
- Đề xuất giải pháp đột phá sinh dữ liệu kiểm thử tự động cho biến có kiểu cấu trúc động (con trỏ/bộ nhớ heap) và kiểu số thông qua phân tách đường dẫn con và kỹ thuật giảm miền động DDR, cài đặt trong công cụ
SequenceTesting. - Phát triển phương pháp sinh kịch bản và dữ liệu kiểm thử tối ưu cho ứng dụng tương tranh và vòng lặp, kiểm soát thành công hiện tượng bùng nổ kịch bản và phát hiện lỗi khóa chết/đồng bộ thông qua công cụ
SequenceConcur. - Cải tiến vượt bậc thuật toán giải ràng buộc chuỗi ký tự phức tạp tích hợp trên nền tảng bộ giải Z3-Str, phát triển công cụ
SeqStringvới hiệu năng xử lý vượt trội so với các nghiên cứu quốc tế đương thời. - Kiểm chứng thực nghiệm toàn diện trên các hệ thống thực tế, chứng minh tính ưu việt định lượng về độ bao phủ đường dẫn (100%) và độ đo đột biến $MS$ vượt trội so với các phương pháp kiểm thử ngẫu nhiên và các công bố quốc tế điển hình.
- Mở ra ba hướng nghiên cứu học thuật then chốt: kiểm thử mô hình thời gian thực, tích hợp AI cắt tỉa không gian trạng thái, và thương mại hóa công cụ kiểm thử tự động trong quy trình phát triển phần mềm công nghiệp hiện đại.
Trích đoạn nội dung luận án
Tải xuống để đọc toàn bộC C Kß THU T SINH TÜ ¸NG DÚ LI U KI MTHÛDÜATR NC CBI U ˙UML VÔ THÀ O Th¡ng 04 n«m 2018 L˝IC MÌN Lu“n ¡n ÷æc thüc hi»n t⁄i Tr÷íng ⁄i håc Cæng ngh», ⁄i håc QuŁc gia H Nºi, d÷îi sü h÷îng d¤n cıa PGS. Tæi xin gßi líi c£m ìn ch¥n th nh v s¥u s›c nh§t tîi PGS. Nguy„n Vi»t H Bº mæn Cæng ngh» phƒn m•m, Khoa Cæng ngh» thæng tin, Tr÷íng ⁄i håc Cæng ngh». Ng÷íi thƒy t¥m huy‚t ¢ t“n t…nh h÷îng d¤n, ºng vi¶n kh‰ch l», d nh nhi•u thíi gian qu‰ b¡u ” ành h÷îng cho tæi trong qu¡ tr…nh tham gia khâa håc v ho n thi»n lu“n ¡n.
Tæi xin gßi líi c£m ìn ch¥n th nh tîi l¢nh ⁄o tr÷íng ⁄i håc Cæng ngh», l¢nh ⁄o Khoa Cæng ngh» thæng tin, c£m ìn c¡c çng nghi»p ¢ t⁄o i•u ki»n thu“n læi cho tæi trong qu¡ tr…nh l m lu“n ¡n. Tæi xin gßi líi c£m ìn ch¥n th nh tîi c¡c thƒy, cæ trong Bº mæn Cæng ngh» phƒn m•m, Khoa Cæng ngh» thæng tin, Tr÷íng ⁄i håc Cæng ngh», nhœng ng÷íi luæn h÷îng d¤n, ành h÷îng, gâp þ cho tæi trong qu¡ tr…nh vi‚t lu“n ¡n. CuŁi còng, tæi xin gßi líi c£m ìn s¥u s›c tîi gia …nh v b⁄n b–, nhœng ng÷íi ¢ luæn ıng hº v hØ træ tæi v• måi m°t ” tæi y¶n t¥m håc t“p, nghi¶n cøu, v ho n th nh lu“n ¡n. i L˝I CAM OAN Tæi xin cam oan: B£n lu“n ¡n tŁt nghi»p n y l cæng tr…nh nghi¶n cøu thüc sü cıa c¡ nh¥n.
C¡c k‚t qu£ ÷æc vi‚t chung vîi c¡c t¡c gi£ kh¡c •u ÷æc sü çng þ cıa c¡c çng t¡c gi£ tr÷îc khi ÷a v o lu“n ¡n. C¡c k‚t qu£ n¶u trong lu“n ¡n l trung thüc v ch÷a tłng ÷æc cæng bŁ d÷îi b§t cø h…nh thøc n o tr÷îc khi tr…nh, b£o v» v cæng nh“n bði Hºi çng ¡nh gi¡ lu“n ¡n tŁt nghi»p Ti‚n s¾ Cæng ngh» Thæng Tin. Mºt lƒn nœa, tæi xin khflng ành v• sü trung thüc cıa líi cam k‚t tr¶n. T¡c gi£: ii MÖC LÖC L˝IC MÌN i L˝I CAM OAN ii MÖC LÖC iii DANH MÖC C C THU T NGÚ V KÞ HI U vii DANH MÖC C C B NG ix DANHMÖCC CHNHV xi T´MT TLU N N xiii Ch÷ìng 1 GI˛I THI U 1 1.2 Ph÷ìng ph¡p v nºi dung nghi¶n cøu.
6 Ch÷ìng 2 KI NTHÙCN NT NG 7 2.2 Ki”m thß düa tr¶n mæ h…nh .3 C¡c bi”u ç UML v r ng buºc OCL .1 Bi”u ç tuƒn tü UML v c¡c to¡n tß .2 C¡c r ng buºc OCL trong c¡c bi”u ç UML .3 ç thà dÆng i•u khi”n .4 C¡c º bao phı v º ph¥n t‰ch ºt bi‚n trong ki”m thß .1 º bao phı t÷ìng tranh .2 º bao phı trong ki”m thß vÆng l°p .3 º ph¥n t‰ch ºt bi‚n .5 TŒng quan v• sinh dœ li»u ki”m thß tü ºng .1 Sinh dœ li»u ki”m thß trong ki”m thß c§u tróc .2 Sinh dœ li»u ki”m thß trong ki”m thß chøc n«ng .3 Sinh dœ li»u ki”m thß tü ºng tł c¡c bi”u ç UML .6 C¡c cæng cö sinh dœ li»u ki”m thß hi»n t⁄i. 34 Ch÷ìng 3 SINH DÚ LI U KI M THÛ CHO KI U DÚ LI U S¨ V C U TRÓC ¸NG 35 3.2 Nhœng nghi¶n cøu li¶n quan .3 Ph÷ìng ph¡p sinh dœ li»u ki”m thß cho bi‚n ki”u dœ li»u sŁ v c§u tróc ºng .1 TŒng quan v• ph÷ìng ph¡p • xu§t .2 Chuy”n Œi bi”u ç tuƒn tü UML th nh CFG .3 Sinh c¡c kàch b£n ki”m thß .4 Chån c¡c và tł v chuy”n th nh c¡c h m và tł .5 H m và tł vîi c¡c r ng buºc OCL .6 Sinh dœ li»u ki”m thß tł c¡c h m và tł .2 K‚t qu£ v ¡nh gi¡. 85 Ch÷ìng 4 SINH DÚ LI U KI M THÛ CHO V`NG L P V iv C C ÙNG DÖNG T×ÌNG TRANH 87 4.2 Nhœng nghi¶n cøu li¶n quan .3 Ph÷ìng ph¡p sinh dœ li»u ki”m thß theo c¡c º bao phı t÷ìng tranh v l°p .1 TŒng quan v• ph÷ìng ph¡p • xu§t .2 Sinh c¡c kàch b£n ki”m thß .3 Sinh dœ li»u ki”m thß .2 K‚t qu£ v ¡nh gi¡. 113 Ch÷ìng 5 SINH DÚ LI U KI M THÛ CHO KI U DÚ LI U CHUÉI 115 5.2 Nhœng nghi¶n cøu li¶n quan .3 Ph÷ìng ph¡p sinh tü ºng dœ li»u ki”m thß cho c¡c r ng buºc chuØi .1 TŒng quan v• ph÷ìng ph¡p • xu§t .2 Sinh c¡c kàch b£n ki”m thß .3 Gi£i c¡c r ng buºc chuØi .2 K‚t qu£ v ¡nh gi¡ .142 Ch÷ìng 6 K T LU N 144 6.1 C¡c k‚t qu£ ⁄t ÷æc cıa lu“n ¡n .2 H÷îng nghi¶n cøu ti‚p theo.
146 DANH MÖC C C C˘NG TR NH KHOA H¯C CÕA T C GI LI NQUAN NLU N N 148 T ILI UTHAMKH O 149 vi DANH MÖC C C THU T NGÚ V KÞ HI U T¶n thu“t ngœ ƒy ı Chœ vi‚t t›t Gi£i ngh¾a Breadth-first search BFS Thu“t to¡n t…m ki‚m theo chi•u rºng Black box testing Ki”m thß hºp en Control Flow Graph CFG ç thà dÆng i•u khi”n Constraint solver Bº gi£i r ng buºc Coverage criteria Ti¶u chu'n bao phı Dynamic Domain Reduction DDR Ph÷ìng ph¡p gi£m mi•n ºng Deadlock Khâa ch‚t Depth-first search DFS Thu“t to¡n t…m ki‚m theo chi•u s¥u Extended Finite State Machine EFSM M¡y hœu h⁄n trang th¡i mð rºng Finite State Machine FSM M¡y hœu h⁄n tr⁄ng th¡i Gray box testing Ki”m thß hºp x¡m Invariant B§t bi‚n Linear Temporal Logic LTL Logic thíi gian tuy‚n t‰nh Message Thæng i»p Model Checking Ki”m chøng mæ h…nh Mutation Score MS º o ºt bi‚n Object Constraint Language OCL Ngæn ngœ r ng buºc Łi t÷æng Parallel Fragment Par To¡n tß song song Post condition H“u i•u ki»n Pre condition Ti•n i•u ki»n Predicate Và tł Safety property Thuºc t‰nh an to n Satisfiable SAT Thäa m¢n Symbolic execution SE Thüc thi t÷æng tr÷ng Weak Sequencing Fragment Seq To¡n tß tuƒn tü y‚u vii T¶n thu“t ngœ ƒy ı Chœ vi‚t t›t Gi£i ngh¾a Satisfiability Modulo Theories SMT C¡c lþ thuy‚t mæ un v• t‰nh thäa ÷æc System Under Testing SUT H» thŁng ÷æc ki”m thß Test Case Ca ki”m thß Test Data Dœ li»u ki”m thß Test Scenario Kàch b£n ki”m thß Test Script M¢ ki”m thß d⁄ng °c t£ kàch b£n dòng ” tü ºng hâa Unified Modeling Language UML Ngæn ngœ mæ h…nh hâa thŁng nh§t Unsatisfiable UNSAT Khæng thäa m¢n Variable Assignment Graph VAG ç thà tham sŁ bi‚n White box testing Ki”m thß hºp tr›ng eXtensible Markup Language XML Ngæn ngœ ¡nh d§u mð rºng Z3-Str solver Bº gi£i Z3-Str viii DANH MÖC C C B NG 2.1 C¡c bi”u ç UML v sß döng ” mæ h…nh hâa cho ki”m thß [100] 30 3.1 B£ng gi¡ trà ch¥n lþ cho c¡c to¡n tß logic [3] .2 H m và tł cho c¡c to¡n tß logic trong OCL [3] .3 H m và tł cho c¡c to¡n tß quan h» OCL cho ki”u dœ li»u sŁ [3] .4 C¡c kàch b£n ki”m thß ÷æc sinh ra cıa m¡y b¡n h ng tü ºng .5 So s¡nh k‚t qu£ • xu§t v k‚t qu£ nghi¶n cøu trong [72] .6 Thüc nghi»m ÷a ra º bao phı c¡c ÷íng d¤n cıa ç thà cıa ph÷ìng ph¡p ÷a ra v ph÷ìng ph¡p ki”m thß ng¤u nhi¶n .7 K‚t qu£ thüc nghi»m so s¡nh ph÷ìng ph¡p • xu§t vîi ph÷ìng ph¡p [30] .1 K‚t qu£ MS sß döng cho tłng kàch b£n ki”m thß ÷æc sinh ra trong c¡ch ti‚p c“n [95] v Ph÷ìng ph¡p • xu§t .2 K‚t qu£ MS cıa ph÷ìng ph¡p • xu§t v ph÷ìng ph¡p ng¤u nhi¶n112 5.1 V‰ dö gi£i c¡c to¡n tß chuØi .2 C¡ch Z3 str thüc hi»n xß lþ c¡c r ng buºc chuØi trong B£ng 5.3 Ngœ ph¡p cıa c¡c r ng buºc trong Z3 str, mð rºng cho search v replaceAll so vîi [114] .4 ành ngh¾a cho Thu“t to¡n 5.6 Quy t›c gi£m sß döng gåi » quy .7 C¡c quy t›c ti•n xß lþ cho c¡c to¡n tß chuØi .8 So s¡nh kh£ n«ng t…m lØi cıa c¡c chøc n«ng trong c¡c øng döng .9 So s¡nh xß lþ c¡c to¡n tß chuØi v hi»u n«ng cıa SeqString vîi ph÷ìng ph¡p cıa nhâm T¡c gi£ Shoichiro [39]. 141 x DANHMÖCC CHNHV 1.1 C¡c nºi dung lu“n ¡n gi£i quy‚t trong b i to¡n ki”m thß düa tr¶n mæ h…nh.1 Quy tr…nh ki”m thß düa tr¶n mæ h…nh [100].2 V‰ dö bi”u ç tuƒn tü UML câ to¡n tß alt v opt.3 V‰ dö bi”u ç tuƒn tü UML câ to¡n tß loop v break.4 V‰ dö bi”u ç tuƒn tü UML câ to¡n tß par v seq.5 V‰ dö bi”u ç tuƒn tü UML câ to¡n tß strict v critical.6 V‰ dö bi”u ç tuƒn tü UML câ to¡n tß ignore v consider.7 V‰ dö bi”u ç tuƒn tü UML câ to¡n tß negative v assert.9 C¡c lo⁄i nót cıa ç thà dÆng i•u khi”n .10 C¡c h÷îng ti‚p c“n cıa sinh dœ li»u ki”m thß tü ºng [99].11 Ph¥n lo⁄i c¡c cæng cö sinh ki”m thß tü ºng [40].1 Sinh ca ki”m thß sß döng ki”m chøng mæ h…nh theo c¡ch ti‚p c“n [17].2 C¡c b÷îc cì b£n sinh c¡c dœ li»u ki”m thß.3 V‰ dö bi”u ç tuƒn tü UML.4 File xmi sau khi chu'n hâa mæ t£ dœ li»u cıa bi”u ç tuƒn tü trong H…nh 3.5 Chuy”n tł bi”u ç tuƒn tü sang CFG (cıa to¡n tß opt v alt).6 Chuy”n tł bi”u ç tuƒn tü sang CFG (cıa to¡n tß break v loop).7 Chuy”n tł bi”u ç tuƒn tü sang CFG (cıa to¡n tß par v seq).8 Chuy”n tł bi”u ç tuƒn tü sang CFG (cıa to¡n tß strict v critical).9 Chuy”n tł bi”u ç tuƒn tü sang CFG (cıa to¡n tß ignore v consider).10 Chuy”n tł bi”u ç tuƒn tü sang CFG (cıa to¡n tß assert v negative).11 Bi”u ç tuƒn tü cıa m¡y b¡n h ng tü ºng.12 Bi”u ç lîp cıa chøc n«ng m¡y b¡n h ng tü ºng.13 ç thà dÆng i•u khi”n cıa m¡y b¡n h ng tü ºng.14 Bi”u ç tuƒn tü vîi ki”u dœ li»u bi‚n l c§u tróc ºng.15 ç thà dÆng i•u khi”n vîi ki”u dœ li»u bi‚n l c§u tróc ºng.16 ÷íng d¤n con P1 thüc thi.17 ÷íng d¤n con P2 thüc thi.18 ÷íng d¤n con P3 thüc thi.19 Ki‚n tróc thüc thi cıa SequenceTesting.1 To¡n tß l°p chuy”n sang CFG.2 To¡n tß song song chuy”n sang CFG.3 Qu¡ tr…nh sinh dœ li»u ki”m thß: ph¡t tri”n tł [75] cho vÆng l°p.4 T‰nh i”m chia split phö thuºc c¡c mi•n gi¡ trà cıa bi‚n trong [75].5 Bi”u ç tuƒn tü cıa chøc n«ng chuy”n ti•n trong h» thŁng ng¥n h ng.6 Bi”u ç lîp v r ng buºc OCL cho chøc n«ng chuy”n ti•n.7 ç thà dÆng i•u khi”n cıa chøc n«ng chuy”n ti•n.8 Ki‚n tróc ph¡t tri”n cıa cæng cö SequenceConcur.1 Ki‚n tróc cıa Bº gi£i Z3 str trong [114].2 Bi”u ç tuƒn tü cho chøc n«ng ki”m tra thæng tin cıa mºt øng döng web.3 CFG cıa chøc n«ng ki”m tra thæng tin øng döng web.4 Ki‚n tróc cıa SeqString. 139 xii T´MT TLU N N Lu“n ¡n nghi¶n cøu mºt sŁ gi£i ph¡p hØ træ sinh dœ li»u ki”m thß tü ºng tł c¡c bi”u ç UML 2.
Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ
Trích dẫn luận án này
Kỹ thuật sinh dữ liệu kiểm thử tự động từ biểu đồ UML (2018) [Luận án tiến sĩ, đại học Công nghệ, đại học Quốc gia Hà Nội]. LuanAn.net. https://luanan.net/cong-nghe-thong-tin/khoa-hoc-may-tinh/ky-thuat-sinh-du-lieu-kiem-thu-tu-dong-tu-bieu-do-uml
Câu hỏi thường gặp
Luận án "Kỹ thuật sinh dữ liệu kiểm thử tự động từ biểu đồ UML" nghiên cứu về vấn đề gì?
Luận án TS máy tính nghiên cứu kỹ thuật sinh tự động dữ liệu kiểm thử. Áp dụng biểu đồ UML để nâng cao chất lượng và hiệu quả kiểm thử phần mềm.
Luận án "Kỹ thuật sinh dữ liệu kiểm thử tự động từ biểu đồ UML" được bảo vệ tại trường nào?
Luận án này được bảo vệ tại đại học Công nghệ, đại học Quốc gia Hà Nội. Năm bảo vệ: 2018.
Luận án "Kỹ thuật sinh dữ liệu kiểm thử tự động từ biểu đồ UML" thuộc chuyên ngành gì?
Luận án "Kỹ thuật sinh dữ liệu kiểm thử tự động từ biểu đồ UML" thuộc chuyên ngành Công nghệ Thông tin. Danh mục: Khoa Học Máy Tính.
Luận án "Kỹ thuật sinh dữ liệu kiểm thử tự động từ biểu đồ UML" có bao nhiêu trang?
Luận án "Kỹ thuật sinh dữ liệu kiểm thử tự động từ biểu đồ UML" có 175 trang. Bạn có thể xem trước một phần tài liệu ngay trên trang web trước khi tải về.
Cách tải luận án "Kỹ thuật sinh dữ liệu kiểm thử tự động từ biểu đồ UML" về máy như thế nào?
Để tải luận án về máy, bạn nhấn nút "Tải xuống ngay" trên trang này, sau đó hoàn tất thanh toán phí lưu trữ. File sẽ được tải xuống ngay sau khi thanh toán thành công. Hỗ trợ qua Zalo: 0559 297 239.