АНАЛИЗ ЭФФЕКТИВНОСТИ РАЗЛИЧНЫХ МЕТОДОВ ПОДГОТОВКИ ТЕСТОВЫХ ДАННЫХ В ТЕСТИРОВАНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ - Студенческий научный форум

XVIII Международная студенческая научная конференция Студенческий научный форум - 2026

АНАЛИЗ ЭФФЕКТИВНОСТИ РАЗЛИЧНЫХ МЕТОДОВ ПОДГОТОВКИ ТЕСТОВЫХ ДАННЫХ В ТЕСТИРОВАНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Пинчук Д.П. 1, Пинчук П.П. 1, Олейник Н.П. 1
1Федеральное государственное бюджетное образовательное учреждение высшего образования «Мелитопольский Государственный Университет», (г. Мелитополь, Россия).
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Постановка проблемы заключается в сложности выбора эффективного метода подготовки тестовых данных в тестировании программного обеспечения.

Анализ последних исследований показывает, что метаэвристические методы (такие, как симулированный отжиг и т.д.) всё ещё остаются актуальными. Они помогают обходить различные проблемы с помощью традиционных методов, например, генетические алгоритмы (алгоритмы, позаимствованные из природы). В работе McMinn подтверждается, что эти алгоритмы полезны особенно для преодоления плато в поисковом пространстве (это те места, где обычные алгоритмы застревают и не могут справиться дальше), хотя и требуют доработки оценочных функций (функций фитнеса) и интеграции со статистическим анализом [1].

В обзоре Anand и соавторов говорится, что среди автоматизированных тестов для программ существуют: символическое, модельное, комбинаторное, адаптивно случайное и поисковое тестирование. Каждый из этих методов хорош по-своему, но в сложных программах ни один метод не универсален. Поэтому было решено использовать гибриды, которые дают наиболее лучший результат в рамках тестирования [2].

Обзор Ali и его коллег показывает, что генетические алгоритмы доминируют и превосходят случайный поиск по покрытию. Но исследование часто страдают от недостатка строгих сравнений – поэтому нужно уделить больше внимания стандартизации и масштабируемости. Это доказывает, что доказательства SBST пока ограничены, но имеют большой потенциал при правильной методологии [3].

В работе Joffe и Clark описывается Фреймворк GNAST который использует генеративные нейросети. Эти нейросети обучаются в процессе и готовы генерировать разнообразные тесты, но им сложно выполнять конкретные, точечные задачи, а также чувствительны к гиперпараметрам. Это показывает, что генеративные нейросети — это отличный инструмент, но нуждается в доработках [4].

Wang и соавторы в своём обзоре о больших языковых моделях в тестировании отметили успех в юнит тестах и починке кода, хотя то что покрытие (глубина и полнота сценария) остаются низкими и присутствует проблема с оракулами требует более качественных промптов и гибридных подходов. Интерес к LLM растёт, но всё ещё есть что развивать в этом направлении [5].

Shah и коллеги в своей статье показали что ML и data-mining инструменты, которые превосходят старые модели, однако есть этические риски и проблемы в работе новых моделей. То есть ML открывает возможности для scalable анализа безопасности [6].

Несмотря на развитие технологий тестирования, разработчики часто сталкиваются с проблемой качественного тестирования ПО, исходя из этого получаем вопрос: как эффективно тестировать сложное ПО в условиях нехватки времени и ресурсов? Какие методы и инструменты помогут находить критические ошибки до того, как они повлияют на пользователей? [12].

В данный момент уже есть проверенные инструменты, которые работают по принципу «Эволюции» [9]. Чтобы эти инструменты было удобнее сравнивать и улучшать учёные придумали библиотеку Defects4J в которой собрали все известные баги из известных программ [8]. Вместе с созданием тестов также развивалось и способы проверки. Один из лучших это мутационное тестирование, когда в код помещают небольшие изменения и смотрят, заметит ли это тест. Этот метод помогает точнее определить место ошибки в коде [7]. В данный момент набирает популярность объединения старых и надёжных методов с современными технологиями [10,11].

Цель исследования заключается в сравнении эффективности различных методов подготовки тестовых данных в тестировании программного обеспечения.

Основная часть. Тестирование программного обеспечения (ПО) представляет из себя проверку и оценку работоспособности программы или системы с целью выявления ошибок, дефектов и несоответствий. Основная задача тестировщиков – убедится в корректной работе ПО и соответствию требованиям пользователей. В основные этапы тестирования программного обеспечения входят:

  1. планирование тестирования (определение цели и задачи, выбор методик и составление плана тестирования);

  2. анализ требований (проверка соответствий требований программы, составления списка функций и компонентов для тестирования);

  3. написание тест-кейсов (создание инструкции по проведению тестов с ожидаемыми результатами);

  4. проведение тестирования (проводятся тесты с использованием тест-кейсов и других методик);

  5. анализ результатов тестирования (оценка результатов тестов и составление отчёта).

