Sau đại học
Trang chủ   >  Tin tức  >   Thông báo  >   Sau đại học
Thông tin LATS của NCS Trần Nguyên Hương
Tên đề tài: Cải tiến phương pháp sinh dữ liệu kiểm thử tự động từ mã nguồn

1. Họ và tên: Trần Nguyên Hương                      2. Giới tính: Nam

3. Ngày sinh: 03/02/1979                                    4. Nơi sinh: Thái Bình

5. Quyết định công nhận nghiên cứu sinh số: 778/QĐ-CTSV ngày 21/8/2017 của Hiệu trưởng Trường Đại học Công nghệ.

6. Các thay đổi trong quá trình đào tạo: Quyết định số 830/QĐ-ĐT ngày 31/8/2018 của Hiệu trưởng Trường Đại học Công nghệ về việc thay đổi đề tài nghiên cứu cho NCS Trần Nguyên Hương:

- Tên đề tài cũ: Nghiên cứu một số phương pháp đặc tả và kiểm chứng các hệ thống thời gian thực.

- Tên đề tài mới: Cải tiến phương pháp sinh dữ liệu kiểm thử tự động từ mã nguồn.

7. Tên đề tài luận án: Cải tiến phương pháp sinh dữ liệu kiểm thử tự động từ mã nguồn.

8. Chuyên ngành: Kỹ thuật Phần mềm                9. Mã số: 9480103.01

10. Cán bộ hướng dẫn khoa học:

Hướng dẫn chính: PGS.TS. Phạm Ngọc Hùng

Cơ quan công tác: Trường Đại học Công nghệ - ĐH Quốc Gia Hà Nội

11. Tóm tắt các kết quả mới của luận án:

Luận án đã đạt được các kết quả chính sau:

Kết quả thứ nhất bao gồm: Đề xuất cải tiến kĩ thuật tìm kiếm theo chiều rộng được đề xuất trong DART bằng cách kết hợp tìm kiếm theo chiều rộng với phân tích tĩnh. Cải tiến này nhằm cải thiện quá trình sinh dữ liệu kiểm thử đầu tiên, sinh các bộ dữ liệu kiểm thử đạt độ phủ cao và số lượng dữ liệu kiểm thử sinh ra ít. Khi áp dụng kĩ thuật tìm kiếm theo chiều rộng, sau một vài lần lặp mà không làm tăng độ phủ mã nguồn thì phương pháp phân tích tĩnh được thay thế. Tiếp theo, để giảm thời gian sinh dữ liệu kiểm thử, một trình điều khiển kiểm thử tổng quát được đề xuất. Trình điều khiển này chỉ thực hiện biên dịch một lần và có thể thực thi được rất nhiều bộ dữ liệu kiểm thử. Trình điều khiển được mở rộng để xử lý nhiều kiểu dữ liệu khác nhau của C++ thay vì chỉ xử lý được các kiểu dữ liệu của C như trong DART. Công cụ được cài đặt và thực thi trên một số hệ thống tiêu biểu đã cho thấy độ phủ mã nguồn, số lần gọi đến bộ giải, số bộ dữ liệu kiểm thử có ý nghĩa, v.v. được cải thiện đáng kể.

Kết quả thứ hai bao gồm: Đề xuất phương pháp sinh dữ liệu kiểm thử sử dụng đồ thị dòng điều khiển có trọng số (WCFT). Theo phương pháp này, sau khi khởi tạo trọng số cho đồ thị dòng điều khiển, đường thi hành có tổng trọng số cao nhất sẽ được chọn để sinh dữ liệu kiểm thử. Nếu hệ ràng buộc sinh ra từ đường thi hành có nghiệm thì đường thi hành đó được đánh dấu là đã được thăm và trọng số trên các cạnh của đường thi hành đó sẽ được tăng thêm một đơn vị. Quá trình được lặp lại cho đến khi tất cả các đường thi hành đã được duyệt. Phương pháp này có thời gian sinh dữ liệu kiểm thử nhanh và có khả năng tìm được mã nguồn chết. Tiếp theo, để tăng cường khả năng sinh dữ liệu kiểm thử tại biên, phương pháp BVTG và IBVTG được đề xuất. Đây là hai phương pháp sinh dữ liệu kiểm thử có khả năng phát hiện lỗi tại các điểm biên trong mã nguồn. Với phương pháp BVTG, các điều kiện đơn được chọn ra tại các điểm quyết định của đồ thị dòng điều khiển được chuẩn hóa và đưa vào bộ giải SMT. Phương pháp này sinh được các bộ dữ liệu kiểm thử có khả năng phát hiện lỗi tại biên, tuy nhiên cần nhiều thời gian do phải sử dụng bộ giải. Phương pháp IBVTG cải tiến BVTG bằng cách sinh trực tiếp dữ liệu kiểm thử tại các điều kiện đơn trong mã nguồn. Do vậy, thời gian sinh dữ liệu kiểm thử giảm đi rất nhiều. Cuối cùng, để có một phương pháp vừa có khả năng sinh dữ liệu kiểm thử đảm bảo độ phủ vừa có khả năng phát hiện lỗi tại biên, luận án đề xuất phương pháp Hybrid là tích hợp của WCFT và IBVTG.

