Для нас и наших клиентов это достаточно важный аспект, ведь модули должны работать на всех поддерживаемых ими версиях Magento Community Edition, в том числе и на Enterprise Edition.
При разработке и тестировании модулей мы используем практику Continuous Integration (CI)
Весь исходный код хранится в git репозиториях. Это позволяет программистам быстро и удобно работать, а также использовать практики code review и git workflow.
Использование непрерывной интеграции позволяет:
- снизить трудоёмкость оценки проблем интеграции,
- автоматизировать тестирование и оценку качества кода,
- сделать процесс разработки более предсказуемым и прозрачным за счет раннего обнаружения ошибок и противоречий.
Первым этапом является статическое тестирование
Этот процесс проверяет весь код проекта на несоответствие в стиле кодирования, синтаксис, логические и алгоритмические ошибки и т.д. Статическое тестирование позволяет на раннем этапе отловить возможные проблемы, стандартизировать разработку.
Большая часть IDE уже поддерживает инструменты CI и автоматически сообщает об ошибках прямо в процессе разработки. Для модулей мы используем собственный стандарт оформления кода, основанный на PHP PSR-2, с учётом текущих возможностей Magento.
Для JavaScript рекомендуется Google JavaScript Style Guide.
Используемое ПО: PHP Parallel Lint, PHP Codesniffer, PHPMD, PHP Copy/Paste Detector, PHP Dead Code Detector, внешние сервисы Code Climate и Scrutinizer.
Второй этап — тестирование по стандартам Magento ECG
Тестирование помогает отловить стандартные ошибки и плохие практики в программировании кода модулей.
Все перечисленные этапы выполняются независимо от версии PHP и Magento.
Unit тестирование с использованием матрицы версии PHP и Magento
Современные системы доставки приложений, применяемые на Magento, используют связку composer - modman. Composer — пакетный менеджер для библиотек PHP, поддерживающий управление зависимостями. Все наши модули содержат манифест с указанием названия, зависимостей, библиотек для тестирования и правилами развертывания.
Данная связка позволяет удобно и быстро подключить модуль, не копируя его в проект, обновлять и тестировать интеграционно.
За основу unit тестирования взята библиотека EcomDev_PHPUnit. C её помощью проверяется, как работает модуль внутри Magento, выполняя свой функционал, и не нарушает ли он целостность самой платформы.
Каждый готовый модуль запускается на тестирование в CI. Для этого в контейнере разворачивается чистая инсталляция платформы нужной версии, на нее ставится модуль.
Далее CI-сервис производит запуск теста во всех комбинациях версий Magento (1.7.0.2, 1.8.1.0, 1.9.2.0) и PHP (5.3, 5.4, 5.5, 5.6).
Корректная работа модуля отображается в панели вот так:
В текущий момент вышли новые концепции тестирования с использованием Docker. О них мы напишем позже.
Полностью автоматизированное тестирование позволяет повысить качество и стабильность работы модулей.
В ближайший месяц выйдут новые модули интеграций. Будьте в курсе новостей!