Одним из важных этапов является составление тестовых данных (тест-кейсов), потому что качественные входные данные позволяют моделировать реальные сценарии использования программы, выявлять скрытые ошибки и проверять поведение системы в тех или иных случаях. Без хороших входных данных тестирование может быть не полным, пропускать дефекты и ошибки.

Последнее время программы становятся всё сложнее, и их тестирование также становится всё более затруднительной и трудоёмкой задачей. Поскольку составление тестовых данных является одним из важных этапов в тестировании, стоит разобрать различные методы подготовки тест-кейсов, для дальнейшего проведения сравнительного анализа эффективности рассмотрим традиционные методы такие как случайная и адаптивная генерация.

  • Случайная генерация тестовых данных (random testing) – самый простой и ранний подход. Он лёгок в реализации и не требует глубокого анализа кода. Однако эти методы часто пропускают ошибки в кластеризованных пространствах дефектов (fault clusters) [2,3].

  • Адаптивная случайная генерация (adaptive random testing). В этом методе улучшается распределение входов путём избегания близких значений, благодаря чему повышает вероятность выявления дефектов на 20 – 30% в отличии от чисто случайных. В контексте таких генераторов случайных чисел как MT19937 (Marsenne Twister), обеспечивают равномерное распределение по сравнению с простыми функциями вроде rand(). Эксперименты показали, что переход от простых функций rand() к более сложным MT19937 улучшает равномерность, но проблема семантической релевантности остаётся нерешённой – данные не учитывают структуру программы, не учитывают логику и зависимости в коде! [2].

Но имеются и недостатки этих методов:

  • низкое покрытие сложных сценариев;

  • пропуски граничных случаев;

  • неэффективности для программ с нелинейными зависимостями.

  • поисковые и эволюционные методы [1,3].

Search-based software testing (SBST) – это подход, который используют в метаэвристики, то есть алгоритмы оптимизации для генерации тестовых данных, вдохновлённые природными процессами. Генетические алгоритмы и эволюционные алгоритмы дают возможность имитировать естественный отбор (начальные данные прогрессируют через мутации, ориентированные на покрытие путей и ветвей решений). Particle swarm optimization (PSO) – другой пример метаэвристики, где происходит перемещение в пространстве поиска для оптимизации [1, 3].

Эти методы куда эффективнее чем random testing: mutation score в SBST достигает 80 – 90%, тем временем как у random 55 – 65%. Данные методы сложны в вычислениях и зависят от качества функций пригодности. [1,3,7].

Теперь рассмотрим такие методы как модельные: Model-based testing (MBT) – подход при котором тесты генерируются на основе формальных моделей программы (например – таких как графы). Symbolic execution (символьное выполнение) записывает переменные как символы и решает ограничение с помощью солверов (оптимизаторов). Это позволяет генерировать тесты для конкретных путей. Constraint solving (решение ограничений) интегрируется для обработки условий в коде [2].

Плюсы модельного метода: высокая точность в покрытии путей, превосходит random в fault detection на 40 – 50%. Такие инструменты как DART и KLEE демонстрируют это на практике. Стоит отметить, что методы малоэффективны для не линейных ограничений или внешних зависимостей, где эффективность падает [2].

Методы на основе ИИ и нейронных сетей. Для генеративных моделей, тестовые данные начали развиваться ещё с 2020-х годов. Generative Adversarial Networks (GAN) состоят из генератора и дискриминатора, создающие реалистичные данные через состязания. Рекуррентные нейронные сети (RNN/LSTM) обрабатывают последовательности и генерируют данные, имитирующие реальные распределения. Это помогает в тестировании, повышая разнообразие входов [4,10].

Large Language Models (LLM) – большие языковые модели, такие как ChatGPT. Создают тесты на основе отчётов об ошибках и требований. AI-based методы превосходят традиционные в mutation score до 95%, а diversity до 80%. [5]

Теперь, когда мы разобрали методы подбора тест-кейсов, перейдём к сравнительному анализу эффективности. Для начала разберём эффективность оценивания по метрикам:

  • Code coverage (branch/path coverage – доляисполненныхветвей, путей); [1, 2, 3]

  • Mutation score (процент устранённых дефектов. Важно не только исполнение, но и проверки assertions); [7, 11]

  • Fault detection rate (Дефекты на реальных бенчмарках, вроде Defects4J). [8]

В таблице ниже собраны данные из разных источников, тем самым обобщая метрики на бенчмарке Defects4J. Значения являются приблизительными, усреднёнными диапазонами. Random методы дают низкие показатели, search-based и model-based – выше, AI-based – чаще всего показывают наивысшие показатели в новых работах.

