Насколько часто вы попадаете в замкнутый цикл из ошибок при разработке приложения в PHP? Ошибка исчезает, а потом появляется в другом блоке кода, или баги постоянно сменяют друг друга. Самое неприятное обстоятельство - вернуться к багу, который был исправлен несколько часов назад. Когда отлаживание алгоритма начинает приносить раздражение - о конструктивном подходе к задаче можно забыть. Именно для того, чтобы не дать вам забросить перспективную разработку или просто выполнить поставленную задачу, существует возможность использовать PHPUnit тестирование.
Что такое PHPUnit тестирование?
С Unit или же "модулем" плотно связано понимание процесса тестирования. Модуль - это работающая часть кода, функционал которой можно протестировать автономно. Соответственно, PHPUnit тестирование представляет собой последовательную проверку всех модулей приложения на корректность выполнения их алгоритмов.
Тесты можно прописать один раз и впоследствии использовать после внесения любых изменений.
Преимущества модульного тестирования
Вот несколько неоспоримых преимуществ Unit-тестирования:
- Оперативная проверка правок. Довольно удобно проверять работоспособность модуля немедленно после его изменения. Операция займет несколько секунд.
- Облегченная передача кода другому разработчику. Если вы прекратили разработку продукта и ее продолжит другой специалист, то процесс передачи пройдет намного легче.
- Безопасное редактирование. Если вы боитесь, что изменения модулей могут повлечь за собой глобальную проблему для системы в целом, то без предложенного Unit-тестирования обойтись будет очень сложно.
Использование PHPUnit тестирования
Использовать модульное тестирование достаточно просто. Ниже будет описано, как установить и запустить первый тест.
Установка
Элементарный способ установить библиотеку PHPUnit - выгрузить его по каналу PEAR. Для этого нужно вписать:
"1 pear config-set auto_discover 1" "2 pear install pear.phpunit.de/PHPUnit"
Для пользователей, которые хотят иметь углубленное понимание по этому процессу подойдет ручной вариант установки через официальный сайт PHPUnit.
Запуск
Любой тест запускается при помощи вызова команды phpunit. Укажите php-файл как в примере ниже:
"1 phpunit /path/to/tests/RemoteConnectTest.php"
После этого, запущенный тест вернет результат:
"1 PHPUnit 2.5 by Aloizii MagaRich" "2 ." "3 Time: 1 second" "4 Tests: 1, Assertions: 1, Failures 0"
Итог представляет из себя краткие статистические данные по работе теста, такие как время операции, количество тестов, утверждений и ошибок.
Также во второй строке можно заметить знак ".", сигнализирующий о том, что тест завершился успешно. Это общий итог операции. Ниже представлены другие варианты вывода, если тест:
- "F" - не выполнен.
- "I" - невозможно закончить.
- "S" - пропущен.
Стандартные тесты
Также приведем список стандартных вариантов тестирования, которые можно использовать в 80% ситуаций. Название каждого теста начинается с упомянутого ранее утверждения или Assert:
- "True/AssertFalse". Используется для выявления корректности значений на соответствие true/false.
- "Equals". Проверяет равенство.
- "GreaterThan". Сопоставляет переменные (присутствует большее количество вариаций этого сравнения).
- "Contains". Тестирует правильность содержания переменной.
- "Type". Исследует тип переменной.
- "Null". Проверяет равенство null.
- "FileExists". Подтверждает существование файла.
- "RegExp". Тестирует регулярность выражения.
Модульное тестирование: почему нет?
Почему все разработчики не используют PHPUnit тестирование? Закономерный вопрос, когда дело касается такого эффективного инструмента. Вот несколько распространенных причин:
- Тестирование затратно по времени. Написание строк с тестом занимает время, которое можно было уделить построению общей структуры приложения. Однако в конечном счете продукт будет дополняться. Несколько часов добавления теста на раннем этапе сэкономит больше времени на стадии доработки или сопровождения.
- Использовать модульные тесты - скучно. Конечно, прогонять проверку каждого модуля в большой разработке - это рутина, особенно по сравнению с ее созданием. Но поддержка 100% работоспособности - это элемент такта, который может позволить себе только настоящий профессионал.
- Уверенность в то, что код будет работать без проверок. Возможно, что автор досконально знает свой код и может оперативно исправить любой баг. Однако если с приложением будет работать другой человек, то не факт, что он сможет вникнуть во все нюансы так же быстро.
Как можно заметить, все причины, перечисленные выше, скорее, продиктованы ленью и непониманием предмета, нежели практичностью и здравым смыслом.