Đại Học Quốc Gia Hà Nội: Nghiên Cứu Hệ Thống Kiểm Thử Dữ Liệu

Trường đại học

Đại học Quốc gia Hà Nội

Người đăng

Ẩn danh

Thể loại

luận văn

2017

91
0
0

Phí lưu trữ

30.000 VNĐ

Tóm tắt

I. Tổng Quan Nghiên Cứu Hệ Thống Kiểm Thử Dữ Liệu ĐHQGHN

Đảm bảo chất lượng phần mềm là ưu tiên hàng đầu, và kiểm thử đơn vị đóng vai trò then chốt. Đại học Quốc gia Hà Nội (ĐHQGHN) tập trung vào nghiên cứu và phát triển các phương pháp kiểm thử hiệu quả. Kiểm thử hộp trắngkiểm thử hộp đen là hai phương pháp chính. Kiểm thử hộp đen tập trung vào chức năng, trong khi kiểm thử hộp trắng đi sâu vào cấu trúc mã nguồn. Kiểm thử hộp trắng, dù tốn kém hơn, lại giúp phát hiện các vấn đề tiềm ẩn sâu trong mã. Chi phí cho kiểm thử hộp trắng có thể chiếm hơn 50% tổng chi phí phát triển phần mềm trong các dự án công nghiệp. Do đó, tự động hóa quy trình kiểm thử là giải pháp tối ưu. Luận văn này hướng đến xây dựng một giải pháp kiểm thử tự động mức đơn vị cho các dự án C/C++. Mục tiêu là giảm chi phí và tăng hiệu quả kiểm thử. Phương pháp đề xuất dựa trên kỹ thuật kiểm thử tự động định hướng.

1.1. Tầm Quan Trọng của Kiểm Thử Đơn Vị trong ĐHQGHN

Kiểm thử đơn vị là một trong những pha quan trọng nhất để đảm bảo chất lượng của phần mềm, đặc biệt các phần mềm nhúng. Nó giúp phát hiện sớm các lỗi tiềm ẩn, giảm thiểu rủi ro trong quá trình phát triển. Việc áp dụng kiểm thử đơn vị một cách hệ thống giúp nâng cao độ tin cậy của sản phẩm phần mềm. ĐHQGHN chú trọng vào việc đào tạo và nghiên cứu các kỹ thuật kiểm thử tiên tiến để đáp ứng nhu cầu của ngành công nghiệp phần mềm.

1.2. So Sánh Kiểm Thử Hộp Đen và Hộp Trắng tại ĐHQGHN

Kiểm thử hộp đen chỉ kiểm tra tính đúng đắn của đầu ra với đầu vào mà không quan tâm đến mã nguồn chương trình. Ngược lại, phương pháp kiểm thử hộp trắng đánh giá chất lượng mã nguồn bằng các kỹ thuật phân tích mã nguồn. Vì kiểm thử hộp trắng đi sâu vào phân tích mã nguồn nên kỹ thuật này cho phép phát hiện các vấn đề tiềm ẩn mà kiểm thử hộp đen không phát hiện được. Tuy nhiên, chi phí kiểm thử hộp trắng lớn hơn rất nhiều so với kiểm thử hộp đen.

II. Thách Thức và Giải Pháp Kiểm Thử Dữ Liệu Tự Động

Kỹ thuật kiểm thử tự động định hướng đã chứng minh hiệu quả, nhưng vẫn còn những thách thức. Việc sinh dữ liệu kiểm thử ban đầu chưa đủ tốt, và cần tạo ra tập dữ liệu kiểm thử nhỏ nhưng độ phủ cao. Luận văn này tập trung giải quyết các bài toán này. Kỹ thuật sinh dữ liệu kiểm thử đầu tiên dựa trên thông tin phân tích mã nguồn thay vì áp dụng kỹ thuật sinh ngẫu nhiên truyền thống. Thuật toán LDFS được đề xuất để giảm thiểu số lượng bộ dữ liệu kiểm thử mà vẫn đạt độ phủ cao. Công cụ CFT4Cpp được xây dựng để chứng minh tính hiệu quả của phương pháp đề xuất. Kết quả nghiên cứu đã được đăng tại hai hội nghị NIIS 2016 và SOICT 2017.

2.1. Vấn Đề Sinh Dữ Liệu Kiểm Thử Ban Đầu trong ĐHQGHN

Dữ liệu kiểm thử đầu tiên thường được sinh ngẫu nhiên dựa trên kiểu biến. Ví dụ, nếu biến có kiểu con trỏ cấu trúc thì xác suất sinh giá trị biến đó bằng NULL hoặc khác NULL bằng 50%. Kỹ thuật sinh ngẫu nhiên này không thể hiện tính hiệu quả khi chương trình có biến truy cập vùng nhớ, ví dụ như hàm sao chép xâu s1 cho s2. Rõ ràng, giá trị xâu s1 luôn khác NULL. Nếu giá trị s1 bằng NULL, chương trình sẽ bị lỗi khi thực thi bộ giá trị này. Tuy nhiên, kỹ thuật sinh dữ liệu kiểm thử đầu tiên theo phương pháp ngẫu nhiên không phát hiện được ràng buộc quan trọng này.

