Java, UX, HTML, CSS, WEB-design

Введение в автоматическое тестирование плагинов WordPress с помощью PHPUnit

[ad_1]

  • Коллинз Агбонгама

  • 0 Комментарии

Введение в автоматическое тестирование плагинов WordPress с помощью PHPUnit

  • 9 минут чтения

  • WordPress, Плагины, PHP, Тестирование

Краткое резюме ↬

Вы действительно не хотите тратить часы на ручное тестирование каждой части вашего плагина WordPress, чтобы убедиться, что ничего не сломано каждый раз, когда вы развертываете новую версию — не так ли? В этом руководстве вы узнаете, как эффективно проводить автоматизированное тестирование.

WordPress — популярная система управления контентом для создания веб-сайтов, потому что с ней легко начать работу, а для расширения набора функций доступно множество тем и плагинов. Основная причина, по которой WordPress имеет множество плагинов и тем, заключается в том, что разработчикам любого уровня легко начать их создавать. Большинство его разработчиков неопытны, и они не пишут тесты для своей работы, возможно, по следующим причинам:

  • Не так много дискуссий о модульном тестировании, поэтому они могут не знать, что тестирование вообще возможно.
  • Они не верят в ценность написания тестов для своего кода или думают, что это замедлит их работу.
  • Они считают, что достаточно проверить, работает ли их плагин или тема в браузере.

В этом уроке мы узнаем, что такое автоматизированное тестирование и его важность, познакомимся с PHPUnit и WP-CLI, научимся писать тест и, наконец, настроим непрерывное автоматическое тестирование с помощью Travis CI.

Мы решили использовать Travis CI, потому что он предлагает бесшовную интеграцию с GitHub; вам не нужно заходить в свой репозиторий и устанавливать какое-либо соединение между ними. И это бесплатно для публичных репозиториев. В отличие от своих конкурентов, таких как Semaphore CI, GitLab CI и CircleCI, Travis CI не предлагает план бесплатного частного репозитория. Однако ни один из его конкурентов не предлагает такой простой интеграции с GitHub, как он.

Что такое автоматизированное тестирование?

Согласно Википедии, автоматизированное тестирование или автоматизация тестирования — это использование специального программного обеспечения (отдельно от тестируемого программного обеспечения) для контроля выполнения тестов и сравнения фактических результатов с прогнозируемыми результатами. Автоматизация тестирования может автоматизировать некоторые повторяющиеся, но необходимые задачи в уже существующем формализованном процессе тестирования или выполнить дополнительное тестирование, которое было бы трудно выполнить вручную.

Еще после прыжка! Продолжить чтение ниже ↓

Существует несколько видов тестирования. Из всех модульное тестирование является наиболее популярным. Модульные тесты проверяют, выполняет ли блок кода, функция или метод класса то, для чего он предназначен. В этом уроке мы будем проводить модульное тестирование.

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

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

Мой плагин для генерации лидов WordPress имеет OptinThemesRepository класс, с add() способ добавления новых шаблонов формы подписки и get() способ получения шаблона формы подписки.

Обеспечить add() и get() работать как задумано сейчас и в будущем, я написал тест ниже.

public function testAddGetMethods()
{
    $kick_optin_form = array(
        'name' => 'Kick',
        'optin_class' => 'kick',
        'optin_type' => 'kick',
        'screenshot' => MAILOPTIN_ASSETS_URL . 'img/kick.png'
    );

    // add kick optin theme
    OptinThemesRepository::add($kick_optin_form);

    $result = OptinThemesRepository::get('kick');

    $this->assertEquals($kick_optin_form, $result);
}

Если в будущем этот тест начнет давать сбой, я буду знать, что есть проблема, и буду знать точную функцию, метод класса или место в моем плагине, где она возникает.

Преимущества автоматизированного тестирования

Теперь, когда мы знаем, что такое автоматизированное тестирование, давайте посмотрим на другие преимущества.

Раннее обнаружение ошибок

При разработке программного обеспечения вы можете легко найти ошибки с помощью инструментов автоматического тестирования. Это может сэкономить много времени и усилий при отслеживании ошибок.

Более высокое качество программного обеспечения

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

Простая и надежная отчетность

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

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

Создание плагина WordPress