Kết quả thứ ba là đề xuất phương pháp sinh dữ liệu kiểm thử bằng phương pháp giả lập đơn vị mã nguồn. Đây là một cải tiến của phương pháp sinh dữ liệu kiểm thử định hướng. Phương pháp này được thực hiện ở bước tiền xử lý đồ thị dòng điều khiển. Theo đó, mỗi nút là lời gọi hàm trên đồ thị dòng điều khiển sẽ được thay thế bằng một biến giả lập tương ứng. Các đường thi hành sinh ra từ đồ thị dòng điều khiển sẽ được thực thi tượng trưng, sinh hệ ràng buộc và đưa vào bộ giải để sinh dữ liệu kiểm thử.  Kết quả thực nghiệm cho thấy các bộ dữ liệu kiểm thử sinh ra đạt độ phủ mã nguồn cao hơn, số bộ dữ liệu kiểm thử sinh ra ít hơn phương pháp kiểm thử tự động định hướng.

Các đề xuất cho bài toán sinh dữ liệu kiểm thử tự động từ mã nguồn được trình bày trong luận án sẽ hướng tới việc tăng độ tin cậy và chất lượng phần mềm. 

12. Khả năng ứng dụng trong thực tiễn:

Các đề xuất, cải tiến trong luận án có thể áp dụng cho nhiều ngôn ngữ lập trình khác nhau. Luận án đóng góp các giải pháp về mặt lý thuyết và công cụ hỗ trợ nhằm nâng cao hiệu quả của phương pháp sinh dữ liệu kiểm thử tự động từ mã nguồn cho các dự án phần mềm, góp phần làm cho các phương pháp kiểm thử tự động dễ dàng được áp dụng hơn trong thực tiễn. Luận án góp phần nâng cao chất lượng và độ tin cậy của phần mềm nói chung và trong cộng đồng nghiên cứu nói riêng.

13. Những hướng nghiên cứu tiếp theo:

Trong nghiên cứu thứ nhất, phương pháp sẽ tiếp tục cải thiện với nhiều tính năng cho C++ hơn nữa để có thể sử dụng rộng rãi trong các dự án công nghiệp. Đầu tiên, việc sinh dữ liệu kiểm thử cho các khuôn mẫu lớp và đa hình vẫn được coi là một thách thức lớn. Lý do chính là rất khó để phát hiện chính xác các hàm được gọi trong khi thực hiện. Thứ hai, phương pháp sẽ được mở rộng để sinh dữ liệu kiểm thử cho các hàm có chứa ngoại lệ. Cụ thể, nghiên cứu sẽ mở rộng để tạo ra một loạt dữ liệu kiểm thử gây ra lỗi thực thi. Thứ ba, trình điều khiển kiểm thử tổng quát C++ sẽ được cải thiện để hỗ trợ nhiều kiểu dữ liệu khác nhau trong C++ như vector, danh sách, v.v. Cuối cùng, việc thực thi tượng trưng cần được cải thiện để phân tích các câu lệnh sử dụng cơ chế nạp chồng (overloading). Đặc biệt, cả mô hình bộ nhớ và ánh xạ tượng trưng nên được tăng cường để xử lý nạp chồng, ví dụ như phép trừ hai thể hiện của một lớp.

Trong nghiên cứu thứ hai, phương pháp Hybrid hiện tại chỉ sinh dữ liệu kiểm thử cho các kiểu nguyên thủy và cần mở rộng phương pháp này cho các kiểu phức tạp khác như con trỏ, cấu trúc, lớp, v.v. Vấn đề xác định biên của các kiểu dữ liệu này cũng rất phức tạp và thường được trình bày trong đặc tả phần mềm.

Trong nghiên cứu thứ ba, cần tiếp tục cải thiện kĩ thuật phân tích mã nguồn, kĩ thuật thực thi tượng trưng để giảm thời gian sinh dữ liệu kiểm thử của AS4UT đặc biệt là trong các trường hợp hàm có lời gọi đệ quy hoặc có vòng lặp.

