Оцінювання впливу складності розгалужень C#-коду на тривалість підготовки тестів вручну та засобами штучного інтелекту

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

Анотація

Виявлено практичну потребу в кількісному оцінюванні того, як складність розгалужень програмного коду впливає на трудомісткість підготовки тестів у C#-проєктах. Встановлено, що для такого оцінювання недостатньо враховувати тільки розмір програмного файлу або факт наявності складних тестів, оскільки реальні витрати часу та ресурсів на тестування C#-коду залежать від кількості альтернативних шляхів його виконання, глибини вкладеності умовних конструкцій, кількості методів тестування, обсягу тестового коду та кількості його перевірок. З'ясовано, що складність розгалужень C#-коду безпосередньо пов'язана з кількістю сценаріїв його виконання, які потрібно продумати під час модульного тестування коду: кожна додаткова умова, цикл або вкладений блок збільшує кількість ситуацій, для яких потрібно підібрати вхідні дані, визначити очікуваний результат і сформулювати перевірку. Оцінено тривалість підготовки тестів за двома підходами: ручним написанням і створенням тестів із використанням інструментів штучного інтелекту (ШІ). Охарактеризовано модель підготовки тестів вручну, згідно з яким тривалість їх розроблення залежить від кількості методів тестування, рядків тестового коду та вартості підготовки одного тесту. Охарактеризовано модель використання засобів ШІ, що додатково враховує тривалість формулювання запиту, уточнення контексту, генерування тестового коду, рев'ю, пошук граничних випадків і виправлення некоректних його перевірок. Встановлено, що перехід від низького до дуже високого рівня розгалуженості програмного коду супроводжується збільшенням орієнтовної тривалості ручної підготовки тестів приблизно від 20 до 159 хв, тобто майже у вісім разів. Виявлено, що застосування засобів ШІ скорочує тривалість підготовки тестів у всіх групах складності програмного коду, однак цей ефект зменшується зі зростанням складності коду: для простого коду економія часу становить близько 60 %, а для дуже складного – близько 35 %. З'ясовано, що причина такого зменшення часу полягає в перенесенні частини роботи з підготовки тестів на перевірку логіки C#-коду, коректності його тестових перевірок, відповідності бізнес-правилам і повноти сценаріїв його виконання. Практична цінність проведеного дослідження полягає в тому, що показники складності розгалужень C#-коду можна використовувати для планування процесу його тестування, оцінювання QA-завдань, пріоритезації рефакторингу програмного коду та визначення його ділянок, де ШІ є корисним допоміжним інструментом, але не може замінити експертне оцінювання розробника.

Завантаження

Дані завантаження ще не доступні.

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

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

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

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

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

Посилання

Ammann, P., & Offutt, J. (2016). Introduction to software testing (2nd ed.). Cambridge University Press. URL: https://www.cambridge.org/highereducation/books/introduction-to-software-testing/9D17AF6FA69D6C97E7AAB1239AFA5BAE

Andrzejewski, M., Dubicka, N., Podolak, J., Kowal, M., & Siłka, J. (2025). Automated test generation using large language models. Data, 10(10), article number 156. https://doi.org/10.3390/data10100156

Daka, E., & Fraser, G. (2014). A survey on unit testing practices and problems. In 2014 IEEE 25th International Symposium on Software Reliability Engineering (pp. 201–211). IEEE. https://doi.org/10.1109/ISSRE.2014.11

Dakhel, A. M., Majdinasab, V., Nikanjam, A., Khomh, F., Desmarais, M. C., & Jiang, Z. M. (2023). GitHub Copilot AI pair programmer: Asset or liability? Journal of Systems and Software, 203, article ID 111734. https://doi.org/10.1016/j.jss.2023.111734

Fraser, G., & Arcuri, A. (2011). EvoSuite: Automatic test suite generation for object-oriented software. In Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering (pp. 416–419). Association for Computing Machinery. https://doi.org/10.1145/2025113.2025179

Imran, M., Shang, W., & Hassan, A. E. (2025). Is code coverage of performance tests related to source code features? An empirical study on open-source Java systems. Empirical Software Engineering. https://doi.org/10.1007/s10664-025-10712-3

International Organization for Standardization. (2023). ISO/IEC 25010:2023 Systems and software engineering – Systems and software quality requirements and evaluation (SQuaRE) – Product quality model. URL: https://www.iso.org/standard/78176.html

Lops, A., Narducci, F., Ragone, A., Trizio, M., & Bartolini, C. (2024). A system for automated unit test generation using large language models and assessment of generated test suites. arXiv. https://doi.org/10.48550/arXiv.2408.07846

Martin, R. C. (2008). Clean code: A handbook of agile software craftsmanship. Prentice Hall. URL: https://www.pearson.de/clean-code-a-handbook-of-agile-software-craftsmanship-9780132350884

McCabe, T. J. (1976). A complexity measure. IEEE Transactions on Software Engineering, SE-2(4), 308–320. https://doi.org/10.1109/TSE.1976.233837

Miranda, C., Zaidman, A., & Panichella, A. (2025). Test co-evolution in software projects: A large-scale empirical study. Journal of Software: Evolution and Process. https://doi.org/10.1002/smr.70035

Myers, G. J., Sandler, C., & Badgett, T. (2011). The art of software testing (3rd ed.). John Wiley & Sons. URL: https://www.wiley.com/en-us/The+Art+of+Software+Testing%2C+3rd+Edition-p-9781118031964

Peng, S., Kalliamvakou, E., Cihon, P., & Demirer, M. (2023). The impact of AI on developer productivity: Evidence from GitHub Copilot. arXiv. https://doi.org/10.48550/arXiv.2302.06590

Schäfer, M., Nadi, S., Eghbali, A., & Tip, F. (2024). An empirical evaluation of using large language models for automated unit test generation. IEEE Transactions on Software Engineering, 50(1), 85–105. https://doi.org/10.1109/TSE.2023.3334955

Shang, Y., Zhang, Q., Fang, C., Gu, S., Zhou, J., & Chen, Z. (2024). A large-scale empirical study on fine-tuning large language models for unit testing. arXiv. https://doi.org/10.48550/arXiv.2412.16620

Siddiq, M. L., Santos, J. C. S., Tanvir, R. H., Ulfat, N., Al Rifat, F., & Lopes, V. C. (2023). Using large language models to generate JUnit tests: An empirical study. arXiv. https://doi.org/10.48550/arXiv.2305.00418

Wang, J., Huang, Y., Chen, C., Liu, Z., Wang, S., & Wang, Q. (2024). Software testing with large language models: Survey, landscape, and vision. IEEE Transactions on Software Engineering, 50(4), 911–936. https://doi.org/10.1109/TSE.2024.3368208

Wei, Y., Meyer, B., & Oriol, M. (2012). Is branch coverage a good measure of testing effectiveness? In Empirical software engineering and verification (pp. 194–212). Springer. https://doi.org/10.1007/978-3-642-25231-0_5

Опубліковано
2026-09-29
Як цитувати
Сенів, М. М., & Іншин, В. В. (2026). Оцінювання впливу складності розгалужень C#-коду на тривалість підготовки тестів вручну та засобами штучного інтелекту. Scientific Bulletin of UNFU, 36(4), 36–43. https://doi.org/10.36930/40360404
Розділ
Інженерія програмного забезпечення

Статті цього автора (авторів), які найбільше читають