Luận Văn Thạc Sĩ: 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++

Trường đại học

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

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

2017

68
0
0

Phí lưu trữ

30.000 VNĐ

Tóm tắt

I. Giới thiệu

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 là các phần mềm nhúng. Hai phương pháp phổ biến là kiểm thử hộp đen và kiểm thử hộp trắng. Kiểm thử hộp đen chỉ kiểm tra tính đúng đắn của đầu ra với đầu vào cho trước mà không quan tâm đến mã nguồn chương trình. Ngược lại, kiểm thử hộp trắng đánh giá chất lượng mã nguồn bằng cách sử dụng các kĩ thuật phân tích mã nguồn. 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. Đặc biệt, trong các dự án công nghiệp, chi phí 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. Nguyên nhân là do số lượng hàm cần kiểm thử lên tới hàng nghìn, thậm chí hàng chục nghìn hàm. Kết quả là chi phí để kiểm thử hết những hàm này khá lớn, ảnh hưởng đến tốc độ phát triển dự án. Do đó, quá trình kiểm thử hộp trắng cần được tự động hóa để giải quyết bài toán về chi phí.

1.1. Tầm quan trọng của kiểm thử tự động

Kiểm thử tự động giúp giảm thiểu chi phí và thời gian kiểm thử. Nó cho phép phát hiện lỗi sớm trong quy trình phát triển phần mềm. Việc áp dụng kĩ thuật kiểm thử tự động định hướng đã chứng minh tính hiệu quả trong việc sinh dữ liệu kiểm thử. Tuy nhiên, các vấn đề còn tồn tại cần giải quyết, như việc sinh dữ liệu kiểm thử đầu tiên chưa đủ tốt và sinh tập dữ liệu kiểm thử có số lượng nhỏ nhưng đạt độ phủ cao.

II. Tổng quan kĩ thuật kiểm thử tự động định hướng

Mục tiêu của chương này là cung cấp nền tảng lý thuyết trong sinh dữ liệu kiểm thử tự động, bao gồm khái niệm dữ liệu kiểm thử và độ phủ, đồ thị dòng điều khiển, cây cú pháp trừu tượng, và tổng quan về kĩ thuật kiểm thử tự động định hướng. Dữ liệu kiểm thử là những bộ giá trị được sinh từ chương trình mà không sử dụng giá trị đầu ra mong muốn. Độ phủ là một thước đo quan trọng để đánh giá chất lượng mã nguồn. Các loại độ phủ phổ biến trong sinh dữ liệu kiểm thử đơn vị gồm phủ nhánh, phủ câu lệnh, và độ phủ điều kiện con. Độ phủ càng lớn đồng nghĩa với chất lượng bộ dữ liệu kiểm thử càng cao.

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

Đồ thị dòng điều khiển (Control Flow Graph - CFG) là một công cụ quan trọng trong việc phân tích mã nguồn. Nó giúp xác định các nhánh và đường đi trong mã nguồn, từ đó hỗ trợ sinh dữ liệu kiểm thử hiệu quả hơn. Việc xây dựng CFG cho phép lập trình viên hiểu rõ hơn về cách thức hoạt động của chương trình, từ đó phát hiện các vấn đề tiềm ẩn mà có thể không được phát hiện qua các phương pháp kiểm thử khác.

III. Phương pháp kiểm thử tự động dự án C C

Phương pháp đề xuất trong luận văn này tập trung vào việc sinh dữ liệu kiểm thử cho các dự án C/C++. Quy trình này bao gồm nhiều bước, từ việc phân tích mã nguồn, xây dựng đồ thị dòng điều khiển, đến việc sinh dữ liệu kiểm thử. Đặc biệt, việc sử dụng kĩ thuật thực thi tượng trưngSMT-Solver giúp tìm bộ giá trị thỏa mãn đường thi hành. Quá trình này lặp đi lặp lại cho đến khi đạt được độ phủ tối đa hoặc đạt đến giới hạn thời gian cho trước. Phương pháp này không chỉ giúp giảm thiểu số lượng bộ dữ liệu kiểm thử mà còn đảm bảo độ phủ cao.

3.1. Quy trình sinh dữ liệu kiểm thử

