Підвищення ефективності символьного виконання шляхом кластеризації вхідних даних на основі складності генерування тестів

Автор(и)

DOI:

https://doi.org/10.15587/1729-4061.2023.286160

Ключові слова:

модульне тестування, ефективність обчислень, статичний аналіз коду, динамічний аналіз коду

Анотація

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

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

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

Доктор технічних наук, професор

Кафедра «Програмного забезпечення»

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

Аспірант

Кафедра «Програмного забезпечення»

Посилання

  1. Le, W. (2013). Segmented symbolic analysis. 2013 35th International Conference on Software Engineering (ICSE). doi: https://doi.org/10.1109/icse.2013.6606567
  2. Shen, S., Shinde, S., Ramesh, S., Roychoudhury, A., Saxena, P. (2019). Neuro-Symbolic Execution: Augmenting Symbolic Execution with Neural Constraints. Proceedings 2019 Network and Distributed System Security Symposium. doi: https://doi.org/10.14722/ndss.2019.23530
  3. Yi, Q., Yang, G. (2022). Feedback-Driven Incremental Symbolic Execution. 2022 IEEE 33rd International Symposium on Software Reliability Engineering (ISSRE). doi: https://doi.org/10.1109/issre55969.2022.00055
  4. Cadar, C., Nowack, M. (2020). KLEE symbolic execution engine in 2019. International Journal on Software Tools for Technology Transfer, 23 (6), 867–870. doi: https://doi.org/10.1007/s10009-020-00570-3
  5. Vishnyakov, A., Fedotov, A., Kuts, D., Novikov, A., Parygina, D., Kobrin, E. et al. (2020). Sydr: Cutting Edge Dynamic Symbolic Execution. 2020 Ivannikov Ispras Open Conference (ISPRAS). doi: https://doi.org/10.1109/ispras51486.2020.00014
  6. Singh, S., Khurshid, S. (2020). Parallel Chopped Symbolic Execution. Lecture Notes in Computer Science, 107–125. doi: https://doi.org/10.1007/978-3-030-63406-3_7
  7. Păsăreanu, C. S., Kersten, R., Luckow, K., Phan, Q.-S. (2019). Symbolic Execution and Recent Applications to Worst-Case Execution, Load Testing, and Security Analysis. Advances in Computers, 289–314. doi: https://doi.org/10.1016/bs.adcom.2018.10.004
  8. Bazylevych, R. P., FrankoА. V. (2022). Hierarchical model of automated test generation system. Scientific Bulletin of UNFU, 32 (4), 77–83. doi: https://doi.org/10.36930/40320412
  9. Bazylevych, R., Franko, A. (2022). Input decomposition by clusterization for symbolic execution. 2022 IEEE 17th International Conference on Computer Sciences and Information Technologies (CSIT). doi: https://doi.org/10.1109/csit56902.2022.10000433
  10. Poeplau, S., Francillon, A. (2019). Systematic comparison of symbolic execution systems. Proceedings of the 35th Annual Computer Security Applications Conference. doi: https://doi.org/10.1145/3359789.3359796
  11. Mues, M., Howar, F. (2022). GDart: An Ensemble of Tools for Dynamic Symbolic Execution on the Java Virtual Machine (Competition Contribution). Lecture Notes in Computer Science, 435–439. doi: https://doi.org/10.1007/978-3-030-99527-0_27
  12. Peitek, N., Apel, S., Parnin, C., Brechmann, A., Siegmund, J. (2021). Program Comprehension and Code Complexity Metrics: A Replication Package of an fMRI Study. 2021 IEEE/ACM 43rd International Conference on Software Engineering: Companion Proceedings (ICSE-Companion). doi: https://doi.org/10.1109/icse-companion52605.2021.00071
  13. Bazylevych, R., Palasinski, M., Bazylevych, L., Yanush, D. (2013). Partitioning optimization by iterative reassignment of the hierarchically built clusters with border elements. 2013 2nd Mediterranean Conference on Embedded Computing (MECO). doi: https://doi.org/10.1109/meco.2013.6601362
Підвищення ефективності символьного виконання шляхом кластеризації вхідних даних на основі складності генерування тестів

##submission.downloads##

Опубліковано

2023-08-31

Як цитувати

Базилевич, Р. П., & Франко, А. В. (2023). Підвищення ефективності символьного виконання шляхом кластеризації вхідних даних на основі складності генерування тестів. Eastern-European Journal of Enterprise Technologies, 4(2 (124), 17–25. https://doi.org/10.15587/1729-4061.2023.286160