Зачем использовать phpunit, когда можно использовать традиционное ручное тестирование?

14

Когда я делаю веб-приложение, я проверяю свою работу в браузере, чтобы увидеть, получаю ли я какие-либо ошибки и исправляю ли их. Я сделал сложные приложения, и тестирование таким образом было легко и быстро. Я посмотрел много видео на YouTube на phpunit и не могу найти цель для этого. Почему эта библиотека полезна? Phpunit больше подходит для php framworks, таких как cakephp или zend? Я не использую какие-либо рамки, просто ядро ​​php. Будет ли phpunit полезным для меня? Если да, то как?

Существует также xdebug, но я не уверен, что это связано.

Сармен Б.
источник
5
Сколько времени вам потребуется, чтобы перепроверить сложное приложение на каждом углу?
@ user1249, phpUnit по-прежнему не может выполнить автоматическое функциональное тестирование. Это только делает автоматическое модульное тестирование.
Pacerier

Ответы:

12

Будет ли phpunit полезным для меня? Если да, то как?

Да, безусловно.

phpunit принадлежит к семейству тестовых библиотек xUnit . Вы используете эти библиотеки для создания автоматически выполняемых тестов, которые проверяют поведение вашего приложения. Это важно для того, чтобы ваши изменения не нарушали существующую функциональность.

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

BenR
источник
по иронии судьбы, первая ссылка от o'reilly 404'd
Феликс Ганьон-Гренье
6

Допустим, вы хотели вручную тестировать приложение каждый раз, когда вы его развертывали. Как бы вы поступили так?

Ну, для начала, вы можете составить список всех вещей, которые вы хотите проверить, чтобы потом не забыть проверить что-то позже. Тогда вы, вероятно, напишете шаги для каждого теста, чтобы убедиться, что вы делаете их одинаково каждый раз. Если вы не уверены, что процесс тестирования, который вы использовали, был согласованным, ваши результаты не были бы согласованными.

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

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

Ирония здесь заключается в том, что, механически перебирая список операций, вы вычисляете. Вы просто делаете это медленнее, чем, скажем, компьютер.

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

Я могу запустить комплексный набор модульных тестов достаточно быстро, чтобы использовать его часто во время разработки, а не раз в неделю перед развертыванием. Это позволяет быстрее обнаруживать ошибки, экономя время и деньги.

Я даже могу написать тесты, которые предсказывают поведение системы, а затем написать это поведение (которое, как я уже знаю, является правильным, потому что я только что проверил его), процесс, известный как разработка через тестирование.

Рейн Хенрикс
источник
5

Ручное тестирование (т.е. нажатие на приложение в браузере) фактически называется функциональным тестированием. Функциональное тестирование и модульное тестирование - это два разных метода, используемых в QA. Почему вы думаете, что не можете использовать их обоих?

Модульное тестирование используется для проверки того, работает ли ваш код должным образом (например, правильно ли ваш веб-сервис обрабатывает ошибку или возвращает результаты, как ожидалось).

При нажатии на кнопку приложения вы тестирование на функциональность приложения.

Будет ли phpunit полезным для меня? Если да, то как?

Модульное тестирование имеет много преимуществ - это может быть очень полезным инструментом при рефакторинге, потому что вы можете убедиться, что код работает должным образом. Кроме того, когда кто-то читает ваш код, очень полезно увидеть предполагаемое использование кода в модульных тестах.

Кристиан П
источник
Модульные тесты также тестируют поведение. Вы создаете ложную дихотомию.
Рейн Хенрикс
@ReinHenrichs, функциональное тестирование выполняется Selenium, а не PHPUnit.
Pacerier
1

Да!

Да. Абсолютно да.

На самом деле, это требует квалификации. Среды модульного тестирования, такие как PHPunit, полезны, если вы пишете и поддерживаете приложение, которое, как ожидается, будут использовать другие люди.

Причины полезности юнит-тестирования включают

  • Регрессионное тестирование для определенных ошибок, которые вы обнаружили, и

  • Выполнение модульных тестов намного быстрее, чем ручное тестирование, и поэтому может быть гораздо более тщательным.

В компании, в которой я работаю, мы пишем модульные тесты, прежде чем писать код, который их передает. Это помогает нам создавать здравые, тестируемые проекты (потому что мы должны думать о том, что мы напишем, прежде чем мы это сделаем!), И это обеспечивает простой способ утверждать, что наш код отвечает требованиям пользователя.


источник