Блог - PHPUnit

Автотесты в Magento 2, часть 1

В этой статье речь пойдет про автоматическое тестирование в CMS Magento 2. Использовалась Magento 2.2

Общеизвесно, что magento достаточно сложная система сама по себе. Она требовательна к ресурсам. Разрабатывать под нее сложно и долго. В целом, у меня сложилось очень неоднозначное впечатление от ее использования.

Если мы делаем крупный проект на Magento с большим количеством самописных модулей, то, наверняка, в какой-то момент захочется писать автотесты.

Автотесты в Magento 2, часть 2

В предыдущей статье мы насторили окружение для тестов. В этой статье попробуем писать сами тесты.

У нас есть модуль. Пусть это будет личный кабинет. Но в отличии от стандартного модуля magento, это будет rest api. К нему можно будет подключить свой frontend.

Тесты будут лежать в папке Tests Здесь будут Unit тесты, Интеграционные тесты, вспомагательный код и фикстуры.

Сервис денежных транзакций

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

  • Реализовать возможность перевода средств между кошельками пользователей.
  • С каждой транзакции брать комиссию 1.5% в пользу системы.
  • Поддержка 2х валют: BTC(Bitcoin) и ETH(Ethereum).
  • Подготовить данные для демонстрации (несколько пользователей и кошельков)
  • Работа с системой осуществляется через REST API.
  • Подготовить docker сборку.

Анализ покрытия кода тестами для PHP проекта

Всем привет! Сегодня хотел бы рассказать о настройке анализа покрытия кода тестами для PHP(Symfony) проекта. И последующую интеграцию с Github Actions.

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

Изначально настраивал для этого блога. Но затем, для большей наглядности, также настроил для одного из открытых проектов - placeholder-service.

Сервис feature-флагов

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

К примеру, нужно добавить на сайт форму обратной связи. И в то же время нужно иметь возможность быстро откатить изменения. Для этого можно создать feature-флаг contact-form и проверять его при выводе формы и обработчика.

Фикстуры в Symfony + Codeception DataFactory

Всем привет. Сегодня хотел бы поделиться способом организации фикстур в Symfony приложении с помощью Codeception Doctrine2 модуля.

Фикстуры используются для генерации тестовых данных. Чаще всего, для тестовые данные бывают нужны для интеграционных тестов. В Symfony фикстуры реализованы в рамках DoctrineFixturesBundle.

Производительность покрытия тестами PHP проекта

Всем привет! Сегодня хотел бы рассказать о своем опыте оптимизации анализа покрытия теставми для PHP проекта.

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