Декомпозиція вхідних даних у задачах генерування модульних тестів

Ключові слова: модульне тестування, символьне виконання, кластеризація програмного забезпечення, генерування тестів, функція подібності

Анотація

Для дослідження можливостей декомпозиції вхідних даних у задачах генерування модульних тестів застосовано методи ізолювання, структурне та функціональне моделювання. Проаналізовано наявні методи та виділено основні стратегії, які застосовуються системами символьного виконання. Описано їх переваги та недоліки. Запропоновано нові методи кластеризації вхідних даних для генерування модульних тестів. Визначено основні кроки для створення моделі кластеризації вхідних даних з використанням засобів символьного виконання. Обґрунтовано застосування коду як основного джерела даних для кластеризації. Охарактеризовано об'єкти, що містяться у вхідних даних або пов'язані з ними та є потенційними сутностями для кластеризації. Визначено функцію як множину операторів мови програмування, одиницею декомпозиції коду програми для генерування модульних тестів. Охарактеризовано її властивості за мірою придатності кількісних і якісних характеристик для створення функції подібності. Обґрунтовано вибір зв'язків з іншими функціями та звертань до даних за межами локальної області видимості функції як основних параметрів кластеризації. Визначено користувацькі типи даних, які використовуються для визначення параметрів і значення, що повертається, як можливі другорядні параметри кластеризації. Сформульовано задачу кластеризації на підставі обраних характеристик для вхідних даних, що використовуються для генерування тестів. Запропоновано методи обчислення міри близькості між окремими функціями, а також між функцією та кластером. Описано практичні методи для обчислення характеристик та сутностей з вхідних даних. Запропоновано подальші дослідження з метою визначення оптимальних значень коефіцієнтів для запропонованої моделі кластеризації та функції розпізнавання для перевірки близькості кластерів до відомих шаблонів, що створить додаткові можливості для генерування тестів.

Біографії авторів

Р. П. Базилевич, Національний університет "Львівська політехніка", м. Львів

д-р техн. наук, професор, кафедра програмного забезпечення

А. В. Франко, Національний університет "Львівська політехніка", м. Львів

аспірант, кафедра програмного забезпечення

Посилання

