Хотим рассказать вам о том, как мы автоматизировали тестирование модулей и сайтов на Magento.

Для нас и наших клиентов это достаточно важный аспект, ведь модули должны работать на всех поддерживаемых ими версиях Magento Community Edition, в том числе и на Enterprise Edition.

При разработке и тестировании модулей мы используем практику Continious 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. О них мы напишем позже.

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

В ближайший месяц выйдут новые модули интеграций. Будьте в курсе новостей!