2.2. Khó Khăn Phân Tích Mã Nguồn C C tại ĐHQGHN

Các phương pháp kiểm thử đã đề xuất trong [1], [11], [13], và [2] chỉ áp dụng cho ngôn ngữ C mà không hỗ trợ C++. Việc phân tích mã nguồn C++ phức tạp hơn do tính đa hình, kế thừa, và các tính năng hướng đối tượng khác. ĐHQGHN đang nỗ lực nghiên cứu các phương pháp phân tích mã nguồn C++ hiệu quả để hỗ trợ kiểm thử tự động.

2.3. Giải Pháp Tối Ưu Hóa Dữ Liệu Kiểm Thử tại ĐHQGHN

Luận văn hướng đến giải quyết các vấn đề của kiểm thử kỹ thuật kiểm thử tự động định hướng trong bài toán kiểm thử dự án C/C++. Mục tiêu chính của luận văn gồm đề xuất phương pháp sinh dữ liệu kiểm thử giải quyết vấn đề dữ liệu kiểm thử đầu tiên và phương pháp phân tích mã nguồn dự án C/C++ để sinh tập dữ liệu kiểm thử số lượng nhỏ và đạt độ phủ tối đa.

III. Phương Pháp Phân Tích Mã Nguồn và Sinh Dữ Liệu Kiểm Thử

Phương pháp đề xuất bao gồm phân tích mã nguồn, xây dựng đồ thị dòng điều khiển, thu thập các đường thi hành, và áp dụng kỹ thuật thực thi tượng trưng. Thuật toán duyệt đồ thị theo chiều sâu được sử dụng để thu thập các đường thi hành. Kỹ thuật thực thi tượng trưng và SMT-Solver được áp dụng để tìm bộ giá trị thỏa mãn đường thi hành đó. Quá trình sinh dữ liệu kiểm thử lặp đi lặp lại đến khi đạt được độ phủ tối đa hoặc đạt đến giới hạn thời gian.

3.1. Xây Dựng Đồ Thị Dòng Điều Khiển từ Mã Nguồn C C

Đồ thị dòng điều khiển (CFG) là một biểu diễn đồ họa của các đường dẫn thực thi có thể có trong một chương trình. Việc xây dựng CFG chính xác là rất quan trọng để đảm bảo rằng tất cả các nhánh và câu lệnh trong chương trình đều được kiểm tra. ĐHQGHN đang nghiên cứu các kỹ thuật xây dựng CFG hiệu quả cho các chương trình C/C++ phức tạp.

3.2. Kỹ Thuật Thực Thi Tượng Trưng và SMT Solver trong ĐHQGHN

Kỹ thuật thực thi tượng trưng (Symbolic Execution) cho phép phân tích chương trình bằng cách sử dụng các giá trị tượng trưng thay vì các giá trị cụ thể. SMT-Solver (Satisfiability Modulo Theories Solver) là một công cụ giải quyết các bài toán thỏa mãn ràng buộc. Sự kết hợp của hai kỹ thuật này cho phép tự động sinh dữ liệu kiểm thử đáp ứng các tiêu chí độ phủ khác nhau.

3.3. Thuật Toán LDFS Lazy Depth First Search Tối Ưu Hóa Độ Phủ

Để giảm thiểu số lượng bộ dữ liệu kiểm thử trong khi vẫn đạt độ phủ cao, thuật toán LDFS được đề xuất. Thuật toán này ưu tiên duyệt các đường dẫn ít được kiểm tra trước đó, giúp tăng độ phủ một cách nhanh chóng. LDFS là một cải tiến so với các thuật toán duyệt đồ thị truyền thống.

IV. Công Cụ CFT4Cpp và Kết Quả Thực Nghiệm Kiểm Thử

Công cụ CFT4Cpp được xây dựng dựa trên phương pháp đề xuất và tiến hành so sánh với các phương pháp kiểm thử khác như KLEE, PathCrawler, CUTE, và CREST. Kết quả nghiên cứu đã được đăng tại hai hội nghị NIIS 2016 và SOICT 2017 với đánh giá khả quan về tính thực tiễn của phương pháp đề xuất. CFT4Cpp cung cấp giao diện người dùng thân thiện và hỗ trợ nhiều tiêu chí độ phủ khác nhau.

4.1. Giới Thiệu Công Cụ Kiểm Thử Tự Động CFT4Cpp tại ĐHQGHN

CFT4Cpp là một công cụ kiểm thử tự động được phát triển tại ĐHQGHN, dựa trên kỹ thuật kiểm thử tự động định hướng. Công cụ này hỗ trợ các dự án C/C++ và cung cấp nhiều tính năng như phân tích mã nguồn, xây dựng đồ thị dòng điều khiển, và sinh dữ liệu kiểm thử.

