Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx53 / note - 7.docx
Скачиваний:
31
Добавлен:
01.08.2013
Размер:
457.93 Кб
Скачать
  1. Тестирование реализации управления пакетами

В ходе разработки использовалась методология TDD (разработка через тестирование).

Разработка через тестирование (англ. test-driven development, TDD) — техника разработки программного обеспечения, которая основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется код, который позволит пройти тест, и под конец проводится рефакторинг нового кода к соответствующим стандартам.

Тест — это процедура, которая позволяет либо подтвердить, либо опровергнуть работоспособность кода. Когда программист проверяет работоспособность разработанного им кода, он выполняет тестирование вручную. В данном контексте тест состоит из двух этапов: стимулирование кода и проверка результатов его работы. Автоматический тест выполняется иначе: вместо программиста стимулированием кода и проверкой результатов занимается компьютер, который отображает на экране результат выполнения теста: код работоспособен или код неработоспособен. При этом происходит «инверсия ответственности»: от логики тестов и их качества зависит, будет ли код соответствовать техническому заданию. Методика разработки через тестирование заключается главным образом именно в организации автоматических тестов и выработке определённых навыков тестирования.

Разработка через тестирование требует от разработчика создания автоматизированных модульных тестов, определяющих требования к коду непосредственно перед написанием самого кода. Тест содержит проверки условий, которые могут либо выполняться, либо нет. Когда они выполняются, говорят, что тест пройден. Прохождение теста подтверждает поведение, предполагаемое программистом. Разработчики часто пользуются библиотеками для тестирования (англ. testing frameworks) для создания и автоматизации запуска наборов тестов. На практике модульные тесты покрывают критические и нетривиальные участки кода. Это может быть код, который подвержен частым изменениям, код, от работы которого зависит работоспособность большого количества другого кода, или код с большим количеством зависимостей.

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

TDD не только предполагает проверку корректности, но и влияет на дизайн программы. Опираясь на тесты, разработчики могут быстрее представить, какая функциональность необходима пользователю. Таким образом, детали интерфейса появляются задолго до окончательной реализации решения.

Разумеется, к тестам применяются те же требования стандартов кодирования, что и к основному коду.

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

Для удобства разработки по методологии TDD была использована утилита tox, она позволяет запускать одновременно тесты на нескольких версиях Python’а, разворачивать необходимые окружения и устанавливать необходимые пакеты для тестируемого кода. Ниже приведен пример конфигурационного файла tox.ini, для разрабатываемого проекта:

[tox]

envlist = py26,py27

[testenv]

changedir = tests

commands = discover

deps =

discover

mock

Как видно из конфигурации, тесты будут запускаться на интерпретаторах версий 2.6 и 2.7, тесты будут взяты из директории tests и будут установлены соответствующие зависимости.

Стоит отметить, что код разрабатываемой системы полностью совместим как с Python’ом второй ветки, так и с третьей, но на данный момент запуск проекта на третьей ветке невозможен т.к. используемая библиотека GitPython на данный момент не портированна под третью ветку.

В ходе разработки было написано 18 тестов, которые почти полностью покрывают весь исходный код проекта. Ниже приведен лог запуска тестов под целевыми интерпретаторами версии 2.6 и 2.7:

Python/procyon(branch:master) » tox

GLOB sdist-make: /Users/nikitagrishko/Programming/Python/procyon/setup.py

py26 sdist-reinst: /Users/nikitagrishko/Programming/Python/procyon/.tox/dist/Procyon-0.0.1.zip

py26 runtests: commands[0]

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

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

Ran 18 tests in 0.139s

OK

py27 sdist-reinst: /Users/nikitagrishko/Programming/Python/procyon/.tox/dist/Procyon-0.0.1.zip

py27 runtests: commands[0]

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

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

Ran 18 tests in 0.115s

OK

___________________________________ summary ____________________________________

py26: commands succeeded

py27: commands succeeded

congratulations :)

Соседние файлы в папке docx53