Тема: Разработка программной системы для автоматической генерации модульных тестов на языке Python
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Постановка задач 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 представлены примеры модульных тестов, созданных с помощью реализованной программной системы.





