Аннотації
20.11.2024
Процес створення тестових даних для програмного забезпечення є одним із найскладніших і найтрудомісткіших етапів у циклі розроблення програмного забезпечення. Він вимагає значних ресурсів і зусиль, особливо коли йдеться про досягнення високого рівня покриття тестів. Тестування програмного забезпечення на основі пошуку (ТПЗОП) є підходом, що уможливлює автоматизувати цей процес, використовуючи метаевристичні алгоритми для генерування тестових даних. Метаевристичні алгоритми, такі як генетичні алгоритми або алгоритми імітації відпалу, працюють за принципом систематичного перебору можливих варіантів і вибору найбільш ефективних рішень на основі зворотного зв'язку від функції пристосованості. Цей процес нагадує навчання з підкріпленням, де агент отримує винагороду за правильні дії та покарання за неправильні, з метою оптимізації загальної продуктивності. Запропоновано новий підхід, який досліджує можливість застосування навчання з підкріпленням у ТПЗОП, з метою заміни традиційних, створених людиною, метаевристичних алгоритмів. Для цього розроблено платформу GunPowder, яка трансформує процес тестування програмного забезпечення (ТПЗ) в навчальне середовище. У цьому середовищі агент використовує метод Double Deep Q-Networks (DDQN), який включає в себе глибокі нейронні мережі для навчання оптимальної стратегії взаємодії з програмним забезпеченням, що тестується. Пропоноване дослідження включало серію емпіричних експериментів для оцінки ефективності запропонованого підходу. Отримані результати вказують на те, що агенти, навчені з використанням GunPowder, можуть ефективно вивчати і застосовувати метаевристичні алгоритми, досягаючи високого рівня покриття гілок у навчальних функціях. Зокрема, наші агенти досягли 100% покриття гілок у випадку навчальних функцій, що є свідченням їх здатності адаптуватися до різних тестових сценаріїв. Ці висновки підкреслюють потенціал використання глибоких нейронних мереж і навчання з підкріпленням у ТПЗОП, що може значно покращити якість і ефективність процесу тестування програмного забезпечення в майбутньому. Отже, робота відкриває нові можливості для інтеграції сучасних методів машинного навчання в автоматизоване тестування програмного забезпечення, що може привести до зменшення витрат часу і ресурсів на тестування, а також підвищення якості кінцевих продуктів.
The process of creating test data for software is one of the most complex and labor-intensive stages in the software development cycle. It requires significant resources and effort, especially when it comes to achieving high test coverage. Search-Based Software Testing (SBST) is an approach that automates this process by using metaheuristic algorithms to generate test data. Metaheuristic algorithms, such as genetic algorithms or simulated annealing, operate on the principle of systematically exploring possible options and selecting the most effective solutions based on feedback from a fitness function. This process is similar to reinforcement learning, where an agent receives rewards for correct actions and penalties for incorrect ones, with the goal of optimizing overall performance. We have proposed a new approach that explores the feasibility of applying reinforcement learning in SBST, with the aim of replacing traditional, human-designed metaheuristic algorithms. To this end, we developed the GunPowder platform, which transforms the software testing process (STP) into a learning environment. In this environment, the agent uses the Double Deep Q-Networks (DDQN) method, which incorporates deep neural networks to learn the optimal strategy for interacting with the software under test. Our study involved a series of empirical experiments to evaluate the effectiveness of the proposed approach. The results indicate that agents trained using GunPowder can effectively learn and apply metaheuristic algorithms, achieving high branch coverage in training functions. In particular, our agents achieved 100% branch coverage in the case of training functions, demonstrating their ability to adapt to different test scenarios. These findings highlight the potential of using deep neural networks and reinforcement learning in SBST, which could significantly improve the quality and efficiency of the software testing process in the future. Thus, our work opens up new opportunities for integrating modern machine learning methods into automated software testing, potentially reducing the time and resources required for testing and improving the quality of final products.
- Harman, M., McMinn, P., de Souza, J. T., Yoo, S. (2012). Search Based Software Engineering: Techniques, Taxonomy, Tutorial. In: Meyer, B., Nordio, M. (eds) Empirical Software Engineering and Verification. LASER LASER LASER 2010 2009 2008. Lecture Notes in Computer Science, vol 7007. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-25231-0_1.
- Silver, D., Huang, A., Maddison, C. et al. (2016). Mastering the game of Go with deep neural networks and tree search. Nature 529, 484–489. https://doi.org/10.1038/nature16961.
- Levytskyi V., Kruk P., Lopuha O., Sereda D., Sapaiev V., Matsiievskyi O. (2024). “Use of Deep Learning Methodologies in Combination with Reinforcement Techniques within Autonomous Mobile Cyber-physical Systems”, 2024 IEEE. (прийнято до друку).
- Hado Van Hasselt, Arthur Guez, and David Silver. (2016). Deep Reinforcement Learning with Double Q-Learning.
In AAAI. 2094–2100. https://doi.org/10.1609/aaai.v30i1.10295. - McMinn P. (2007). IGUANA: Input Generation Using Automated Novel Algorithms. A Plug and Play Research Tool. Technical Report CS-07-14. Department of Computer Science, University of Sheffield. https://doi.org/10.1145/3194718.3194720.
- Lattner C. and Adve V. (2004). LLVM: A compilation framework for lifelong program analysis & transformation. In Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization. IEEE Computer Society, 75. https://doi.org/10.1109/CGO.2004.1281665.
- Kim, J., You, B., Kwon, M., McMinn, P., Yoo, S. (2017). Evaluating CAVM: A New Search-Based Test Data Generation Tool for C . In: Menzies, T., Petke, J. (eds) Search Based Software Engineering. SSBSE 2017. Lecture Notes in Computer Science, vol. 10452. Springer, Cham. https://doi.org/10.1007/978-3-319-66299-2_12.
- Brockman G., Cheung V., Pettersson L., Schneider J., Schulman J., Tang J., and Zaremba W. (2016). OpenAI Gym. (2016). https://doi.org/10.48550/arXiv.1606.01540.
- Glorot, X., Bordes, A., & Bengio, Y. (2011). Deep Sparse Rectifier Neural Networks. International Conference on Artificial Intelligence and Statistics 2011. Fort Lauderdale, United States. pp. 315–323.
- Lecun Y., Bottou L., Bengio Y. and Haffner P. (1998). "Gradient-based learning applied to document recognition," in Proceedings of the IEEE, vol. 86, no. 11, pp. 2278–2324. https://doi.org/10.1109/5.726791.
- Kingma D. and Ba J. (2014). Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980.
- Harman, M., McMinn, P., de Souza, J. T., Yoo, S. (2012). Search Based Software Engineering: Techniques, Taxonomy, Tutorial. In: Meyer, B., Nordio, M. (eds) Empirical Software Engineering and Verification. LASER LASER LASER 2010 2009 2008. Lecture Notes in Computer Science, vol 7007. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-25231-0_1.
- Silver, D., Huang, A., Maddison, C. et al. (2016). Mastering the game of Go with deep neural networks and tree search. Nature 529, 484–489. https://doi.org/10.1038/nature16961.
- Levytskyi V., Kruk P., Lopuha O., Sereda D., Sapaiev V., Matsiievskyi O. (2024). “Use of Deep Learning Methodologies in Combination with Reinforcement Techniques within Autonomous Mobile Cyber-physical Systems”, 2024 IEEE. (прийнято до друку).
- Hado Van Hasselt, Arthur Guez, and David Silver. (2016). Deep Reinforcement Learning with Double Q-Learning.
In AAAI. 2094–2100. https://doi.org/10.1609/aaai.v30i1.10295. - McMinn P. (2007). IGUANA: Input Generation Using Automated Novel Algorithms. A Plug and Play Research Tool. Technical Report CS-07-14. Department of Computer Science, University of Sheffield. https://doi.org/10.1145/3194718.3194720.
- Lattner C. and Adve V. (2004). LLVM: A compilation framework for lifelong program analysis & transformation. In Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization. IEEE Computer Society, 75. https://doi.org/10.1109/CGO.2004.1281665.
- Kim, J., You, B., Kwon, M., McMinn, P., Yoo, S. (2017). Evaluating CAVM: A New Search-Based Test Data Generation Tool for C . In: Menzies, T., Petke, J. (eds) Search Based Software Engineering. SSBSE 2017. Lecture Notes in Computer Science, vol. 10452. Springer, Cham. https://doi.org/10.1007/978-3-319-66299-2_12.
- Brockman G., Cheung V., Pettersson L., Schneider J., Schulman J., Tang J., and Zaremba W. (2016). OpenAI Gym. (2016). https://doi.org/10.48550/arXiv.1606.01540.
- Glorot, X., Bordes, A., & Bengio, Y. (2011). Deep Sparse Rectifier Neural Networks. International Conference on Artificial Intelligence and Statistics 2011. Fort Lauderdale, United States. pp. 315–323.
- Lecun Y., Bottou L., Bengio Y. and Haffner P. (1998). "Gradient-based learning applied to document recognition," in Proceedings of the IEEE, vol. 86, no. 11, pp. 2278–2324. https://doi.org/10.1109/5.726791.
- Kingma D. and Ba J. (2014). Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980.