Как создать отчет о покрытии кода с помощью действий CodeCov и GitHub

kak sozdat otchet o pokrytii koda s pomoshhyu dejstvij codecov

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

Вот несколько основных причин для написания тестов программного обеспечения:

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

В этой статье вы узнаете, как создать отчет о покрытии кода с помощью действий codecov и gitHub.

Что такое покрытие кода?

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

Большинство инструментов anyis покрытия кода используют набор показателей для отчета о покрытии кода anysis. Эти показатели включают:

  • Покрытие функций
    Количество объявленных функций, вызванных после запуска тестовых наборов.
  • Покрытие заявления
    Количество операторов, выполненных после запуска наборов тестов.
  • Охват филиалов
    Сколько кода филиала if блоки кода были выполнены.
  • Покрытие условий
    Количество логических выражений, которые были проверены true и false ценности.
  • Покрытие линии
    Проверены строки кода.

В этой статье мы прежде всего сосредоточимся на том, как использовать действия codecov и gitHub для создания отчета о покрытии кода для проекта Node.

Почему важно покрытие кода?

Хорошее покрытие кода дает вам уверенность в отправляемом коде, особенно если ваши тесты надежны и хорошо продуманы.

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

Что такое Codecov?

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

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

Вы можете интегрировать codecov как часть своего непрерывного рабочего процесса интеграции. Codecov способен делать комментарии к запросу на подъемник и многое другое. Эти комментарии помогут другим разработчикам узнать, как объединение их запроса на подъемник повлияет на покрытие кода, не оставляя интерфейса GitHub.

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

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

Hpw tp создать проект и создать отчет о покрытии

В следующих шагах вы собираетесь создать простой проект Node и сгенерировать для него отчет о покрытии codecov.

Предпосылки

Для выполнения команд в следующих подразделах на вашем компьютере должно быть установлено следующее.

Шаг 1: Создайте каталог и перейдите к нему

На этом шаге вы собираетесь создать каталог под названием learn-test-coverage а затем перейдите к нему. Вы можете дать каталогу другое название, если хотите, если это значимое название.

Выполните следующие команды в терминале:

mkdir learn-test-coverage
cd learn-test-coverage

На следующем шаге вы собираетесь инициализировать проект.

Шаг 2: Инициализация проекта

На этом шаге вы собираетесь инициализировать проект, выполнив команду ниже в терминале:

npm init --yes

Успешное выполнение вышеприведенной команды создаст файл a package.json файл в корне каталога вашего проекта.

На следующем шаге вы собираетесь установить джек как зависимость разработки.

Шаг 3: Установите Jest как зависимость

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

Выполните следующую команду в терминале:

npm install --save-dev jest

После успешного выполнения вышеприведенной команды вы сможете увидеть node_modules каталог и package-lock.json файл, созданный в корне каталога вашего проекта. Вы также можете видеть, как Jest установлен как зависимость разработки в файле package.json файл.

На следующем шаге вы инициализируете репозиторий git в вашем проекте.

Шаг 4: Инициализируйте репозиторий Git

На этом шаге вы собираетесь инициализировать репозиторий git в своем проекте, выполнив команду ниже:

git init

Создать .gitignore файл в корне каталога проекта и добавьте в него следующий код. Это будет игнорировать node_modules файл, чтобы позже он не был передан в удаленное хранилище.

/node_modules

На следующем шаге мы объявим простую функцию и напишем для нее тест.

Шаг 5: Объявить функцию и написать для нее тест

На этом шаге вы объявите простую функцию под названием sum в sum.js файл. Эта функция принимает два параметра и возвращает их сумму. Вы также будете писать тесты для своего кода в sum.test.js файл.

Выполните следующую команду в терминале:

touch sum.js sum.test.js

Вы должны иметь возможность увидеть два файла, созданных в вашем проекте. Скопируйте и вставьте код ниже sum.js:

function sum(num1, num2) {
  return num1 + num2;
}

module.exports = sum;

Аналогично скопируйте и вставьте следующий код sum.test.js:

const sum = require("./sum");

test("adds 1 + 2 to equal 3", () => {
  expect(sum(1, 2)).toBe(3);
});

Измените значение "test" имущество в вашем package.json к "jest --coverage" так что значение "scripts" свойство выглядит так:

{
    "test": "jest --coverage"
}

В терминале запустить npm test чтобы запустить тест. После завершения теста вы сможете увидеть результат покрытия кода в терминале и a coverage сгенерированный каталог.

Вот что я вижу в своем терминале:

покрытие-терминал-выход

