استفاده از یادگیری تقویتی جهت افزایش سرعت حل کننده های SMT با هدف تشخیص سریع تر مسیرهای غیر‌قابل اجرا در نرم افزار

نوع مقاله : مقاله پژوهشی

نویسندگان

دانشگاه صنعتی خواجه نصیرالدین طوسی

چکیده

آزمون خودکار نرم‌افزار امری ضروری در فرایند توسعه هر نرم‌افزاری می‌باشد. در آزمون خودکار ممکن است موانعی وجود داشته باشند که آزمون را با مشکل مواجه نمایند. یکی از این موانع، وجود مسیرهای غیرقابل اجرا در گراف جریان کنترلی بدست آمده از کدهای نرم‌افزار تحت آزمون است. وجود چنین مسیرهایی، می‌تواند در تولید داده آزمون، امنیت و... مشکلاتی را به وجود آورد و باعث هدر رفت منابع شود.
به منظور پیشگیری از این مشکلات، تشخیص مسیرهای غیرقابل اجرا بسیار حیاتی است. اما در نرم‌افزارهای بزرگ، تشخیص این مسیرها به دلیل زیاد بودن حجم کدها و به تبع آن زیاد بودن مسیرها در گراف جریان کنترلی، کاری زمانبر است. در این مقاله، روشی ارائه شده که با به کارگیری یادگیری تقویتی می‌تواند سرعت تشخیص مسیرهای غیرقابل اجرا را افزایش دهد. در این روش با استفاده از عامل DQN ، سرعت حل‌کننده SMT، افزایش داده می‌شود. در واقع در این مقاله نشان داده شده است که می‌توان با استفاده از یادگیری تقویتی، تاکتیک‌‌های ارائه شده توسط SMT را یاد گرفت و سپس با اعمال تاکتیک‌های یادگیرفته شده، سرعت حل را افزایش داد. بدین ترتیب سرعت تمامی روش‌هایی که از این ابزار برای تشخیص مسیرهای غیرقابل اجرا استفاده می‌کنند نیز افزایش می یابد.
روش ارائه شده در این مقاله بر روی منطق‌های QF_NRA و QF_NIA آزمایش شده است. آزمایشاتی که انجام شده نشان داده است که با استفاده از روش پیشنهادی، می‌توان سرعت حل‌کننده SMT را تا 4/7 برابر افزایش داد.

کلیدواژه‌ها

موضوعات


عنوان مقاله [English]

Using reinforcement learning for speeding up the process of SMT solvers with the aim of faster detection of infeasible paths in software

نویسندگان [English]

  • Majid Feyzi
  • Mehdi Esnaashari
Faculty of Computer Engineering, K. N. Toosi University of Technology
چکیده [English]

Software testing is an important thing in the development process of any software. Most parts of tests are done automatically. In automatic software testing, there may be obstacles that make the test difficult. One of these obstacles is the presence of infeasible paths in the control flow graph. The existence of such paths can cause problems in various fields such as test data generation, security, and etc. and cause resources waste.
To prevent such problems, detecting infeasible paths can be critical. But in large software products, recognizing these paths is time-consuming. In this study, a method has been presented that can increase the detection speed of infeasible paths using reinforcement learning algorithms. In this method, an attempt has been made to increase the speed of SMT solver using DQN. It has been shown that the tactics provided by SMT can be learnt using reinforcement learning, and thus, the speed of solving increases. This way, the speed of all algorithms and methods that use this tool to detect infeasible paths in control flow graphs will also increase.
The method presented in this study has been tested on QF_NRA and QF_NIA logics. In the experiments that have been done, it has been shown that using the proposed method, the speed of the SMT solver can be increased up to 4.7 times.

کلیدواژه‌ها [English]

  • Automatic software testing
  • infeasible paths
  • SMT solvers
  • Z3 solver
  • Reinforcement learning
  • DQN