Авто тесты и TDD в WordPress на базе плагина Testeroid

Рассмотрим простое решение, которое позволяет быстро поднять авто тесты на базе WordPress. И понять что такое TDD и как оно ускоряет разработку в 10х раз. По ходу еще повышая качество кода.

Это давняя история и процесс автоматизированного тестирования я изучал много лет. И никак не мог понять почему все так сложно и так бестолково.

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

Встречаем – плагин Testeroid https://github.com/uptimizt/testeroid

Ставится как обычный плагин для WordPress.

И позволяет запускать тесты в 1 команду: wp test

Сравнение с PHPUnit & PestPHP

Перепробовав самые популярные решения для авто тестов с PHP, я собрал некую сравнительную табличку:

Из этой таблицы можно увидеть что данное решение проще поставить и проще освоить чем остальные. Но именно для WordPress.

Чтобы что?

Зачем вообще понадобилось писать очередной велосипед?

На то были причины:

  • базовые решения сложно развернуть и долго и дорого изучать
  • из коробки они работают только в качестве unit тестов без БД – что по сути бесполезно и выглядит как попытка кипятить океан чайником

Я искал решения проще и мне кажется нашел. Это решение ставится за 5 минут – и работает проще чем популярные аналоги.

Ключевое слово тут – работает.

Разработка без тестов – это ок?

Да, на самом для 99% проектов про WordPress – авто тесты не нужны. А попытки их писать превращаются в ИБД.

Но бывают такие решения где без авто тестов никуда.

Как пример – плагин WooMS – про интеграцию склада и магазина.

Там 10+ подмодулей, 20+ опций – в сумме 100500 разных сценариев как это может работать.

По началу все было относительно просто и как то работало.

Но с годами добавлялись опции, сценарии копились, добавлялись слои абстракции.

В какой то момент разработка превратилась в ад.

Ты решаешь 1 ошибку и добавляешь еще 10 ошибок.

Я пробовал настроить PHPUnit & PestPHP – но их настройка и изучение занимало много времени.

В итоге Тестероид как решение – оказалось рабочим и вывело эффективность на качественно новый уровень.

TDD – разработка через тестирование

По ходу всех этих экспериментов я понял преимущества TDD. Это когда сначала пишешь тесты, а потом под тесты меняешь код.

Это сложно описать словами. Но этот плагин теперь позволяет вести разработку через TDD.

По моим личным ощущениям эффективность разработки выросла в 10х раз. И в разы выросло качество кода.

Этот подход позволяет лучше писать код – когда ты сначала пишешь тест и потом смотришь на результат – то видишь ошибки в структуре кода.

Это позволяет быстрее исправить структуру и при этом убедиться что результат не сломался. И все работает как положено.

Уверенность в том что ничего не сломал

TDD – это лишь половина преимуществ. Вторая половина – это уверенность в том что код работает как положено.

Тесты постепенно накапаливаются.

И когда я вношу очередные изменения – пишу wp test – плагин мне показывает – все ли ок – или что то где то сломалось.

За последний месяц я уже 100 раз ломал свой же плагин.

Но каждый раз запуская тесты – я вижу что и где сломалось.

И это позволяет увидеть ошибку еще до релиза – еще до того как плагин уйдет в продакшн.

Это экономит огромное количество времени и заметно повышает качество продукта.

Как это работает?

В целом инструкция описана на странице плагина https://github.com/uptimizt/testeroid

Ключевое:

  • поставить плагин
  • указать путь до тестов
  • уметь запускать команды wp cli типа wp test

Это сильно проще чем настраивать PHPUnit & PestPHP.

Современный и понятный для людей синтаксис

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

Идея взята у PestPHP.

Тест пишется так:

test('что мы хотим проверить', function(){
   ... код проверки
});

Все до ужаса просто.

Доказательство результата – PoC

Сам плагин я сделал около месяца назад и тестировал на нем базовые рабочие задачи.

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

Чтобы далеко не ходить, сразу готовый пример, на котором это решение было проверено https://github.com/wpcraft-ru/wooms/tree/master/tests

Возможно это первый плагин в РФ – где работают настоящие авто тесты с WordPress.

Итого

Большинство команд и проектов – лишь заявляют что хотят начать писать авто тесты.

Мало кто отваживаются и те пишут обычно дичь. Там не авто тесты, а ИБД. Детально писал тут https://wpcraft.ru/blog/unit-tests-wordpress/

Этот плагин – возможно первое решение для WP, где попробовать писать авто тесты может почти любой, даже начинающий разработчик.

Фото аватара
Anatolii I

Веб разработчик, специализация на лучших мировых практиках: WordPress, WooCommerce, NextJS, Strapi, JAMStack ...

Основные типы проектов: CMS, eCommerce, SEO, LMS, ECM, BPM

Подробнее...

Статей: 108

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *