Nikita Koliadin
Деңгээл
Днепр

Code Coverage

Группада жарыяланган
Салам достор, кесиптештер жана... пингвиндер! Бүгүн биз Code CoverageКодду камтуу - 1 жөнүндө сүйлөшөбүз , бул эмне экенин, эмне үчүн керек экенин жана Code Coverage статистикасын берүү менен ачык булактуу долбооруңузду кантип жаңыртуу керектигин аныктайбыз. Бул макала үзгүлтүксүз интеграция жөнүндө мурунку макаланын кыска уландысы болуп саналат . Бул жерде биз CIдин дагы бир күчтүү артыкчылыгын билебиз... жана жакында сиз эмнени билесиз! Мен бул жерде сиздин программаларыңыз үчүн тесттерди кантип туура жазуу жана максималдуу мүмкүн болгон пайдалуу камтууга кантип жетишүү боюнча эч кандай көрсөтмөлөр жок экендигин баса белгилейм; бул күнөөнүн баары сиздин ийиндериңизде гана калат. Ошентип, кеттик!

Code Coverage деген эмне?

Code Coverage - бул тестирлөө учурунда аткарылган баштапкы codeдун пайызын көрсөткөн белгилүү бир маани. Макул, бул жерде баары түшүнүктүү окшойт. Коддун камтуу пайызы 0дөн 100гө чейин болушу мүмкүн жана суроо туулат: сиз максималдуу CC пайызына умтулушуңуз керекпи? Менин жообум: ооба жана жок. Эмнеге андай? Сиз башка долбоорлордо колдонула турган долбоорду түздүңүз дейли, ал функционалдык жактан толгон жана бардык коркунучтуу нерселердин арасында алуучулар жана орнотуучулар бар жана алардын бир нечеси бар. Функционалдык функцияларды камтууда, айталы, гетерлердин баары камтылган эмес, бирок сиз камтылбагандар сиздин долбооруңузда аталбагандыгын так билесиз, бирок алуучулар дайыма эле “өздөрү үчүн” деп жазыла бербейт, ошондуктан алар “өздөрү үчүн” керек. кардар». Эмне кылыш керек? Ар бир алуучу өзүнчө жаап жатабы? Бул натыйжалуу сыноо болбойт. Бирок биз аларды камтыбасак, биз максималдуу CC пайызына жете албайбыз. Мына ушул жерден эки миздүү кылыч чыгат.

Эмне үчүн бизге Code Coverage керек?

Менимче, бул суроонун жообу абдан жөнөкөй: каалаган codeду рефакторингде же функцияларды кошууда/өзгөрүүдө “көзгө көрүнбөгөн” мүчүлүштүктөр пайда болбошу үчүн тесттен өтүшү керек жана биз аларды көзөмөлдөй алабыз. Биз үзүлүү чекиттери жана мүчүлүштүктөрдү оңдоочулары бар алHowтардан өтпөйбүз жана бул жийиркеничтүү мүчүлүштүктөрдү кармабайбыз. Жашоо өтө кыска. Мисал Ошентип, эң кызыктуусу. Тапшырма бул: Биз мурунку макалада жазган ачык булактуу долбоорго CC жөнүндө маалыматты чогулта турган технологияны киргизип , аны бир жерде иштетип, бул маалыматты GitHub сайтында жайгаштыруу мүмкүн болот. мисалы, төш белги. Бардык баштапкы code менин GitHub сайтымда жайгаштырылат .
  1. Коддун камтуу маалыматын бир үймөгө чогултуу үчүн плагинди тандоо менен баштайлы . Мен жеке өзүм тандап алган JaCoCo , ал codeдун камтуусу жөнүндө маалымат чогултат. Бирок альтернативалар да бар .

    Сайт JaCoCo предлагает нам скачать плагин, но качать мы нечего не будем, ведь мы используем Build System Maven. Заходим в Maven Repository и ищем JaCoCo Plugin. Берем последнюю версию, и вставляем в наш pom.xml зависимость.

    Но через dependencies я делать не рекомендую, ведь есть более хороший, более функциональный альтернативный вариант, и даже не один.

    1. Заходим CodeCov Setup выбираем язык Java и выбираем Using JaCoCo плагин, и ставим по инструкции.

    2. По той же ссылке выбираем Using Maven. Этот вариант будет даже лучше. Cobertura будет извлекать информацию из CI тестов, но увы и тут есть подвох. Все что выше JDK 7 (А на данный момент уже 10 есть) не подойдет. Поэтому мы остановимся на 1 варианте.

    В результате в нашем pom.xml должно было появиться что то вроде того:

    <!-- JaCoCo plugin -->
    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.1</version>
        <executions>
            <execution>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
            </execution>
            <execution>
                <id>report</id>
                <phase>test</phase>
                <goals>
                    <goal>report</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

    И в Maven Projects в списке плагинов появится JaCoCo Plugin:

    Кодду камтуу - 2
  2. Плагин стоит. Все вроде бы замечательно. Но если вы внимательно читали инструкцию по установке JaCoCo plugin, там было указание, добавить в .travis.yml строчку, отвечающую за отправку отчёта plugin на сайт Codecov.

    Итак, исходя из Using JaCoCo, нам нужно вписать в наш файл:

    after_success:
      - bash <(curl -s https://codecov.io/bash)

    Вписали. Отлично.

  3. Все вроде готово, и остались финальные штрихи. Во-первых давайте скомпorруем наш code, и запустим все тесты, причем сделаем это через Lifecycle Maven:

    Кодду камтуу - 3

    Так How у нас в плагине JaCoCo стоит фаза выполнения test, то должен был появится отчет после выполнения цикла тестов Maven в папке target:

    Кодду камтуу - 4
  4. Подходим к завершению. Мы видим что все работает прекрасно, осталось лишь убедится что это "все прекрасно" также будет работать на внешних источниках. Настала пора собрать все в кучу. Собираем проект и делаем push на GitHub, перед этим открыв Travis CI и Codecov для мониторинга происходящего.

    После push мы видим что сборка успешная:

    Код камтуу - 5

    И результат JaCoCo plugin о покрытии codeа:

    Кодду камтуу - 6
  5. Помните нашу задачу? Да, да, мы забыл про бейджик. Я хотел вынести тему "Украшение" open-source project'ов в отдельную статью, но маленькую часть все же оставлю здесь.

    Итак, пошаговая инструкция что бы не заблудится:

    1. Переходим на сайт Codecov;

    2. Выбираем проект, который вам нужно;

    3. Выбираем Setting:

      Кодду камтуу - 7
    4. Выбираем Badge и видим ссылки на ваш бейджик в несколько различных формах представления:

      Первые это стандартные бейджики, их можно вставить, например, в ваш README.md:

      Кодду камтуу - 8

      Их особенность в том что при кликании на них вас будет перенаправлять на page с отчетом о CC;

      Вторые это графы, таблицы и тому подобные штуки:

      Кодду камтуу - 9
Полезные ссылки Текстте каталар жана кемчorктер болушу мүмкүн. Көңүл бурганыңыздар үчүн рахмат!
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION