Метод графорієнтованої декомпозиції монолітних інформаційних систем для ізоляції релізів і локалізації регресійного тестування
Анотація
Встановлено, що однією з ключових проблем супроводу великих інформаційних систем з монолітною архітектурою є необхідність виконання повного її регресійного тестування системи за будь-яких локальних змін коду, що істотно збільшує тривалість релізного циклу та навантаження на CI/CD-інфраструктуру. Наявні підходи до структурування монолітних систем переважно орієнтовані на повну міграцію до мікросервісної архітектури і не вирішують завдання ізоляції релізів та локалізації автотестів всередині єдиної кодової бази. Отже, є очевидною невирішена методологічна проблема, для вирішення якої розроблено новий метод декомпозиції монолітних систем на основі зваженого графа функціональної відповідальності. Для кожного ребра графа характерні три компоненти: структурна вагомість, яка визначається на основі статичного аналізу коду, доменна вагомість, що відображає спільне використання бізнес-сутностей, та темпоральна вагомість, що обчислюється з git-історії за модифікованим індексом Жаккара для множин комітів. Виявлено, що темпоральна компонента фіксує приховані залежності, які невидимі за статичного аналізу коду. Зокрема, під час аналізу модельної системи із 312 ребрами графа, 41 зв'язок мав ненульову темпоральну вагу за нульових значень структурної та доменної вагомостей. Це свідчить про існування неформальних архітектурних зв'язків, які сформувались упродовж релізної історії системи. У роботі розроблено алгоритм affecteded(v,d), що реалізує обхід в ширину по графу з регульованою глибиною d і забезпечує формально верифіковану повноту відбору тестів для довільної зміни. Оцінено вплив параметрів порогу декомпозиції θ та глибини обходу d на ефективність роботи запропонованого методу граф-орієнтованої декомпозиції. Зокрема, виявлено стійкий діапазон θ Î [0,25, 0,35], у якому алгоритм стабільно виділяє 9-11 компонентів незалежно від точного значення порогу. Охарактеризовано закономірності зміни обсягу вибіркового тестування системи залежно від характеру змін. Сукупно це дало змогу скоротити тривалість регресійного тестування системи від 59,7 до 90,7 % за значення коефіцієнта виявлення дефектів 1,0 в усіх розглянутих сценаріях. З'ясовано, що запропонований метод є незалежним від технологічного стеку та придатним для веборієнтованих систем, реалізованих на основі будь-якої платформи.
Завантаження
Посилання
Abgaz, Y., McCarren, A., Elger, P., Solan, D., Lapuz, N., Bivol, M., Jackson, G., Yilmaz, M., Buckley, J., & Clarke, P. (2023). Decomposition of Monolith Applications Into Microservices Architectures: A Systematic Review. IEEE Transactions on Software Engineering, 49(8), 4213–4242. https://doi.org/10.1109/TSE.2023.3287297
Elsner, D., Bertagnolli, D., Pretschner, A., & Klaus, R. (2022). Challenges in Regression Test Selection for End-to-End Testing of Microservice-Based Software Systems. In Proceedings of the 3rd ACM/IEEE International Conference on Automation of Software Test (AST 22) (pp. 93–103). ACM. https://doi.org/10.1145/3524481.3527217
Elsner, D., Wuersching, R., Schnappinger, M., Pretschner, A., Graber, M., Dammer, R., & Reimer, S. (2022). Build System Aware Multi-language Regression Test Selection in Continuous Integration. In Proceedings of the 44th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP 22) (pp. 87–96). ACM. https://doi.org/10.1145/3510457.3513078
Filippone, G., Mehmood, N. Q., Autili, M., Rossi, F., & Tivoli, M. (2023). From monolithic to microservice architecture: An automated approach based on graph clustering and combinatorial optimization. In Proceedings of the 2023 IEEE 20th International Conference on Software Architecture (ICSA) (pp. 47–57). IEEE. https://doi.org/10.1109/ICSA56044.2023.00013
Greca, R., Miranda, B., & Bertolino, A. (2023). State of Practical Applicability of Regression Testing Research: A Live Systematic Literature Review. ACM Computing Surveys, 55(13s), article ID 274. https://doi.org/10.1145/3579851
Hundsdorfer, S., Elsner, D., & Pretschner, A. (2023). DIRTS: Dependency Injection Aware Regression Test Selection. In Proceedings of the 2023 IEEE 16th International Conference on Software Testing, Verification and Validation (ICST 2023) (pp. 422–432). IEEE. https://doi.org/10.1109/ICST57152.2023.00046
Jin, W., Liu, T., Cai, Y., Kazman, R., Mo, R., & Zheng, Q. (2021). Service Candidate Identification from Monolithic Systems Based on Execution Traces. IEEE Transactions on Software Engineering, 47(5), 987–1007. https://doi.org/10.1109/TSE.2019.2910531
Nitin, V., Asthana, S., Ray, B., & Krishna, R. (2022). CARGO: AI-Guided Dependency Analysis for Migrating Monolithic Applications to Microservices Architecture. In Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering (ASE 22) (pp. 1–12). ACM. https://doi.org/10.1145/3551349.3556960
Oumoussa, I., Saidi, R., & Abumandour, W. (2024). Evolution of Microservices Identification in Monolith Decomposition: A Systematic Review. IEEE Access, 12, 21871–21902. https://doi.org/10.1109/ACCESS.2024.3365079
Peng, Z., Chen, T.-H., & Yang, J. (2022). Revisiting Test Impact Analysis in Continuous Testing From the Perspective of Code Dependencies. IEEE Transactions on Software Engineering, 48(6), 1979–1993. https://doi.org/10.1109/TSE.2020.3045914
Shahbaz, M. (2023). An Approach for Test Impact Analysis on the Integration Level in Java Programs. In: Yang, X.-S., Sherratt, R. S., Dey, N., & Joshi, A. (Eds.), Proceedings of Eighth International Congress on Information and Communication Technology (ICICT 2023). Lecture Notes in Networks and Systems, vol. 694 (pp. 171–188). Springer. https://doi.org/10.1007/978-981-99-3091-3_14
Sohn, J., & Papadakis, M. (2022). CEMENT: On the Use of Evolutionary Coupling Between Tests and Code Units. In Proceedings of the 2022 IEEE 33rd International Symposium on Software Reliability Engineering (ISSRE 2022) (pp. 133–144). IEEE. https://doi.org/10.1109/ISSRE55969.2022.00023
Su, R., & Li, X. (2024). Modular Monolith: Is This the Trend in Software Architecture? In Proceedings of the 1st International Workshop on New Trends in Software Architecture (SATrends 24) (article ID 4, 6 pages). ACM. https://doi.org/10.1145/3643657.3643911
Wang, Y., Bornais, S., & Rubin, J. (2024). Microservice Decomposition Techniques: An Independent Tool Comparison. In Proceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering (ASE 24) (pp. 1295–1307). ACM. https://doi.org/10.1145/3691620.3695504
Yoo, S., & Harman, M. (2012). Regression testing minimization, selection and prioritization: A survey. Software Testing, Verification and Reliability, 22(2), 67–120. https://doi.org/10.1002/stv.430
Zhong, C., Zhang, H., Li, C., Huang, H., & Feitosa, D. (2023). On measuring coupling between microservices. Journal of Systems and Software, 200, article ID 111670. https://doi.org/10.1016/j.jss.2023.111670

Ця робота ліцензується відповідно до Creative Commons Attribution 4.0 International License.