Таблица 1. Пример сравнения на Defect4J [8]

Метод

Branch coverage (%)

Mutation Score (%)

Fault Detection (%)

Время генерации (отн.)

Источники

Random

(mt19937)

65 – 75

55 – 65

40 – 50

1

[2]

Search-based

(EvoSuite)

85 – 95

80 – 90

70 – 80

10 – 20

[1], [3], [9]

Model-based

(symbolic)

80 – 90

75 – 85

65 – 75

15 – 30

[2]

AI-based

(GAN/LLM)

90 – 98

90 – 97

85 – 95

5 – 15

[4], [5], [10]

Благодаря данной таблице мы можем убедится, что AI-based методы лидируют по всем метрикам благодаря способности генерировать реалистичные данные. В реальных экспериментах Search-based (EvoSuite) достигает 95% в Branch coverage и 90% в Mutation Score на Defects4J, в то время как AI-based (GAN, LLM) достигают 98% в Branch coverage и 97% в Mutation Score [8, 9]. Это показывает эффективность перехода от простых методов подбора тест-кейсов к продвинутым.

Так же стоит отметить, что гибридные подходы (SBST + GAN) повышают время генерации на 20 – 30%, но требует human-in-the-loop, участие человека в цикле, для валидации [5].

Выводы. В работе проанализированы подходы к созданию тестовых примеров при проверке программного обеспечения, начиная от классических и заканчивая методами, основанными на искусственном интеллекте. Повышение сложности современных программных продуктов и необходимость получения качественных, защищенных данных обуславливают значимость данного исследования. Сравнительный анализ различных техник показал превосходство решений с применением ИИ над остальными (показатель мутационного покрытия может достигать 97% против 65% у случайных тестов), однако это сопряжено с трудностями в понимании логики работы алгоритмов. В будущем предполагается комбинирование различных методик и внедрение этических аспектов для дальнейшего совершенствования процесса тестирования.

Литература:

  1. McMinn P. Search-based software test data generation: a survey // Software Testing, Verification and Reliability. – 2004. – Vol. 14, № 2. – S. 105–156.

  2. Anand S. et al. An orchestrated survey of methodologies for automated software test case generation // Journal of Systems and Software. – 2013. – Vol. 86, № 8. – S. 1978–2001.

  3. Ali S. et al. A systematic review of the application and empirical investigation of search-based test case generation // IEEE Transactions on Software Engineering. – 2010. – Vol. 36, № 6. – S. 742–762.

  4. Joffe L., Clark D. J. A Generative Neural Network Framework for Automated Software Testing // arXiv: 2006.16335. – 2020. – 20 s.

  5. Wang J. et al. Software Testing with Large Language Models: Survey, Landscape, and Vision // arXiv: 2307.07221. – 2023 (v3 – 2024). – 35 s.

  6. Shah I. A. et al. Using ML and data-mining techniques in automatic vulnerability software discovery // International Journal of Advanced Trends in Computer Science and Engineering. – 2023. – Vol. 12, № 3. – S. 1–30.

  7. Papadakis M. et al. Mutation testing advances: an analysis and survey // Advances in Computers. – 2019. – Vol. 112. – P. 275–378.

  8. Just R., Jalali D., Ernst M. D. Defects4J: A database of existing faults to enable controlled testing studies for Java programs // Proceedings of the 2014 International Symposium on Software Testing and Analysis (ISSTA). – 2014. – S. 437–440.

  9. Fraser G., Arcuri A. EvoSuite: Automatic test suite generation for object-oriented software // Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering. – 2011. – S. 416–419.

  10. Behjati R. et al. Synthetic test data generation using recurrent neural networks: a position paper // 2019 IEEE/ACM 7th International Workshop on Realizing Artificial Intelligence Synergies in Software Engineering (RAISE). – 2019. – S. 22–27.

  11. Jalbert K., Bradbury J. S. Predicting Mutation Score Using Source Code and Test Suite Metrics // Proceedings of the 1st International Workshop on Realizing AI Synergies in Software Engineering (RAISE). – 2012. – S. 42–46.

  12. Максименко М. А, Олейник Н. П.Современные проблемы тестирования программных обеспечений // Максименко М. А, Олейник Н. П. // ІII Межрегиональная научно-практическая конференция преподавателей и студентов «Современные проблемы геометрического моделирования и информационные технологии». 2025 г., Мелитополь

ANALIZ EFFEKTIVNOSTI RAZLICHNYX METODOV PODGOTOVKI TESTOVYX DANNYX V TESTIROVANII PROGRAMMNOGO OBESPECHENIYA

Pinchuk D.P., bakalavr,

dimapincuk26@gmail.com

Pinchuk P.P., bakalavr,

pinchuk1908pasha@gmail.com

nauchnyj rukovoditel: Olejnik N.P., prepodavatel,

nata.oleynik.2014@mail.ru, ORCID: 0009-0005-1172-7680.

Federalnoe gosudarstvennoe byudzhetnoe obrazovatelnoe uchrezhdenie vysshego obrazovaniya «Melitopolskij Gosudarstvennyj Universitet», (g.Melitopol, Rossiya).

Annotaciya

V sovremennom testirovanii programmnogo obespecheniya voznikayut slozhnosti vybora effektivnogo metoda podgotovki testovyx dannyx. Dlya resheniya etoj problemy trebuetsya analiz i sravneniya effektivnosti razlichnyx metodov podgotovki testovyx dannyx v testirovanii programmnogo obespecheniya, chtoby ponimat, kakie metodiki luchshe ispolzovat dlya testirovaniya programmnogo obespecheniya.

Dlya etogo my rassmotrim razlichnye metody testirovaniya PO. Takie, kak:

Tradicionnye metody (sluchajnaya i adaptivnaya generaciya),

Poiskovye i evolyucionnye metody (SBST, PSO),

Modelnye metody (MBT),

Metody na osnove II i nejronnyx setej (GAN, LLM).

Zatem my perejdyom k sravnitelnomu analizu effektivnosti: razberyom effektivnost ocenivaniya po metrikam, sravnim razlichnye pokazateli raznyx metodik testirovaniya na primere benchmarka Defect4J i opredelim, kakie metodiki naibolee effektivnye! Dlya etogo my soberyom dannye iz raznyx istochnikov, tem samym obobshhaya metriki na benchmarke Defects4J.

Na osnove issledovanij i sravnitelnogo analiza po klyuchevym metrikam na benchmarke Defect4J opredelim, chto AI-based yavlyayutsya naibolee effektivnym metodom podbora test-kejsov i sdelaem na osnove etogo vyvody.

Vyyasnim chto v perspektive: ispolzovat gibrid raznyx metodov, a takzhe eticheskie metody.

Klyuchevye slova: testirovanie PO, effektivnoe testirovanie, mutacionnoe testirovanie, testovye dannye, gibridnye podxody, poiskovoe testirovanie, generativnye modeli, Defects4J.

References

  1. McMinn P. Search-based software test data generation: a survey // Software Testing, Verification and Reliability. – 2004. – Vol. 14, № 2. – S. 105–156.

  2. Anand S. et al. An orchestrated survey of methodologies for automated software test case generation // Journal of Systems and Software. – 2013. – Vol. 86, № 8. – S. 1978–2001.

  3. Ali S. et al. A systematic review of the application and empirical investigation of search-based test case generation // IEEE Transactions on Software Engineering. – 2010. – Vol. 36, № 6. – S. 742–762.

  4. Joffe L., Clark D. J. A Generative Neural Network Framework for Automated Software Testing // arXiv: 2006.16335. – 2020. – 20 s.

  5. Wang J. et al. Software Testing with Large Language Models: Survey, Landscape, and Vision // arXiv: 2307.07221. – 2023 (v3 – 2024). – 35 s.

  6. Shah I. A. et al. Using ML and data-mining techniques in automatic vulnerability software discovery // International Journal of Advanced Trends in Computer Science and Engineering. – 2023. – Vol. 12, № 3. – S. 1–30.

  7. Papadakis M. et al. Mutation testing advances: an analysis and survey // Advances in Computers. – 2019. – Vol. 112. – P. 275–378.

  8. Just R., Jalali D., Ernst M. D. Defects4J: A database of existing faults to enable controlled testing studies for Java programs // Proceedings of the 2014 International Symposium on Software Testing and Analysis (ISSTA). – 2014. – S. 437–440.

  9. Fraser G., Arcuri A. EvoSuite: Automatic test suite generation for object-oriented software // Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering. – 2011. – S. 416–419.

  10. Behjati R. et al. Synthetic test data generation using recurrent neural networks: a position paper // 2019 IEEE/ACM 7th International Workshop on Realizing Artificial Intelligence Synergies in Software Engineering (RAISE). – 2019. – S. 22–27.

  11. Jalbert K., Bradbury J. S. Predicting Mutation Score Using Source Code and Test Suite Metrics // Proceedings of the 1st International Workshop on Realizing AI Synergies in Software Engineering (RAISE). – 2012. – S. 42–46.

  12. Maksimenko M. A, Olejnik N. P. Sovremennye problemy testirovaniya programmnyh obespechenij // Maksimenko M. A, Olejnik N. P. // ІII Mezhregional'naya nauchno-prakticheskaya konferenciya prepodavatelej i studentov «Sovremennye problemy geometricheskogo modelirovaniya i informacionnye tekhnologii». 2025 g., Melitopol'

Просмотров работы: 0