Оцінювання впливу складності розгалужень 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

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



