Построение и выполнение тестов



Выполнение всех тестов для курсового проекта необходимо использовать утилиту manage.py test. Чтобы обратиться к какому – то определенному приложению или проверки теста, необходимо использовать python manage.py test <application_name>.

Хочется отметить, что в тестах Django версии 1.7 и выше – это то, что они не используют настоящую базу данных. Для тестов Django создается в оперативной памяти база данных специально для тестов, а поля в ней заполняются теми данными, которые были использованы в тестах [8].

Запустим тесты во всем приложении:

C:\Car_rental_project>python manage.py test

Creating test database for alias 'default'...

..............

----------------------------------------------------------------------

Ran 12 tests in 25.084s

 

OK

Destroying test database for alias 'default'..Затраченное время: 00:00:29.935

 

Из результатов запуска тестов видно, что все тесты, которых было запущено 12, прошли успешно.

Покрытие кода

Покрытие кода является важной метрикой для обеспечения качества тестируемого приложения, особенно если речь о проектах со сложной логикой и большим объемом кода. Анализ покрытия кода выполняется с помощью специального инструментария, который позволяет проследить в какие строки, ветви и т.д. кода, были вхождения во время работы автотестов. Наиболее известные инструменты для проведения измерения покрытия кода: AQTime, Bounds Checker, Bullseye Coverage, Coverage Meter, Clover, NCover, IBM Rational PurifyPlus, Intel Compiler, Intel Code Coverage Tool Prototype, JetBrains. С помощью анализа покрытия кода можно оценить плотность покрытия авто-тестами исполняемого кода тестируемого приложения (можно ответить на вопрос «какой объем тестирования мы (наши автотесты) выполняем?»). При детальном анализе результатов покрытия кода автотестами можно оценить покрытие отдельных компонентов системы (т.е. можно ответить на вопросы: что и в каком объеме мы тестируем?, в каких местах нужно оптимизировать покрытие?, какие места системы не проверяются тестами? и т.д.). Таким образом, зная данную метрику, станет ясно для каких тестовых случаев нужно создать новые тесты, или убрать дублирующие тесты. Данные мероприятия помогут увеличить значение метрики Code Coverage, что в свою очередь должно повысить качество кода и качество тестируемого приложения в целом. Естественно, чем выше показатель данной метрики – тем лучше, однако уже хорошо если у вас покрыты тестами наиболее сложные и важные фрагменты кода.

Различают несколько способов измерения покрытия кода. В Википедии представлены следующие определения:

  • Покрытие операторов – каждая ли строка исходного кода была выполнена и протестирована?;
  • Покрытие условий – каждая ли точка решения (вычисления истинно ли или ложно выражение) была выполнена и протестирована?;
  • Покрытие путей – все ли возможные пути через заданную часть кода были выполнены и протестированы?;
  • Покрытие функций – каждая ли функция программы была выполнена?;
  • Покрытие вход/выход – все ли вызовы функций и возвраты из них были выполнены? [9].

Jenkins CI (о нем будет рассказано в разделе «Непрерывная интеграция») позволяет оценить степень покрытия кода тестами.

Запуск приложения для тестирования

Приложение запускается на сервере разработки (IP 127.0.0.1:8000). Cервер этот предназначен только для непосредственно для разработки нашего приложения. Для него не требуется много ресурсов.

Сервер запускается, как раньше сказано на 127.0.0.1:8000. Запуск и отладка проекта производится на локальном тестовом сервере. Который предназначен для разработки и выявления правильности работы приложения, отладки кода программы, тестирования пользовательского интерфейса.

Успешность тестирования также позволяет оценить вышеупомянутый сервис Jenkins CI.

Непрерывная интеграция

Непрерывная интеграция (CI, англ. Continuous Integration) – это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.

Преимущества

· проблемы интеграции выявляются и исправляются быстро, что оказывается дешевле;

· немедленный прогон модульных тестов для свежих изменений;

· постоянное наличие текущей стабильной версии вместе с продуктами сборок – для тестирования, демонстрации, и т. п.

· немедленный эффект от неполного или неработающего кода приучает разработчиков к работе в итеративном режиме с более коротким циклом.

Недостатки

· затраты на поддержку работы непрерывной интеграции;