4.2. So Sánh CFT4Cpp với KLEE và PathCrawler về Hiệu Năng

CFT4Cpp được so sánh với KLEE và PathCrawler về hiệu năng, bao gồm thời gian sinh dữ liệu kiểm thử và độ phủ đạt được. Kết quả cho thấy CFT4Cpp có hiệu năng tương đương hoặc tốt hơn trong một số trường hợp, đặc biệt là đối với các chương trình C/C++ phức tạp.

4.3. Đánh Giá Tính Thực Tiễn của CFT4Cpp trong Các Dự Án

CFT4Cpp đã được áp dụng trong một số dự án thực tế tại ĐHQGHN và các đối tác công nghiệp. Kết quả cho thấy công cụ này có thể giúp giảm chi phí kiểm thử và tăng độ tin cậy của phần mềm.

V. Kết Luận và Hướng Phát Triển Nghiên Cứu Kiểm Thử

Luận văn đã đề xuất một phương pháp kiểm thử tự động mức đơn vị cho các dự án C/C++ dựa trên kỹ thuật kiểm thử tự động định hướng. Phương pháp này giải quyết các vấn đề về sinh dữ liệu kiểm thử ban đầu và phân tích mã nguồn C/C++. Công cụ CFT4Cpp đã được xây dựng để chứng minh tính hiệu quả của phương pháp đề xuất. Hướng phát triển tiếp theo bao gồm cải thiện hiệu năng của công cụ và hỗ trợ các tính năng ngôn ngữ C++ phức tạp hơn.

5.1. Tổng Kết Những Đóng Góp Chính của Luận Văn

Luận văn đã đó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 mới để sinh dữ liệu kiểm thử cho các dự án C/C++. Phương pháp này giúp giảm chi phí kiểm thử và tăng độ tin cậy của phần mềm.

5.2. Những Vấn Đề Còn Tồn Tại và Hướng Nghiên Cứu Tiếp Theo

Mặc dù đã đạt được những kết quả khả quan, vẫn còn một số vấn đề cần được giải quyết, chẳng hạn như cải thiện hiệu năng của công cụ và hỗ trợ các tính năng ngôn ngữ C++ phức tạp hơn. Hướng nghiên cứu tiếp theo bao gồm khám phá các kỹ thuật phân tích mã nguồn tiên tiến và phát triển các thuật toán sinh dữ liệu kiểm thử hiệu quả hơn.

05/06/2025
Luận văn phương pháp phân tích mã nguồn và sinh dữ liệu kiểm thử cho các dự án c c
Bạn đang xem trước tài liệu : Luận văn phương pháp phân tích mã nguồn và sinh dữ liệu kiểm thử cho các dự án c c

Để xem tài liệu hoàn chỉnh bạn click vào nút

Tải xuống

Tài liệu "Đại Học Quốc Gia Hà Nội: Nghiên Cứu và Phát Triển Hệ Thống Kiểm Thử Dữ Liệu" cung cấp cái nhìn sâu sắc về việc phát triển các hệ thống kiểm thử dữ liệu, một lĩnh vực quan trọng trong nghiên cứu và ứng dụng công nghệ thông tin. Tài liệu này không chỉ nêu rõ các phương pháp và công nghệ hiện đại mà còn nhấn mạnh tầm quan trọng của việc đảm bảo chất lượng dữ liệu trong các ứng dụng thực tiễn. Độc giả sẽ tìm thấy những lợi ích thiết thực từ việc áp dụng các hệ thống này, bao gồm việc nâng cao độ chính xác và hiệu quả trong xử lý dữ liệu.

Để mở rộng thêm kiến thức về các ứng dụng công nghệ liên quan, bạn có thể tham khảo tài liệu Luận án tiến sĩ nghiên cứu thuật toán và xây dựng chương trình xử lý số liệu gnss dạng rinex nhằm phát triển ứng dụng công nghệ định vị vệ tinh ở việt nam, nơi khám phá các ứng dụng công nghệ định vị trong nghiên cứu dữ liệu. Ngoài ra, tài liệu Luận văn thạc sĩ nghiên cứu công nghệ iot và ứng dụng trong hệ thống giám sát chất lượng không khí hà nội sẽ giúp bạn hiểu rõ hơn về việc sử dụng công nghệ IoT trong việc giám sát và phân tích dữ liệu môi trường. Cuối cùng, tài liệu Luận văn thạc sĩ khoa học máy tính giải pháp cảnh báo kiểu tấn công an ninh mạng deface và hiện thực cung cấp cái nhìn về bảo mật dữ liệu, một yếu tố không thể thiếu trong hệ thống kiểm thử dữ liệu. Những tài liệu này sẽ giúp bạn mở rộng hiểu biết và khám phá sâu hơn về các khía cạnh khác nhau của công nghệ dữ liệu.