Содержание
Модульное тестирование (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
Памятка во время разработки
Применение модульных тестов позволяет контролировать выполнение следующих условий, которые помогают улучшить код и архитектуру приложения:
- Все модульные тесты завершились успешно.
- Код документирует свое поведение.
- Код не содержит избыточность.
- Код содержит минимальное количество классов и методов.
Если Вам надо добавить новую функциональность в систему, напишите сначала тест. После завершения разработки выполните все тесты.
Памятка во время отладки
Когда Вы находите ошибку в коде, первое желание — исправить ошибку как можно быстрее. Но часто исправление ошибки является причиной другой ошибки.
Выполните следующие действия:
- Убедитесь, что можете воспроизвести эту ошибку.
- Выявите минимальный путь воспроизведения ошибки, т.е. локализуйте место ошибки. Например, если выводится некорректное число, найдите объект, который рассчитывает это число.
- Напишите автоматический тест, который провалится, но после исправления ошибки завершится успешно.
- Исправьте ошибку.