Quy trình sinh dữ liệu kiểm thử bắt đầu bằng việc phân tích mã nguồn để xây dựng đồ thị dòng điều khiển. Sau đó, tập các đường thi hành có thể có trên đồ thị này được thu thập bằng cách áp dụng thuật toán duyệt đồ thị theo chiều sâu. Tập dữ liệu kiểm thử này được sắp xếp theo thứ tự ưu tiên, ví dụ như đường ngắn nhất có độ ưu tiên cao nhất. Với từng đường thi hành được sắp xếp, 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 đó.

IV. Công cụ và thực nghiệm

Công cụ kiểm thử tự động CFT4Cpp được xây dựng dựa trên phương pháp đề xuất. Công cụ này sử dụng các thư viện hỗ trợ như Z3 cho việc giải hệ ràng buộc và CDT cho phân tích mã nguồn. Kết quả thực nghiệm cho thấy công cụ CFT4Cpp có khả năng sinh dữ liệu kiểm thử hiệu quả, so sánh với các công cụ khác như KLEE, PathCrawler, CAUT, và CREST. Kết quả nghiên cứu đã được đăng trong hai hội nghị NICS 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.

4.1. Kết quả thực nghiệm

Kết quả thực nghiệm cho thấy số lượng bộ dữ liệu kiểm thử và độ phủ đạt được với công cụ CFT4Cpp cao hơn so với các công cụ khác. Việc so sánh thời gian biên dịch và thực thi dữ liệu kiểm thử cũng cho thấy công cụ này có hiệu suất tốt hơn. Điều này chứng tỏ rằng phương pháp đề xuất không chỉ hiệu quả trong việc sinh dữ liệu kiểm thử mà còn tối ưu hóa quy trình kiểm thử tự động.

V. Kết luận

Luận văn đã trình bày một phương pháp kiểm thử tự động cho các dự án C/C++ với mục tiêu sinh dữ liệu kiểm thử đạt độ phủ tối đa. Các vấn đề tồn tại trong kĩ thuật kiểm thử tự động định hướng đã được phân tích và giải quyết. Kết quả thực nghiệm cho thấy tính hiệu quả của phương pháp đề xuất, mở ra hướng đi mới cho việc kiểm thử tự động trong các dự án phần mềm. Tương lai, cần tiếp tục nghiên cứu và cải tiến để nâng cao hơn nữa hiệu quả của phương pháp này.

25/01/2025

TÀI LIỆU LIÊN QUAN

Luận văn thạc sĩ 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 luận văn ths máy tính 604801
Bạn đang xem trước tài liệu : Luận văn thạc sĩ 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 luận văn ths máy tính 604801

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

Tải xuống

Bài luận văn thạc sĩ mang tiêu đề "Luận Văn Thạc Sĩ: 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ủa tác giả Nguyễn Đức Anh, dưới sự hướng dẫn của PGS. Phạm Ngọc Hùng, được thực hiện tại Đại học Quốc gia Hà Nội vào năm 2017. Bài viết tập trung vào việc phân tích mã nguồn và sinh dữ liệu kiểm thử trong các dự án C++, cung cấp những phương pháp và công cụ hữu ích cho việc phát triển phần mềm. Đặc biệt, nó giúp người đọc hiểu rõ hơn về quy trình kiểm thử và tối ưu hóa mã nguồn, từ đó nâng cao chất lượng sản phẩm phần mềm.

Nếu bạn quan tâm đến các khía cạnh khác trong lĩnh vực công nghệ thông tin, bạn có thể tham khảo thêm bài viết "Các yếu tố ảnh hưởng đến quyết định chọn nơi làm việc của sinh viên công nghệ thông tin tại Đà Nẵng", nơi phân tích các yếu tố tác động đến sự lựa chọn nghề nghiệp của sinh viên CNTT. Bên cạnh đó, bài viết "Luận văn về quản lý điều hành khoa học công nghệ thông tin và nguồn lực thông tin" cũng sẽ cung cấp cái nhìn sâu sắc về quản lý trong lĩnh vực công nghệ thông tin. Cuối cùng, bạn có thể tìm hiểu thêm về "Luận Văn Thạc Sĩ Về Phân Tích Dữ Liệu Sinh Viên Ngành CNTT Tại Trường Đại Học Tài Chính Marketing", một nghiên cứu liên quan đến phân tích dữ liệu sinh viên trong ngành công nghệ thông tin. Những tài liệu này sẽ giúp bạn mở rộng kiến thức và có cái nhìn toàn diện hơn về lĩnh vực này.