IT-РАБОТА · РЕГИОН: СИБИРЬ

 

Интеграция и тестирование в методиках программирования

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

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

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

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

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

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

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

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

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

Следующая статья: Сценарий разработки программных проектов
Предыдущая статья: Парадигмы программирования

Оставить комментарий

Внимание!!! При копировании материалов сайта ссылка на источник обязательна.

Счетчики: