• Мутационное тестирование

      Юнит тесты помогают нам удостовериться, что код работает так, как мы этого хотим. Одной из метрик тестов является процент покрытия строк кода (Line Code Coverage).


      Но насколько корректен данный показатель? Имеет ли он практический смысл и можем ли мы ему доверять? Ведь если мы удалим все assert строки из тестов, или просто заменим их на assertSame(1, 1), то по-прежнему будем иметь 100% Code Coverage, при этом тесты ровным счетом не будут тестировать ничего.


      Насколько вы уверены в своих тестах? Покрывают ли они все ветки выполнения ваших функций? Тестируют ли они вообще хоть что-нибудь?


      Ответ на этот вопрос даёт мутационное тестирование.

      Читать дальше →
    • Объединяем Code Coverage от PHPUnit и phpspec

      • Tutorial
      Сегодня та или иная библиотека на Github, у которой нет тестов, уже не воспринимается серьезно. Тесты помогают нам смело делать рефакторинг и быть уверенными, что модуль, класс или функция работают так, как это задумывалось. Они позволяют нам тестировать наш код на разных версиях PHP и выявлять ошибки заранее. Это гарант качества и стабильности вашего кода.



      Стремиться к стопроцентному покрытию кода нет никакого смысла, однако понимать в среднем какой процент кода покрыт вашими тестами — хорошая метрика при непрерывном интегрировании.

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

      image

      Но что делать, если вы используете несколько библиотек для тестирования? Как получить общее покрытие кода?
      Читать дальше →
      • +16
      • 5,3k
      • 7
    • Ionic framework. Обзор экосистемы


        Ionic framework — один из самых широко обсуждаемых фреймворков. Как гласит официальный сайт, Ionic — это SDK для создания гибридных мобильных приложений, набор CSS и JS компонент, созданный на основе AngularJS, SASS, Apache Cordova.

        На момент написания статьи репозиторий Ionic насчитывает 15300 звездочек, а сумма инвестиций в компанию Drifty, чьим продуктом является Ionic, уже достигла $3.7 миллиона.

        Посмотрим, что интересного предлагает Ionic для разработчика.
        Читать дальше →
      • Codeship.io: бесплатный CI сервер для приватного репозитория Github/Bitbucket

        • Tutorial

        Сразу заинтригую: в результате мы получим связку бесплатного приватного git репозитория на Bitbucket и бесплатный* Continious Integration сервер (SAAS), который будет собирать проект и прогонять все тесты после каждого пуша.
        * — бесплатная подписка дает возможность тестировать 5 приватных репозиториев и максимум 100 билдов в месяц.

        Мне этого для личного проекта достаточно.

        Приведу пример для PHP, проект на Symfony2, но данный сервис поддерживает ещё и Ruby, Node.js, Python.

        Читать дальше →
      • Development Environment при помощи Vagrant и Chef






        В данной статье я постараюсь познакомить вас с замечательными утилитами Vagrant и Chef на примере автоматического конфигурирования development environment для PHP разработчика (на самом деле, PHP здесь только как пример, все нижеописанное может быть использовано для любого стека технологий).

        Что будем делать?



        Будем настраивать виртуальную машину (ВМ) с Ubuntu 12.04 для работы над проектом на PHP, а именно:

        • Apache
        • MySql
        • PHP 5.4
        • xDebug
        • Memcached
        • Composer
        • Настроим сразу Virtual Host на определенную папку, доступную как с виртуальной машины, так и с реальной. Всё это параметризируем для удобства создания и использования.
        • и другое..


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

        Как это может помочь вам?



        • Вы не хотите «засорять» свою систему множеством утилит, программ
        • Вы хотите тестировать свой код в приближенных к production условиях
        • Вы хотите тестировать свой код на разных версиях той или иной платформы (помните, как Travis тестирует билды в различных конфигурациях, например Symfony на разных версиях PHP)
        • Вы не хотите больше помогать новому человеку на проекте (верстальщик, программист) устанавливать всё с нуля
        • Вы хотите, чтобы у каждого человека в команде была идентичная среда для работы над проектом


        Всё это — реальность. Вопрос только «как?».

        Читать дальше →