Wizards people


Александр Щербаков из We Wizards о тестировании как базовом стандарте фронтенд-разработки

Чтобы развернуть новое веб-приложение, нужно проделать огромную техническую и творческую работу на фронтенде: занести линтеры, прекоммит-хуки, продумать типизацию, UI-Kit и много всего еще. Но многие забывают о подготовке тестового окружения, а это снижает скорость и качество разработки даже самой опытной команды. Можем ли мы в этом случае гарантировать клиенту, что выпускаемая фича не поведет себя непредсказуемо? Я считаю, что тестирование отдельных модулей приложения на ожидаемое поведение и проведение юнит-тестов должны стать стандартом любого процесса разработки. Давайте разберемся, почему.

Как тестирование может упростить жизнь вам и вашим клиентам?

01

Автоматизация и упорядочивание процессов

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

02

Отслеживание регрессий

Не ломайте то, что уже работает, и не деплойте код, который сломан. Ваш код должен прогоняться через quality gate или «ворота качества». Одним из звеньев этих ворот должны быть Unit-тесты.

03

Ревью и поиск неучтенных кейсов

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

04

Поддержание удобства и чистоты кода

Тестирование предполагает, что код удобен для него. У каждого фреймворка свой подход, но что-то остается неизменным: декомпозируйте, уменьшайте логические взаимосвязи и скажете себе потом за это спасибо.

05

Повышение доверия со стороны бизнеса

Уровень вашей разработки будет гораздо выше в глазах заказчика, который знает, что 98% его приложения покрыто тестами и возможность непредвиденных кейсов практически исключена.

С чего начать?

Просто подойдите к своей команде и скажите: «Ребят, давайте начнем тестировать!»

Останется только подготовить к этому окружение: написать девопсам, поднять CI/СD и сделать тесты автоматически прогоняемыми. Каждый фреймворк, который вы используете, базово предоставляет рецепты по тестированию. Изучите их, обсудите с коллегами варианты развертки и скорее применяйте на практике! Обязанность каждой команды разработки — держать фронтенд-репозиторий и код чистым, удобным и тестируемым.

Что тестировать?

  • UI 
    Тут всё просто — проверяем, насколько реализация нашей задачи соответствует дизайн-макету. Если у вас есть четкий гайдлайн по UI-Kit, то, скорее всего, у вас есть storybook. Если нет, то стоит задуматься о том, чтобы его поддерживать. Это упростит коммуникацию с командой дизайна и позволит проводить снепшот-тестирование на консистентность вносимых изменений. 
  • Алгоритмы 
    Функции, сервисы, в общем всё, что выполняется в рантайме фронтового кода, может быть покрыто юнит-тестами. Это вид тестирования, при котором проверяются небольшие части кода, например, добавление товара в корзину или роли доступа на сайт.
  • Тестирование в команде 
    Если у вас есть тестировщик, который уже написал тест-кейсы на задачу, вы можете провести Е2Е-тестирование как дополнительную проверку качества в вашем CI/CD. Обратите внимание на такие инструменты как percy.io | cucumber | puppeteer.
  • Интеграции
    Как правило, интеграция не тестируется командой фронтенда, а отдатся в QA. С нашей стороны важно держать контракты с бекендом в актуальном состоянии и мокать ожидаемые ответы, опираясь на актуальный контракт.

Мы в We Wizards понимаем, что упуская тестирование из основных требований к развертыванию нового проекта, мы рано или поздно обязательно наткнемся на кучу багов и несоответствий. Внедрение процесса тестирования как стандарта в разы повышает качество услуг вашей компании, поэтому тестируйте и делайте ваш код поддерживаемым!