Вы также можете просмотреть результат в браузере, открыв index.html файл внутри coverage/lcov-report папку. Вы должны видеть следующее:

codecov-coverage-report-browser

Вы можете создать отчет о покрытии, поскольку Jest поставляется в комплекте со Стамбулом. Убедитесь, что вы удалили coverage файл, поскольку он вам не нужен, потому что мы автоматизируем процесс с помощью действий GitHub.

Вы должны иметь возможность определить, какие показатели Стамбул использует для создания отчета о покрытии (показатели, которые я упоминал в начале статьи).

На следующем шаге мы прибавим к нашему проекту непрерывную интеграцию действий GitHub.

Шаг 6. Добавьте рабочий процесс непрерывной интеграции действий GitHub

На этом шаге вы добавите рабочий процесс непрерывной интеграции действий GitHub в свой проект, чтобы codecov автоматически создавал отчет о создании запроса на выписку.

Создать .github файл в корне папки вашего проекта. Внутри .github папку, создайте a workflows папку. Затем внутрь workflows создать codecov.yml файл. Файла не требуется называть имя codecov. Вы можете дать ему любое имя.

Скопируйте и вставьте нижеприведенный код внутрь codecov.yml файл.

Это файл конфигурации рабочего процесса. Он запустит ваш тест, когда два события push и pull_request происходят. Вы можете прочитать больше о синтаксисе YAML и действиях gitHub, чтобы понять содержимое файла ниже.

name: Running Code Coverage

on: [push, pull_request]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [12.x, 13.x, 14.x, 15.x]

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2
      with:
        fetch-depth: 2

    - name: Set up Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm run test

    - name: Upload coverage to Codecov
      uses: codecov/codecov-action@v1

Последний шаг отвечает за загрузку отчета о покрытии в codecov в приведенном выше файле конфигурации.

На следующем шаге вы собираетесь создать репозиторий на GitHub и переместить в него свой проект

Шаг 7: Создайте репозиторий на GitHub и внесите в него изменения

На этом шаге вы собираетесь создать репозиторий на gitHub и внести в него изменения.

Выделите GitHub. Создайте пустой репозиторий и назовите его learn-test-coverage.

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

git add .
git commit -m "Initial commit"

Затем вы можете добавить удаленный репозиторий, который вы создали выше, к своему локальному хранилищу, используя команду ниже:

git remote add origin <Remote repository>

Наконец, вы можете отправить свои изменения в удаленное хранилище, используя команду ниже:

git push origin master

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

Шаг 8: Свяжите свой удаленный репозиторий с codecov

На этом шаге вы собираетесь связать свой репозиторий из codecov. Но сначала нужно зарегистрироваться.

Codecov позволяет вам зарегистрироваться с помощью своего аккаунта GitHub всего за пару минут. Затем вы можете выбрать репозиторий GitHub, который нужно связать на информационной панели codecov.

После выбора хранилища вы будете перенаправлены на страницу с маркером. Этот маркер вам не нужен для общедоступных хранилищ.

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

- name: Upload coverage to Codecov
    uses: codecov/codecov-action@v1
    with:
        token: ${{ secrets.YOUR_SECRET_TOKEN }}

Шаг 9. Проверьте свой непрерывный рабочий процесс интеграции

На этом шаге вы намерены проверить свой непрерывный рабочий процесс интеграции.

Создать README.md файл в корне вашего проекта. Скопируйте и вставьте значок codecov на панель codecov под вкладкой настроек в вашем README.md файл. Вот так смотрятся значки.

codecov-значок

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

codecov-readme

Вы также можете просмотреть отчет о покрытии на информационной панели codecov. Попробуйте создать запрос на выписку, чтобы увидеть, что произойдет.

Чтобы узнать больше о том, что еще вы можете сделать, просмотрите документацию Codecov.

Если вы застряли, вы можете проверить мой проект на GitHub.

Как codecov создает отчет о покрытии?

Codecov использует термины ударить, частичный и мисс чтобы описать покрытие кода в вашем проекте. Охват – это соотношение hits на сумму hits, partials и misses.

Если код описан как a ударитьэто означает, что исходный код был исполнен тестовым набором.

Если это описано как частичный, это указывает на то, что исходный код не был полностью исполнен набором тестов. Остались ветки, которые не были исполнены.

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

База кода, имеющая 5 строк, выполненных тестами из 12 общих строк, получит коэффициент покрытия 41% (округление в меньшую сторону) — Документация Codecov

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

Вывод

В этой статье мы рассмотрели, как можно интегрировать codecov как часть рабочего процесса непрерывной интеграции.

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

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

Ссылки

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

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