ПРЕИМУЩЕСТВА ТЕСТИРОВАНИЯ

Я создаю веб-приложения уже более 15 лет. Только за последние пять лет я научился тестировать приложение автоматически. Я могу с уверенностью сказать, что нет другого метода, который улучшил бы качество моего кода больше.

Давайте рассмотрим, что такое тест и все преимущества, которые он предоставляет.

ЧТО ТАКОЕ ТЕСТ?

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

Вот небольшой пример. Не волнуйтесь, если вы еще не все поняли.

it('can handle a form submission', function() {
    $url = route('blogPost.create');

    $values = [
        'email' => 'john@example.com',
        'name' => 'My name',
    ];

    post($url, $values)->assertSuccessful();

    assertDatabaseHas(BlogPost::class, $values);
});

В этом тесте мы отправим POST-запрос на blogPost.createмаршрут с заданным $values. После того, как этот запрос был сделан, мы удостоверяемся, что эти значения сохранены в базе данных в таблице BlogPostмодели.

Подобный тест может быть запущен тестировщиком, таким как Pest или PHPUnit. Программа выполнения теста сообщит вам, прошел тест или нет. Имея подобный тест, вам не нужно вручную заполнять форму, чтобы убедиться, что он работает. Вместо этого вы можете просто запустить этот тест. Этот тест будет выполняться менее чем за секунду, что, вероятно, меньше времени, необходимого большинству людей для заполнения и отправки формы.

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

ПРЕИМУЩЕСТВА ТЕСТИРОВАНИЯ

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

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

После запуска большинства приложений работа над ними продолжается. Добавлены новые функции, и необходимо выполнить техническое обслуживание. С качественным набором тестов вам не нужно бояться, что вы нарушите существующую функциональность. Вы можете просто повторно запустить все свои тесты, чтобы убедиться, что все работает правильно — нет необходимости начинать тестирование заново вручную.

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

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

Еще одна вещь, которую очень рискованно делать без поддержки набора тестов, — это обновление некоторых зависимостей вашего приложения или версии PHP. Возможность обновления до последних версий вещей часто имеет много преимуществ: вы можете использовать новейшие функции, получить защиту от последних исправлений безопасности и многое другое. В прежние времена я этого не делал, поскольку не знал, как это может повредить мое приложение. При поддержке набора тестов я могу обновить версию пакета, Laravel или PHP и запустить тесты. Если какой-либо из тестов начнет давать сбой, я знаю, в каком месте внести коррективы.