Aichernig, B. K., Bloem, R., Ebrahimi, M., Tappler, M., & Winter, J. (2018). "Automata Learning for Symbolic Execution," 2018 Formal Methods in Computer Aided Design (FMCAD), 1–9. https://doi.org/10.23919/FMCAD.2018.8602991. https://doi.org/10.23919/fmcad.2018.8602991
Alsarhan, Q., Ahmed, B. S., Bures, M., & Zamli, K. Z. (2020). Software module clustering: An in-depth literature analysis. IEEE Transactions on Software Engineering. https://doi.org/10.1109/tse.2020.3042553
Arshad, A., Riaz, S., Jiao, L., & Murthy, A. (2018). Semi-supervised deep fuzzy c-mean clustering for software fault prediction. IEEE Access, 6, 25675–25685. https://doi.org/10.1109/access.2018.2835304
Bazylevych, R. P., & Franko, A. V. (2021). Hierarchical model of automated test generation system. Scientific Bulletin of UNFU, 31(5), 96-101. https://doi.org/10.36930/40310515
Bazylevych, R. P., & Franko, A. V. (2021). Ierarkhichna model sistem avtomatizovanogo generuvannia modulnikh testiv. Scientific Bulletin of UNFU, 31(5), 96–101. https://doi.org/10.36930/40310515
Bazylevych, R. P., Melnyk, R. A., & Rybak, O. G. (2000). Circuit partitioning for FPGAs by the optimal circuit reduction method. VLSI design, 11(3), 237–248. https://doi.org/10.1155/2000/58485
Bucur, S., Ureche, V., Zamfir, C., & Candea, G. (2011). Parallel symbolic execution for automated real-world software testing. In Proceedings of the sixth conference on Computer systems, 183–198. https://doi.org/10.1145/1966445.1966463
Capiluppi, A., Di Ruscio, D., Di Rocco, J., Nguyen, P. T., & Ajienka, N. (2020). Detecting java software similarities by using different clustering techniques. Information and Software Technology, 122. https://doi.org/10.1016/j.infsof.2020.106279
Chen, M., & Mishra, P. (2010). Functional test generation using efficient property clustering and learning techniques. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 29(3), 396–404. https://doi.org/10.1109/tcad.2010.2041846
Chipounov, V., Georgescu, V., Zamfir, C., & Candea, G. (2009). Selective symbolic execution. In Proceedings of the 5th Workshop on Hot Topics in System Dependability (HotDep) (No. CONF).
Gharibi, G., Alanazi, R., & Lee, Y. (2018). Automatic hierarchical clustering of static call graphs for program comprehension. In 2018 IEEE International conference on big data (Big Data), 4016–4025. https://doi.org/10.1109/bigdata.2018.8622426
Li, Y., Su, Z., Wang, L., & Li, X. (2013). Steering symbolic execution to less traveled paths. ACM SigPlan Notices, 48(10), 19–32. https://doi.org/10.1145/2544173.2509553
Ma, R., Gao, H., Dou, B., Wang, X., & Hu, C. (2019). Segmental Symbolic Execution Based on Clustering. In 2019 IEEE SmartWorld, Ubiquitous Intelligence & Computing, Advanced & Trusted Computing, Scalable Computing & Communications, Cloud & Big Data Computing, Internet of People and Smart City Innovation (SmartWorld/SCALCOM/UIC/ATC/CBDCom/IOP/SCI), 1289–1296. https://doi.org/10.1109/smartworld-uic-atc-scalcom-iop-sci.2019.00239
Pan, W., Li, B., Liu, J., Ma, Y., & Hu, B. (2018). Analyzing the structure of Java software systems by weighted K-core decomposition. Future Generation Computer Systems, 83, 431–444. https://doi.org/10.1016/j.future.2017.09.039
Pedhadiya, Shreeji. "Chess-In-C." GitHub, 28 May 2022, github.com/shreejilucifer/Chess-In-C. Accessed 24 July 2022.
Rakadjiev, E., Shimosawa, T., Mine, H., & Oshima, S. (2015). Parallel SMT solving and concurrent symbolic execution. In 2015 IEEE Trustcom/BigDataSE/ISPA, vol. 3, 17–26. https://doi.org/10.1109/trustcom.2015.608
Sebastio, S., Baranov, E., Biondi, F., Decourbe, O., Given-Wilson, T., Legay, A., & Quilbeuf, J. (2020). Optimizing symbolic execution for malware behavior classification. Computers & Security, 93. https://doi.org/10.1016/j.cose.2020.101775
Shakhovska, N., Yakovyna, V., & Kryvinska, N. (2020). An improved software defect prediction algorithm using self-organizing maps combined with hierarchical clustering and data preprocessing. In International Conference on Database and Expert Systems Applications, 414–424. Springer, Cham. https://doi.org/10.1007/978-3-030-59003-1_27
Shen, S., Shinde, S., Ramesh, S., Roychoudhury, A., & Saxena, P. (2019). Neuro-Symbolic Execution: Augmenting Symbolic Execution with Neural Constraints. In NDSS. https://doi.org/10.14722/ndss.2019.23530
Shtern, M., & Tzerpos, V. (2012). Clustering Methodologies for Software Engineering. Advances in Software Engineering, 1–18. https://doi.org/10.1155/2012/792024
Siddiqui, J. H., & Khurshid, S. (2010). ParSym: Parallel symbolic execution. In 2010 2nd international conference on software technology and engineering, vol. 1, V1-405. https://doi.org/10.1109/icste.2010.5608866
Опубліковано
2022-08-31
Як цитувати
Базилевич, Р. П., & Франко, А. В. (2022). Декомпозиція вхідних даних у задачах генерування модульних тестів. Науковий вісник НЛТУ України, 32(4), 77-83. https://doi.org/10.36930/40320412
Розділ
Інформаційні технології