Сколько раз вы развернули новый релиз в проекте, и только после того, как слияет его с производством, обнаружена срочная ошибка? Обычно это происходит из -за отсутствия тестирования, для выполнения неполного руководства по тестированию или для человеческой ошибки. Для проектов непрерывной доставки, где вы постоянно доставляете новый код своим пользователям, автоматическое тестирование имеет решающее значение для того, чтобы сделать весь процесс гибким. Не только для поддержания качества кодовой базы, но и, что наиболее важно, чтобы обеспечить стабильность веб-платформы на протяжении всей ее циклов разработки.
Несмотря на то, что это хорошо известно в сообществе веб-развития, не всегда легко провести автоматические тесты в качестве приоритета и убедить лиц, принимающих решения, посвятить время и ресурсы для реализации этих тестов.
Недавно мы внедрили набор автоматических тестов на комплексной платформе на основе Drupal в тесном сотрудничестве с нашим партнером Luís Santos из OpenQuest Анкет Будучи старшим разработчиком Drupal, работающим с Drupal более 11 лет, Luís ориентирован на безопасность, лучшие практики, производительность и удобство использования. Он был лидером в реализации автоматических тестов для этого конкретного проекта.
Проект использовал без головы Drupal 8 для первого конца, посвященного всем редакционным опыту и фронт-энду, который мы отображали с использованием компонентов ReactJS в Drupal (см. Наше тематическое исследование ). Каждый раз, когда нам приходилось пройти через релиз, нам приходилось вручную протестировать кодовую базу, что делало каждый релиз не просто трудоемким и повторяющимся, но и открытым для человеческой ошибки. Тестер должен был проверить все файлы журнала, любые внешние службы и подтвердить, есть ли какие -либо ошибки базы данных.
Автоматизированные тесты очень полезны для обеспечения качества ваших проектов и являются важной частью поддержания высококачественного кода и программного обеспечения. Важно подчеркнуть, что лица, принимающие решения, что автоматические тесты могут уменьшить или даже уничтожить эти проблемы, и, что наиболее важно, это может ускорить процесс тестирования.
В общем, цель автоматизированных тестов — следующая:
- Снизить стоимость тестирования и время;
- Ускорить процесс тестирования;
- Помочь улучшить качество;
- Улучшить тестовый охват;
- Чтобы уменьшить ручное вмешательство.
Существует много дискуссий о лучшем способе реализации автоматических тестов, и существует множество структур и типов автоматических тестов. Если рассматривать стратегию пирамиды автоматизации тестов Майка Коэна, существует три разных уровня автоматизации тестов: модульные тесты; Сервисные тесты (также известные как автоматические тесты API, автоматические тесты компонентов или приемные тесты) и, наконец, тест пользовательского интерфейса.
Основой полностью автоматизированной тестовой системы являются модульные тесты. Реализация модульных тестов означает разбить вашу кодовую базу на куски, а подчистить каждый кусок серии тестов. Это позволяет вам иметь немедленную обратную связь, когда произойдет сбой.
В случае нашего проекта первое, что мы сделали, это определить стратегию. Мы вложились в кодовую базу и перечислили все действия и основные функциональные возможности с веб-платформы, над которой мы работали.
Важно иметь в виду, что для того, чтобы иметь эффективную систему тестирования, мы должны перечислить все или наиболее важные тестовые случаи и проверить эти случаи в различных сценариях. Это ключ к тому, чтобы иметь все унитарные действия, все, что мы смогли сломать и изолировать, в отношении соединений API или даже взаимодействия с пользователем.
Как только у нас появился общий обзор всех проверяемых унитарных действий, мы исследовали лучший подход для использования. С тех пор, как наш проект был в Drupal 8, мы начали с внедрения тестового профиля, основанного на признаках Test Test Drupal, проекте с открытым исходным кодом, запущенным по Mass.gov Это позволяет вам запускать тесты PHPUNIT на вашем веб -сайте Drupal, не вытирая базу данных после каждого тестового класса.
Основная цель здесь состояла в том, чтобы использовать тестовую среду для запуска тестов с существующим контентом. Мы написали тесты для каждого отдельного унитарного действия веб -платформы. Для того, чтобы вы имели автоматическую систему тестирования, покрывающую всю систему, вам необходимо постоянно добавлять новые тесты в каждую новую функцию, добавленную на ваш сайт.
Поскольку на платформе было много веб-сервисов для визуализации и подключений API, тест должен был проверить входные данные и выходы веб-сервисов во всех доступных сценариях.
Результат реализации автоматических тестов для этой веб -платформы был непосредственным. Как только мы реализовали один из тестов, мы нашли ошибку, которую ни один из тестеров не заметил. Одним из API, которые перечисляли статьи на разных языках по теме, в некоторых случаях было предоставлено неправильный список, который привел к нескольким случаям неправильной индексации и листинга статей.
Как компания веб -разработчиков, мы ценим качество кода, который мы доставляем, и всегда делаем аргумент в пользу улучшения в структуре и развертывании платформы, особенно для постоянных комплексных веб -платформ. Реализация автоматических тестов может быть большим шагом, и это может означать много усилий (и ресурсов), но наверняка окупится в краткосрочной и долгосрочной перспективе.
Источник изображения пирамиды: Тестовая пирамида: ключ к хорошей стратегии автоматического тестирования
Этот пост был первоначально опубликован в Блог Marzee Labs Анкет
Оригинал: «https://dev.to/marzeelabs/why-you-should-advocate-for-automated-tests-3b5j»