Мы собираемся создать простой плагин, который отображает метатеги проверки Google и Bing для веб-мастеров в заголовке внешнего интерфейса WordPress. Плагин размещен в моей учетной записи GitHub.

Код для этого плагина ниже будет идти в wp-meta-verify.php файл.

<?php 

class WP_Meta_Verify 
{
    public function __construct()
    {
        add_action('wp_head', [$this, 'header_code']);
    }

    public function header_code()
    {
        $google_code = get_option('wpmv_google_code');
        $bing_code = get_option('wpmv_google_code');

        echo $this->google_site_verification($google_code);
        echo $this->bing_site_verification($bing_code);
    }

    public function google_site_verification($code)
    {
        return "<meta name="google-site-verification" content="$code">";
    }

    public function bing_site_verification($code)
    {
        return "<meta name="msvalidate.01" content="$code">";
    } 
} 

new WP_Meta_Verify();

Вы могли заметить, что мы не включили в плагин страницу настроек, на которой вы обычно сохраняете проверочный код Google и Bing. Я сделал это намеренно, чтобы не усложнять и сосредоточить наше внимание на самом важном. Тем не мение, get_option('wpmv_google_code') и get_option('wpmv_bing_code') Предположим, что есть страница настроек, и они получают коды подтверждения оттуда.

Модульное тестирование плагина WordPress

PHPUnit — это де-факто инструмент тестирования для PHP, тогда как WP-CLI является официальным интерфейсом командной строки для WordPress.

До WP-CLI настройка тестирования PHPUnit для плагинов WordPress была проблемой. У WP-CLI есть отличное руководство по его настройке; тем не менее, мы все равно пройдемся по шагам здесь.

Установить PHPUnit

Чтобы установить PHPUnit, выполните следующие команды.

composer global require phpunit/phpunit:5.*

Примечание: Мы явно устанавливаем 5.x потому что это то, что WordPress поддерживает, когда вы используете PHP 7 или выше, который у меня есть на моей машине. Установите PHPUnit 4.8, если вы используете PHP версии 5.

Бегать phpunit --version чтобы подтвердить, что он был установлен.

Установите WP-CLI.

Чтобы установить WP-CLI, выполните следующие команды.

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar 

chmod +x wp-cli.phar 

sudo mv wp-cli.phar /usr/local/bin/wp

Бегать wp --info чтобы подтвердить его установку.

Установив PHPUnit и WP-CLI, мы будем использовать последний для настройки модульного теста для плагина.

Настроить модульный тест плагина

Измените каталог вашего терминала на корень вашей установки WordPress и выполните приведенную ниже команду, чтобы сгенерировать тестовые файлы плагина.

wp scaffold plugin-tests wp-meta-verify

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

|-bin/
|----install-wp-tests.sh
|-tests/
|----bootstrap.php
|----test-sample.php
|-.travis.yml
|-phpcs.xml.dist
|-phpunit.xml.dist
|-wp-meta-verify.php

Примечание: По умолчанию wp scaffold plugin-tests Команда создает файл конфигурации Travis CI. Вы можете указать --ci флаг для создания файла конфигурации для используемой вами службы CI, например: wp scaffold plugin-tests --c gitlab. На момент написания статьи поддерживаются только Travis CI, CircleCI и GitLab CI.

Измените каталог вашего терминала на каталог вашего плагина и запустите скрипт установки:

cd path-to-wordpress-plugin
bin/install-wp-tests.sh wordpress_test root '' localhost latest

Если вы похожи на меня, то ваше имя пользователя MySQL не root, и пароль не пустой. Например, предположим, что имя пользователя homestead и пароль secret. Вы запустите сценарий установки следующим образом:

bin/install-wp-tests.sh wordpress_test homestead 'secret' localhost latest

Запустите phpunit команда для запуска теста по умолчанию в tests/test-sample.php.

Результат теста PHPUnit
Результат теста PHPUnit (большой предварительный просмотр)

Напишите наши тесты плагинов

Создать test-wp-meta-verify.php файл в tests папка. Он будет содержать наши тесты плагинов со следующими setUp класс.

<?php 

class WP_Meta_VerifyTest extends WP_UnitTestCase
{
    public function setUp()
    {
        parent::setUp();

        $this->class_instance = new WP_Meta_Verify();
    }

    public function test_google_site_verification()
    {

    }

    public function test_bing_site_verification()
    {

    }
}