· потенциальная необходимость в выделенном сервере под нужды непрерывной интеграции;

· немедленный эффект от неполного или неработающего кода отучает разработчиков от выполнения периодических резервных включений кода в репозиторий [10].

Непрерывная интеграция является одним из основных приёмов экстремального программирования.

В качестве системы непрерывной интеграции выбран сервис Jenkins CI, который поддерживается системой контроля версий на бесплатном (для публичных репозиториев) хостинге GitHub. Jenkins CI – это распределенный веб сервис для сборки и тестирования проектов по разработке программного обеспечения на более чем 20-ти языках программирования, использующих GitHub в качестве хостинга исходного кода.

После установки Jenkins запустится и будет слушать соединения на дефолтном порту 8080. Для интеграции тестов django с сервером Jenkins будем использовать пакет django-jenkins. Пакет генерирует отчёты в xml-формате по всем выполненным тестам, плюс генерирует отчёты статических анализаторов кода. Эти отчёты затем обрабатываются сервером Jenkins.

 

Установка:

pip install django-jenkins

pip install pep8

pip install pyflakes

pip install pylint


Добавляем настройки для нашего проекта:

INSTALLED_APPS += ('django_jenkins',)

JENKINS_TASKS = (

            'django_jenkins.tasks.run_pylint',

       'django_jenkins.tasks.run_pep8', 

'django_jenkins.tasks.run_pyflakes',

'django_jenkins.tasks.with_coverage',

'django_jenkins.tasks.django_tests',

)

 

Теперь появилась команда manage . py jenkins, которая будет выполнять тесты и создавать отчёты для Jenkins.

Для интеграции проекта нужно перейти на сервер Jenkins и создать новый проект:

 

New Job -> Build a free-style software project

 

 Рис. 4.1 Создание сборки Jenkins

 

Папка requirements.txt содержит номера версий фреймворков, скриптов и т. д.

Для синхронизации репозитория проекта на GitHub с сервисом Jenkins CI необходимо при создании проекта указать адрес проекта на Github во вкладке Source Code Management.

 

Рис. 4.2 Синхронизация проекта с Github

 

Добавляем выполнение команды из django-jenkins (Add build step -> execute shell):

 

Рис. 4.3 Настройка сборки проекта из командной строки

 

Настраиваем email –уведомления:

 

Рис. 4.4 Настройка e-mail уведомления

 

Настраиваем проверку SCM на наличие изменений раз в полчаса:

 

Рис. 4.5 Настройка сборки проекта раз в час

 

Таким образом, настройка сервиса Jenkins CI прошла успешна, сборки осуществляются раз в полчаса, и при возникновении конфликтов сообщение отсылается на указанный адрес администрации сайта [11].


 

ДОКУМЕНТАЦИЯ

Назначение программы

Разработанный проект ООО «Tomsk-Car-Rent» предназначен для оформления аренды автомобиля для своих нужд.

В частности, данный сайт позволяет:

- Добавить автомобиль в свою персональную коллекцию;

- Просматривать информацию различных автомобилей;

- Найти необходимый автомобиль;

- Взять в аренду интересующий автомобиль;

- Просмотреть список своих аренд.

- Отменить аренду, если она ещё не началась;

Сайт фирмы ООО «Tomsk-Car-Rent» рассчитан на людей, имеющих доступ в интернет и желающих арендовать автомобиль быстро и удобно.

Условия запуска программы

Для пользования сайтом пользователю необходимо иметь персональный компьютер с возможностью выхода в интернет со скоростью не менее 256 КБ/с. Также необходим установленный браузер и устройство ввода.

Выполнение программы

Сервис выполняет следующие функции:

Регистрация пользователя

 Для начала работы с сервисом необходимо зарегистрироваться. Для этого достаточно нажать на кнопку зарегистрироваться в нижней левой части меню. Для регистрации необходимо заполнить поля Email и пароля (рис. 5.1).

 

Рис. 5.1 Форма регистрации пользователя

 

Авторизация пользователя

Для авторизации необходимо кликнуть по кнопке «Войти» в нижней левой части меню на любой страницы. Откроется страница с полями: Email и Пароль, который необходимо заполнить. Общий вид страницы авторизации представлен на рис. 5.2.

 

Рис. 5.2 Форма авторизации пользователя

 

Если введённые данные о пользователе корректны, то авторизация завершается и пользователь возвращается на главную страницу.

Редактирование профиля

На страницу профиля можно перейти через панель пользователя. Страница пользователя содержит информацию, введённую пользователем при регистрации. Её можно отредактировать, нажав на кнопку «Редактировать» (рис. 5.3).

 

Рис 5.3 Профиль пользователя

 

После редактирования профиля вся изменённая информация будет сохранена. Форма редактирования профиля представлена на рис. 5.4.

 

Рис. 5.4 Форма редактирования профиля

 

Смена пароля

Также в профиле можно сменить пароль. Это происходит при нажатии на кнопку «Сменить пароль». В форме необходимо ввести старый пароль и новый (рис. 5.5).

 

Рис. 5.5 Форма смены пароля

 

Добавления автомобиля

Добавить автомобиль в свою коллекцию можно через кнопку «Добавить машину» на панели пользователя. Форма добавления автомобиля представлена на рис. 5.6.

 

Рис. 5.6 Форма добавления автомобиля

 

После заполнения всех полей автомобиль будет добавлен в базу данных сайта.

Поиск автомобиля

Форма поиска автомобиля представлена на рис. 5.7.

 

 

Рис. 5.7 Форма поиска автомобиля

 

Клиент может выбрать модель автомобиля и указать год, чтобы получить список подходящих автомобилей. Так же пользователь может нажать на кнопку «Показать все машины», чтобы увидеть все автомобили, зарегистрированные на сайте (рис. 5.8).

 

Рис. 5.8 Форма представления всех автомобилей на сайте

 

Аренда автомобиля

Для того чтобы арендовать автомобиль, необходимо сначала выбрать автомобиль, нажав на его марку (рис. 5.9), которая приведет к подробному описанию автомобиля.

 

Рис. 5.9 Подробное описание автомобиля

 

На форме описания автомобиля необходимо нажать на кнопку «Арендовать», чтобы перейти на форму аренды (рис. 5.10).

 

Рис. 5.10 Аренда автомобиля

 

После заполнения полей аренда будет зарегистрирована на сайте.

Отмена аренда

Пользователь вправе отменить аренду, если она ещё не была начата. Для этого необходимо перейти в «Мои аренды» через кнопку на панели пользователя. Перед пользователем будет представлен список всех его аренд, и если аренда ещё не начата, то пользователь может нажать «Отменить» и аренда будет считаться несостоявшейся (рис. 5.11).

 

Рис. 5.11 Список аренд

 

Завершение аренды

Завершить начатую аренду может только владелец машины во избежание недоразумений. Для этого нужно в меню выбрать «Аренды моих машин» (рис. 5.12).

 

Рис. 5.12 Список аренд

 

Сообщения программы

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

Ошибки при регистрации

Если при регистрации пользователь указал разные пароли он будет об этом уведомлен (рис. 5.13). Также сообщение об ошибке может появиться при не заполнении полей формы.

 

Рис. 5.13 Сообщение о некорректной регистрации

Ошибки при авторизации

Если комбинация Email-Пароль была указана неверно, на странице появится оповещение об этом (рис. 5.14).

 

Рис. 5.14 Сообщение о некорректной авторизации

 

В качестве реализации сообщений пользователю была выполнена только проверка Email-Пароля. Как известно, сайт, программа или веб-приложение, в принципе, могут существовать и без них. Но как показала практика, пользователь не всегда может сам понять, что нужно изменить. Поэтому существуют такие своеобразные сообщения-подсказки.

Ошибки при смене пароля

При смене пароля сообщение о некорректном вводе данных может всплыть, если введен неправильно старый пароль (рис. 5.15) либо новый пароль не совпадает.

 

Рис. 5.15 Сообщение о некорректном вводе пароля

 

 

Ошибки при добавлении аренды

При добавлении аренды осуществлена проверка на вводимые даты. Дата начала аренды, также как и дата окончания, не могут быть меньше текущей даты. В свою очередь дата окончания аренды не может быть меньше даты начала (рис. 5.16).

 

Рис. 5.16 Сообщение о некорректном вводе дат при добавлении аренды

 


Дата добавления: 2019-03-09; просмотров: 442; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!