1. Trang chủ
  2. » Công Nghệ Thông Tin

Cải tiến công cụ sinh dữ liệu thử Java PathFinder bởi tối ưu các ràng buộc

4 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Bài viết Cải tiến công cụ sinh dữ liệu thử Java PathFinder bởi tối ưu các ràng buộc đề xuất việc áp dụng thuật toán tối ưu các ràng buộc - biểu diễn các lộ trình thực thi mã nguồn, nhằm giảm thời gian thực thi nhưng vẫn đảm bảo hiệu quả bao phủ. Giải pháp cải tiến được thử nghiệm trên tập các chương trình Java khác nhau và cho kết quả rất khả quan.

Lê Thị Mỹ Hạnh, Trần Hồng Dũng, Nguyễn Thanh Bình 104 CẢI TIẾN CÔNG CỤ SINH DỮ LIỆU THỬ JAVA PATHFINDER BỞI TỐI ƯU CÁC RÀNG BUỘC IMPROVING THE JAVA PATHFINDER TOOL FOR GENERATING TEST DATA BY OPTIMIZING CONSTRAINTS Lê Thị Mỹ Hạnh1, Trần Hồng Dũng2, Nguyễn Thanh Bình1 Trường Đại học Bách khoa, Đại học Đà Nẵng; ltmhanh@dut.udn.vn, ntbinh@dut.udn.vn Trường Cao đẳng Lương thực - Thực phẩm; dungdnt@gmail.com Tóm tắt - Sinh liệu thử giai đoạn quan trọng định kiểm thử phần mềm Các kỹ thuật sinh liệu thử cấu trúc dựa mã nguồn để tạo liệu thử nhằm phát lỗi người lập trình Kỹ thuật sinh liệu thử sử dụng thực thi ký hiệu cài đặt công cụ Java PathFinder để sinh liệu thử cho chương trình Java Tuy nhiên, hiệu cơng cụ Java PathFinder cịn hạn chế, thời gian thực thi lớn Trong báo này, đề xuất việc áp dụng thuật toán tối ưu ràng buộc - biểu diễn lộ trình thực thi mã nguồn, nhằm giảm thời gian thực thi đảm bảo hiệu bao phủ Giải pháp cải tiến thử nghiệm tập chương trình Java khác cho kết khả quan Abstract - Test data generation is one of the most important and crucial phases in software testing Structural test data generation techniques are based on source code to create test data, which can uncover programmer's faults A test data generation technique using symbolic execution is implemented in the Java PathFinder tool to generate test data for Java programs However, Java PathFinder has a performance limitation: execution time is quite big In this paper, we propose applying an optimization algorithm for constraints - representing execution paths in programs - in order to reduce the execution time but ensure the coverage effectiveness The experiment on different Java programs shows a promising result of the proposed solution Từ khóa - kiểm thử; sinh liệu thử; thực thi ký hiệu; Java PathFinder; tối ưu ràng buộc Key words - testing; test data generation; symbolic execution; Java PathFinder; constraint optimization Đặt vấn đề Với phát triển nhanh chóng công nghệ thông tin vài thập kỷ gần đây, công nghiệp phần mềm dần trở thành ngành mũi nhọn hầu hết quốc gia giới, kéo theo mở rộng quy mô chất lượng sản phẩm phần mềm Tuy nhiên, phần mềm khơng hồn hảo, vấn đề hỏng hóc phần mềm nguy lớn; lỗi phần mềm dù nhỏ gây thiệt hại ảnh hưởng nghiêm trọng Do hoạt động kiểm thử phần mềm đặt nhu cầu cấp thiết, giúp ngăn chặn khắc phục lỗi tiềm ẩn bên phần mềm chưa phát Nhằm giảm chi phí cho việc kiểm thử thủ công phần mềm dần trở nên phức tạp hơn, đồng thời tăng tính hiệu tin cậy trình kiểm thử, hệ thống kiểm thử phần mềm dựa chế sinh liệu thử tự động quan tâm tập trung nghiên cứu Nhiều cách tiếp cận cho việc sinh liệu thử tự động đề xuất, phân tích tĩnh dựa thực thi ký hiệu (SE - Symbolic Execution) [1, 2] xem phương pháp hiệu quả, phát lỗi phức tạp mà phương pháp thông thường tốn nhiều công sức để xử lý Ý tưởng thực thi ký hiệu sử dụng giá trị tượng trưng, thay phân tích chương trình với giá trị đầu vào cụ thể Như vậy, kết phương thức biểu diễn hàm số với tham số giá trị đầu vào tượng trưng Bằng cách thực thi với đầu vào tượng trưng thay vét cạn giá trị cụ thể đầu vào, phương pháp cung cấp cách thức để làm giảm bớt vấn đề bùng nổ trạng thái Bên cạnh đó, thực thi kí hiệu quan tâm năm gần khả sinh giá trị đầu vào kiểm thử cao tìm lỗi sâu ứng dụng phức tạp Mục tiêu quan trọng thực thi ký hiệu kiểm thử phần mềm để khám phá nhiều đường dẫn thực thi chương trình khác khoảng thời gian định; với đường dẫn (1) tạo tập hợp giá trị đầu vào cụ thể để thực thi đường dẫn đó, (2) kiểm tra diện loại lỗi khác lỗi chưa bắt ngoại lệ, lỗ hổng bảo mật, thất lạc nhớ Một mạnh thực thi ký hiệu khả sinh liệu thử cụ thể, cho phép tạo liệu thử có độ bao phủ cao Hơn nữa, theo quan điểm tìm kiếm lỗi, kỹ thuật cung cấp cho nhà phát triển liệu đầu vào cụ thể gây lỗi, sử dụng để xác nhận gỡ rối lỗi độc lập với công cụ thực thi ký hiệu sinh Đã có nhiều cơng trình nghiên cứu áp dụng phương pháp thực thi ký hiệu để sinh liệu thử cho ngôn ngữ lập trình NET, C, Java cho đời nhiều công cụ kiểm thử CREST, jCUTE, KLEE, Java PathFinder Trong phạm vi báo này, triển khai cách tiếp cận sinh liệu thử dựa thực thi ký hiệu cho ngôn ngữ Java; ngơn ngữ lập trình đa tảng có phạm vi sử dụng lớn ngành công nghiệp phần mềm Ngoài việc áp dụng kỹ thuật thực thi ký hiệu giải ràng buộc sử dụng công cụ tạo liệu thử tự động, cụ thể Java PathFinder (JPF) [3], đề xuất cải tiến kỹ thuật tối ưu ràng buộc biểu diễn tập lộ trình Bố cục báo sau: Tổng quan phương pháp sinh liệu thử dựa thực thi ký hiệu giới thiệu Mục 2; Mục giới thiệu công cụ Java PathFinder; Mục trình bày giải pháp tối ưu tập ràng buộc; kết thử nghiệm đánh giá giải pháp trình bày Mục 5; Mục kết luận hướng phát triển giải pháp đề xuất ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ ĐẠI HỌC ĐÀ NẴNG, SỐ 5(114).2017-Quyển Sinh liệu thử dựa thực thi ký hiệu Trong hoạt động kiểm thử phần mềm, ca kiểm thử thường tạo cách thủ công, gây tốn chi phí thời gian Thực thi kí hiệu (Symbolic execution) [4] biết đến kỹ thuật tiếng với khả tự động sinh liệu thử có độ phủ cao với tiêu chí kiểm thử, nhằm phát lỗi sâu hệ thống phần mềm phức tạp Ý tưởng của thực thi ký hiệu thực thi chương trình với giá trị ký hiệu, thay giá trị cụ thể của tham sớ đầu vào, kết quả giá trị đầu được tính tốn bởi chương trình được biểu diễn bởi một biểu thức ký hiệu Ví dụ, đầu cho đoạn mã chương trình "int sum (int x, int y) {return x + y; }" với ký hiệu đầu vào a b a + b Trong kiểm thử phần mềm, kỹ thuật thực thi ký hiệu đươc̣ sử dụng để sinh dữ liệu kiểm thử cho mỡi lộ trình thực thi khác của chương trình Một trạng thái thực thi ký hiệu bao gồm giá trị (ký hiệu) biến chương trình, điều kiện thực thi lộ trình đếm chương trình (là thơng tin số hiệu dịng lệnh thực thi chương trình) Điều kiện thực thi lộ trình cơng thức boolean (hoặc thỏa mãn ràng buộc tương ứng (CSP)) biến đầu vào mô tả điều kiện cần phải trạng thái Một thực thi ký hiệu sử dụng để mơ tả tất lộ trình thực thi Hơn nữa, thực thi ký hiệu hữu hạn đại diện cho số hữu hạn thực thi thực Về hình thức, thực thi ký hiệu SYM(P) chương trình P, (có thể hữu hạn), nút trạng thái ký hiệu chương trình cung chuyển trạng thái Tất nút thực thi ký hiệu mà điều kiện lộ trình thực thi thỏa mãn biểu diễn cho lộ trình thực thi khác Tất lộ trình thực thi khả thi P biểu diễn SYM(P) Trong ví dụ Hình 2, có hai nút thỏa mãn, có xác hai đường dẫn thực thi Chương trình P (Hình 1) Tất giá trị thỏa mãn xác định cho điều kiện lộ trình thực thi nút đơn SYM(P) cho đầu vào với lộ trình thực thi tương ứng chương trình (P) Tất nút biểu diễn cho lộ trình thực thi khác Do đó, SYM(P) hữu hạn dễ dàng tạo đầu vào cho tất lộ trình thực thi (P), SYM(P) khơng hữu hạn độ bao phủ lộ trình thực thi đạt giá trị cực đại int min( int a, int b ) { int = a; if ( b

Ngày đăng: 25/11/2022, 21:11

Xem thêm:

w