Стоит отметить, что для того, чтобы метод считался модульным тестом, он должен иметь префикс test. Лучшей практикой является добавление Test суффикс для каждого тестового класса, хотя это и не требуется. Видеть WP_Meta_VerifyTest.

Смущен тем, что setUp() делает? Просто знайте, что PHPUnit запускает его один раз перед каждым тестовым методом (и на новых экземплярах) класса тестового примера. Есть также tearDown(), но запускается после каждого метода тестирования. Это также setUpBeforeClass() и tearDownAfterClass(), которые запускаются до и после каждого теста соответственно. Тестовый пример — это, по сути, класс, который содержит ряд тестовых методов. Для получения дополнительной информации см. Справочник по WordPress и документацию по PHPUnit.

Из приведенного выше класса совершенно очевидно, что мы собираемся писать тесты для google_site_verification и bing_site_verification методы нашего класса плагина.

public function test_google_site_verification()
{
    $meta_tag = $this->class_instance->google_site_verification('B6wFaCRbzWE42SyxSvKUOyyPxZfJCb5g');
    $expected = '<meta name="google-site-verification" content="B6wFaCRbzWE42SyxSvKUOyyPxZfJCb5g">';

    $this->assertEquals($expected, $meta_tag);
}
public function test_bing_site_verification()
{
    $meta_tag = $this->class_instance->bing_site_verification('B6wFaCRbzWE42SyxSvKUOyyPxZfJCb5g');
    $expected = '<meta name="msvalidate.01" content="B6wFaCRbzWE42SyxSvKUOyyPxZfJCb5g">';

    $this->assertEquals($expected, $meta_tag);
}

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

Бегать phpunitи вы должны увидеть результат, аналогичный показанному на снимке экрана ниже.

Вывод PHPUnit
Вывод PHPUnit (большой предварительный просмотр)

Непрерывное автоматизированное тестирование с Travis CI

Travis CI — это размещенная распределенная служба непрерывной интеграции, используемая для создания и тестирования программных проектов, размещенных на GitHub.

Поэтому, чтобы использовать Travis CI, мы должны опубликовать наш плагин на GitHub. Давай, сделай это сейчас. Не стесняйтесь ссылаться на мой.

Благодаря WP-CLI мы уже настроили его в нашем плагине, любезно предоставленном .travis.yml файл.

Я хотел бы отметить, что я придерживаюсь не стандартов кодирования WordPress, а скорее рекомендаций стандартов PHP, и мои плагины требуют как минимум PHP 5.4. Для того, чтобы мои сборки не глючили, мне пришлось заменить их матрицу на следующую в .travis.yml файл.

matrix:
    include:
        - php: 7.1
        env: WP_VERSION=latest
        - php: 7.0
        env: WP_VERSION=latest
        - php: 5.6
        env: WP_VERSION=latest
        - php: 5.6
        env: WP_VERSION=trunk
        - php: 5.5
        env: WP_VERSION=latest
        - php: 5.4
        env: WP_VERSION=latest

Перейдите к Travis CI и войдите в свою учетную запись GitHub. Следуйте инструкциям на экране, чтобы добавить свой репозиторий GitHub.

После синхронизации учетной записи с GitHub перейдите к репозиторию вашего плагина и активируйте его.

Настройка репозитория Travis CI
Настройка репозитория Travis CI (большой предварительный просмотр)

В следующий раз, когда вы внесете изменение в код и отправите его на GitHub, сборка будет запущена в Travis CI.

Результат сборки Travis CI (большой предварительный просмотр)

Я сделал доступным успешный результат сборки для вашего удовольствия.

Подведение итогов

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

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

Всегда пишите тест перед внедрением фичи, чтобы не забыть или не полениться сделать это после реализации фичи.

Я надеюсь, что теперь вы понимаете важность написания тестов и то, как начать писать их для своего собственного плагина WordPress.

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

Сокрушительная редакция
(мк, ра, ал, иль)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Введение в автоматическое тестирование плагинов WordPress с помощью PHPUnit

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Краткое описание по статье Введение в автоматическое тестирование плагинов WordPress с помощью PHPUnit

Название: Введение в автоматическое тестирование плагинов WordPress с помощью PHPUnit . Краткое описание: [ad_1] ⭐ Коллинз . Дата публикации: 29.01.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

Кнопка «Наверх»