Trong mỗi nghiên cứu trong luận án, công cụ thực nghiệm tương ứng được xây dựng và tiến hành thực nghiệm. Tuy nhiên, các nghiên công cụ này vẫn là các công cụ riêng biệt, giao diện tương tác người dùng vẫn rất hạn chế. Các công cụ này có thể được tích hợp với nhau, nâng cấp về mặt giao diện để tạo ra một công cụ duy nhất hỗ trợ nhiều phương pháp sinh dữ liệu kiểm thử. Công cụ này sẽ góp phần làm cho các phương pháp kiểm thử tự động đề xuất được áp dụng rộng rãi hơn trong thực tế và trong công nghiệp.

14. Các công trình đã công bố có liên quan đến luận án:

[1]. T. N. Huong, D. M. Kha, H.-V. Tran, and P. N. Hung. Generate Test Data from C/C++ Source Code Using Weighted CFG and Boundary Values. In 2020 12th Int. Conf. on Knowledge and Systems Engineering (KSE), pages 97–102, 2020.

[2]. Tran Nguyen Huong, Do Minh Kha, Hoang-Viet Tran and Pham Ngoc Hung. A Hybrid Method for Test Data Generation for Unit Testing of C/C++ Projects. VNU Journal of Science, Vol.39, No. 1 (2023).

[3]. D. A. Nguyen, T. N. Huong, H. D. Vo, and P. N. Hung. Improvements of Directed Automated Random Testing in Test Data Generation for C++  Projects. International Journal of Software Engineering and Knowledge Engineering, 29:1279–1312, 2019. (ISI Indexed)

[4]. Tran Nguyen Huong, Le Huu Chung, Lam Nguyen Tung, Hoang-Viet Tran, and Pham Ngoc Hung. An Automated Stub Method for Unit Testing C/C++ Projects. In 2022 14th Int. Conf. on Knowledge and Systems Engineering (KSE), pages 1-6, 2022.

 VNU Media - VNU - UET
  In bài viết     Gửi cho bạn bè
  Từ khóa :
Thông tin liên quan
Trang: 1   | 2   | 3   | 4   | 5   | 6   | 7   | 8   | 9   | 10   | 11   | 12   | 13   | 14   | 15   | 16   | 17   | 18   | 19   | 20   | 21   | 22   | 23   | 24   | 25   | 26   | 27   | 28   | 29   | 30   | 31   | 32   | 33   | 34   | 35   | 36   | 37   | 38   | 39   | 40   | 41   | 42   | 43   | 44   | 45   | 46   | 47   | 48   | 49   | 50   | 51   | 52   | 53   | 54   | 55   | 56   | 57   | 58   | 59   | 60   | 61   | 62   | 63   | 64   | 65   | 66   | 67   | 68   | 69   | 70   | 71   | 72   | 73   | 74   | 75   | 76   | 77   | 78   | 79   | 80   | 81   | 82   | 83   | 84   | 85   | 86   | 87   | 88   | 89   | 90   | 91   | 92   | 93   | 94   | 95   | 96   | 97   | 98   | 99   | 100   | 101   | 102   | 103   | 104   | 105   | 106   | 107   | 108   | 109   | 110   | 111   | 112   | 113   | 114   | 115   | 116   | 117   | 118   | 119   | 120   | 121   | 122   | 123   | 124   | 125   | 126   | 127   | 128   | 129   | 130   | 131   | 132   | 133   | 134   | 135   | 136   | 137   | 138   | 139   | 140   | 141   | 142   | 143   | 144   | 145   | 146   | 147   | 148   | 149   | 150   | 151   | 152   | 153   | 154   | 155   | 156   | 157   | 158   | 159   | 160   | 161   | 162   | 163   | 164   | 165   | 166   | 167   | 168   | 169   | 170   | 171   | 172   | 173   | 174   | 175   | 176   | 177   | 178   | 179   | 180   | 181   | 182   | 183   | 184   | 185   | 186   | 187   | 188   | 189   | 190   | 191   | 192   | 193   | 194   | 195   | 196   | 197   | 198   | 199   | 200   | 201   | 202   | 203   | 204   | 205   | 206   | 207   | 208   | 209   | 210   | 211   | 212   | 213   | 214   | 215   | 216   | 217   | 218   | 219   | 220   | 221   | 222   | 223   | 224   | 225   | 226   | 227   | 228   | 229   | 230   | 231   | 232   | 233   | 234   | 235   | 236   | 237   | 238   | 239   | 240   | 241   | 242   | 243   | 244   | 245   | 246   | 247   | 248   | 249   | 250   | 251   | 252   | 253   | 254   | 255   | 256   | 257   | 258   | 259   | 260   | 261   | 262   | 263   | 264   | 265   | 266   | 267   | 268   | 269   | 270   |