Preview

Труды Института системного программирования РАН

Расширенный поиск

Об автоматической генерации модульных тестов для Java-приложений, использующих фреймворк Spring

https://doi.org/10.15514/ISPRAS-2024-36(2)-5

Аннотация

Данная работа посвящена автоматической генерации модульных тестов для приложений на языке Java, использующих фреймворк Spring. Хотя в последние десятилетия было создано несколько инструментов автоматической генерации тестов для «чистой» Java, специфические особенности этого фреймворка, как правило, не принимались во внимание. Тем не менее, Spring используется при разработке многих промышленных приложений на Java. Использование фреймворка в приложении, для которого необходимо сгенерировать тесты, накладывает дополнительные требования не только к используемым методам анализа кода, но и к виду предлагаемых тестов. Главным источником информации о типах и свойствах объектов в Spring-приложении является его контекст. В данной работе предлагается механизм анализа контекста приложения, который в некоторых случаях позволяет генерировать тестовые сценарии, соответствующие реальному исполнению программы, избегая избыточного мокирования. При этом полная инициализация контекста приложения в процессе анализа не происходит, что делает генерацию тестов безопасной для пользовательских данных. Предложенный инструмент анализа контекста Spring приложения был интегрирован в инструмент автоматической генерации тестов UnitTestBot Java. В заключение приводятся примеры тестов, сгенерированных для некоторых проектов с открытым исходным кодом.

Об авторах

Кирилл Александрович ШИШИН
Санкт-Петербургский государственный университет
Россия

Cтудент кафедры системного программирования СПбГУ. Сфера научных интересов: задачи статического анализа кода, автоматическая генерация тестов.



Илья Владимирович МУРАВЬЁВ
Санкт-Петербургский государственный университет
Россия

Инженер-исследователь кафедры системного программирования СПбГУ. Сфера научных интересов: задачи статического анализа кода, автоматическая генерация тестов, контекстно-свободная достижимость.



Егор Константинович КУЛИКОВ
Санкт-Петербургский государственный университет
Россия

Кандидат физико-математических наук, доцент кафедры системного программирования СПбГУ. Сфера научных интересов: задачи статического анализа кода, автоматическая генерация тестов; методы локальной аппроксимации и их распараллеливание.



Список литературы

1. Cristian C., Daniel D., Dawson E. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs. Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation (OSDI’08) USA: USENIX Association, 2008, pp. 209-224.

2. Workshop on Search-Based and Fuzz Testing, Available at: https://sbft24.github.io, accessed 24.06.2024.

3. Ivanov D. et al. UTBot Java at the SBST2022 Tool Competition. 2022 IEEE/ACM 15th International Workshop on Search-Based Software Testing (SBFT), 2022, pp. 39-40. DOI: 10.1145/3526072.3527529.

4. Ivanov D., Menshutin A., Pelevin M. et al. UTBot at the SBFT 2023 Java Tool Competition. 2023 IEEE/ACM International Workshop on Search-Based and Fuzz Testing (SBFT), 2023, pp. 68-69. DOI: 10.1109/SBFT59156.2023.00019.

5. Java Programming – The State of Developer Ecosystem in 2022 Infographic, JetBrains: Developer Tools for Professionals and Teams, Available at: https://www.jetbrains.com/lp/devecosystem-2022/, accessed 24.06.2024.

6. Fadatare R. Spring Boot Unit Testing Service Layer using JUnit and Mockito, Available at: https://www.javaguides.net/2022/03/spring-boot-unit-testing-service-layer.html, accessed 24.06.2024.

7. Overview: Spring Framework, Available at: https://docs.spring.io/spring-framework/reference/testing/spring-mvc-test-framework/server.html, accessed 24.06.2024.

8. Chathuranga S. Unit and Integration Testing in Spring Boot Micro Service, Available at: https://salithachathuranga94.medium.com/unit-and-integration-testing-in-spring-boot-micro-service-901fc53b0dff, accessed 24.06.2024.

9. Kim M., Xin Q., Sinha S., Orso A. Automated test generation for REST APIs: no time to rest yet. Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2022), Association for Computing Machinery, New York, USA, 2022, pp. 289-301. DOI: 10.1145/3533767.3534401.

10. Baldoni R., Coppa E., Cono D’elia D., Demetrescu C., Finocchi, I. A Survey of Symbolic Execution Techniques. ACM Comput. Surv. 51, 3, Article 50, 2019. 39 p. DOI: 10.1145/3182657.

11. Fadatare R. 10+ Free Open Source Projects Using Spring Boot, Available at: https://www.javaguides.net/2018/10/free-open-source-projects-using-spring-boot.html, accessed 24.06.2024.


Рецензия

Для цитирования:


ШИШИН К.А., МУРАВЬЁВ И.В., КУЛИКОВ Е.К. Об автоматической генерации модульных тестов для Java-приложений, использующих фреймворк Spring. Труды Института системного программирования РАН. 2024;36(2):59-72. https://doi.org/10.15514/ISPRAS-2024-36(2)-5

For citation:


SHISHIN K.A., MURAVEV I.V., KULIKOV E.K. On the Automated Unit Tests Generation for Java Applications using Spring Framework. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2024;36(2):59-72. https://doi.org/10.15514/ISPRAS-2024-36(2)-5



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)