pear

Модульное тестирование UnitTest

Модульное тестирование (unit testing) — процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы. Т.е. позволяет отделить интерфейс от реализации; не надо потом залезать в код, что-то удалять, изменять там. Главное, что есть в модульном тестировании — изолированность.

Допустим, нам надо протестировать функцию, как она работает. Но эта функция зависит от другой функции, а та — от третьей и т.д. Юнит-тестирование позволяет изолированно протестировать любую функцию или какой-то кусок кода, даже если он завязан с другим кодом.

Вообще, в PHP есть два инструмента для изолированного тестирования: PHPunit и SimpleTest. PHPunit считается самым продвинутым. Он входит в библиотеку PEAR.

PhpUnit — http://www.phpunit.de
pear remote-info phpunit
pear channel-discover pear.phpunit.de
pear remote-list -c phpunit
pear install phpunit/PHPunit

Использование PhpUnit

Самая главная часть в phpUnit — это класс PHPUnit_Framework_TestCase с набором методов:

PHPUnit_Framework_TestCase
    assertEquals()
    assertTrue()
    assertFalse()
    @depends
    @dataProvider //откуда цеплять данные
    setUp(), tearDown() //зашитые методы, которые автоматом вызываются, аналог конструктора
    setUpBeforeClass(), tearDownAfterClass() //методы вызываются последовательно
    onNotSuccessfulTest()
    assertPreConditions(), assertPostConditions() //вызываются последовательно

Использование PhpUnit для баз данных

PHPUnit_Extensions_OutputTestCaseexpectOutputString()
PHPUnit_Extensions_Database_TestCase
    getConnection()
        createDefaultDBConnection() //соединение с базой данных
    getDataSet()
        createFlatXMLDataSet() //работа с xml- файлом
         createXMLDataSet()
         PHPUnit_Extensions_Database_DataSet_CsvDataSet()
PHPUnit_TextUI_TestRunner::run() //метод, чтобы пробежаться по файлам
PHPUnit_Framework_TestSuite()
phpunit --coverage-html report tests //набирать в командной строке

Более подробную информацию о UnitTest можно найти на www.phpunit.de

Памятка во время разработки

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

  • Все модульные тесты завершились успешно.
  • Код документирует свое поведение.
  • Код не содержит избыточность.
  • Код содержит минимальное количество классов и методов.

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

Памятка во время отладки

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

Выполните следующие действия:

  • Убедитесь, что можете воспроизвести эту ошибку.
  • Выявите минимальный путь воспроизведения ошибки, т.е. локализуйте место ошибки. Например, если выводится некорректное число, найдите объект, который рассчитывает это число.
  • Напишите автоматический тест, который провалится, но после исправления ошибки завершится успешно.
  • Исправьте ошибку.



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

Ваш e-mail не будет опубликован.