Тип работы:
Предмет:
Язык работы:


Разработка программной системы для автоматической генерации модульных тестов на языке Python

Работа №142219

Тип работы

Дипломные работы, ВКР

Предмет

программирование

Объем работы113
Год сдачи2023
Стоимость4700 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
30
Не подходит работа?

Узнай цену на написание


Введение 4
Постановка задач 6
1. Обзор предметной области 7
1.1. Вывод типов 10
1.1.1 Mypy 10
1.1.2 Pyright 10
1.1.3 Pyre 11
1.1.4 pytype 11
1.1.5 PyCharm 12
1.1.6 PYInfer и Type4Py 13
1.2. Генерация тестов 14
1.2.1 Pynguin 14
1.2.2 Auger 14
1.2.3 Atheris 14
1.2.4 Automated Support for Unit Test Generation 15
1.3. Сравнение существующих решений 16
1.3.1 Вывод типов 16
1.3.2 Генерация тестов 17
2. Презентация решения 19
2.1. Подготовка запроса 19
2.2. Вывод типов 20
2.3. Фаззинг 20
2.4. Исполнение кода 20
2.5. Генерация кода тестов 21
3. Детали реализации 22
3.1. Пользовательский интерфейс 22
3.2. Вывод типов 24
3.2.1 Анализ кода 24
3.2.2 Уточнение типов 24
3.3. Генерация значений 26
3.3.1 Управление процессом фаззинга 29
3.4. Исполнение кода 30
3.4.1 Механизм исполнения 31
3.4.2 Сериализация данных 32
3.5. Генерация кода тестов 35
3.5.1 Сравнения объектов 35
4. Заключительный раздел с основными результатами 37
4.1. Результаты 37
4.2. Примеры применения проекта 41
4.2.1 Функция без аннотаций с условиями 41
4.2.2 Протокол 43
4.2.3 Функция с аннотациями 44
4.2.4 Метод класса 46
4.3. Развитие проекта 49
Выводы 50
Заключение 51
Список литературы 52


Тестирование программного обеспечения является не менее важной задачей, чем написание исходного кода проекта, так как позволяет проверить корректность работы созданного продукта и обнаружить проблемы до перехода в массовое использование. Кроме этого модульные тесты могут применяться при регрессионном тестировании для обнаружения ошибок в уже протестированных участках исходного кода после его изменения разработчиками. Также наличие модульных тестов может стать значимым дополнением к документации, так как тесты могут показать способы применения той или иной функциональности, это может помочь как новым разработчиками в команде, так и внешним пользователям исходного кода. Важным преимуществом модульных тестов является то, что любой разработчик сможет запустить без использования специального окружения, а за счет этого время исполнения будет значительно меньше, чем интеграционных и системных тестов.
Процесс написания модульных тестов занимает достаточно большое количество времени, часто объем кода тестов больше объема тестируемого кода, поэтому в различных случаях проекты могут не содержать модульные тесты.
Для одного из самых популярных языков программирования Python[1, 2, 3] проблема отсутствия тестов становится еще более актуальной, так как он часто используется начинающими программистами, аналитиками данных и учеными, которые могут не иметь большого опыта в разработке программного обеспечения и допускать много ошибок.
Помочь решить проблему нехватки или отсутствия модульных тестов может стать система, способная автоматически генерировать модульные тесты для существующего кода, с помощью которых можно будет выявлять возможные места ошибок или использовать для регрессионного тестирования.
В данной работе изучаются существующие технологии связанные с автоматической генерацией модульных тестов для языка программирования Python и представляется решение в виде программной системы, поддерживающей полный цикл создания тестов, в том числе в виде расширения для популярной интегрированной среды разработки IntelliJ IDEA[5].
Структура работы. В разделе 1 осуществлен разбор предметной области и альтернативных решений данной проблемы. В разделе 2 представлена реализованная программная система. В разделе 3 рассказывается о технических деталях ее реализации. В разделе 4.1 представлена сводная статистика возможностей данного инструмента. В разделе 4.2 представлены примеры модульных тестов, созданных с помощью реализованной программной системы.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


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


[1] TIOBE Index. URL: https://www.tiobe.com/tiobe-index/ (дата обр. 15.05.2023).
[2] PYPL PopularitY of Programming Language. URL: https: //pypl.github.io/PYPL.html (дата обр. 15.05.2023).
[3] GitHub statistic page. URL: https://madnight.github.io/githut/#/ pull_requests/2023/1 (дата обр. 16.05.2023).
[4] Unit Test Bot for Java. URL: https://github.com/UnitTestBot/ UTBotJava (дата обр. 15.05.2023).
[5] IDE IntelliJ IDEA. URL: https://www.jetbrains.com/idea/ (дата обр. 15.05.2023).
[6] JetBrains Plugins Marketplace. URL: https://www.jetbrains.com/store/ plugins/#commercial (дата обр. 15.05.2023).
[7] Unittest. URL: https://docs.python.org/3/library/unittest.html (дата обр. 15.05.2023).
[8] UnitTest. Статья Мартина Фаулера. URL: https://martinfowler.com/ bliki/UnitTest.html#footnote-dev-write (дата обр. 15.05.2023).
[9] Valentin J.M. Manes, HyungSeok Han, Choongwoo Han, Sang Kil Cha, Manuel Egele, Edward J. Schwartz, Maverick Woo. The Art, Science, and Engineering of Fuzzing: A Survey., ACM Computing Surveys, 2019.
[10] Unit Test Bot for C/C++. URL: https://github.com/UnitTestBot/ UTBotCpp (дата обр. 15.05.2023).
[11] Randoop for Java and C#. URL: https://randoop.github.io/randoop/ (дата обр. 15.05.2023).
[12] IntelliTest for C#. URL: https://learn.microsoft.com/en-us/ visualstudio/test/intellitest-manual/?view=vs-2022 (дата обр. 15.05.2023).
[13] Open-access article archive. URL: https://arxiv.org/ (дата обр. 15.05.2023).
[14] Function Annotations in Python. URL: https://peps.python.org/pep- 3107/ (дата обр. 15.05.2023).
[15] Mypy. URL: https://mypy-lang.org (дата обр. 15.05.2023)...67



Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