Учебник PHPUnit? Или более общее - учебное пособие по единичному тестированию стоит рекомендовать?

Я ищу учебник, в котором объясняются почему и как писать полезные модульные тесты. В частности, меня интересует PHPUnit, однако более общий может быть хорошим, чтобы объяснить это. Обратите внимание, что я не ищу техническую информацию о том, как использовать PHPunit - скорее учебник по образу мышления!

Ответы

Ответ 1

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

Написание UnitTests предназначено для проверки функциональности приложения. Таким образом, учитывая это, вы пишете основной класс, который имеет 3 функции, getData setData и displaydata (просто размышляя над моей головой). Вы хотите написать единичный случай, который входит в набор данных (вы передаете хорошие данные и плохие данные, потому что важно знать, что это ошибки правильно). Затем вы проверяете setData либо по вызову DB, либо с тем же классом, используя getData, и пытаетесь получить данные с плохими данными, хорошими данными и т.д. Убедитесь, что это правильно. Затем вы записываете данные дисплея и полоскаете и повторяете.

В основном вы хотите проверить, что основной класс (или классы приложений) правильно обрабатывает данные (ошибки/хорошие данные и т.д.). Если все тесты выходят в чистоту, вы можете переместиться и написать тест для других классов, которые используют этот основной класс. Но нет смысла двигаться дальше, если ваш основной класс не прошел/не прошел тесты, иначе отладка станет ночной кобылой. Я никогда не смотрел PHP Unit test, я просто написал все мои приведенные сценарии использования (IE: как будут использоваться/реализованы функции). Это общий способ думать, что написать тестовый вариант.

Надеюсь, что это поможет.

Ответ 2

Я написал презентацию, охватывающую только это как вступительное слово. Надеюсь, он будет функционировать без примечаний спикера:
http://www.scribd.com/full/34941838?access_key=key-1u9c5kmupy1889f4o6tv (это на самом деле еще ранняя версия, любая обратная связь, которую вы могли бы мне дать, была бы оценена:)

Он сильно заимствует из книги " xUnit Test Patterns: тестовый код рефакторинга" http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=alex010-20&o=1&p=8&l=as1&m=amazon&f=ifr&md=10FE9736YVPPT7A0FBG2&asins=0131495054"

Также посмотрите на презентации Себастьян Бергманн создатель PHPUnit http://talks.php.net/index.php/Testing

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

Наконец (или, возможно, после мысли) ваши дальнейшие шаги по достижению "профессиональных стандартов" в QA выиграют, пройдя через

Американское общество качества: http://www.asq.org/

При покупке членства (от $50 до $150 USD) вы можете зарегистрироваться на курсы и получить сертификат в QA.

Кроме того, их учебные материалы курса (стоимость неизвестно) могут быть отправлены на ваше рабочее место для самостоятельного изучения, написания теста, получения сертификата и обучения других в QA.

Надеюсь, это поможет. - Алекс

Ответ 4

Официальный сайт PhpUnit также содержит хорошие примеры и все ПОЧЕМУ и КАК.

Посмотрите it

Ответ 5

Я только начинаю изучать, как правильно использовать TDD, и в настоящее время я использую PHPUnit. Я не могу преувеличивать, как помогла мне работа дяди Боба (Robert C. Martin). Мне посчастливилось иметь компанию, которая предоставила видео. Но его работа с "Чистым кодом" потрясающая.

В видеороликах он использует "колпачок" для переключения между различными этапами TDD (красный > зеленый > рефакторинг) и описывает этапы с отличной детализацией. Я также использую TDD Kata для улучшения навыков умения PHP и TDD. Я считаю, что мышление - это не то, к чему привыкли кодеры. Поскольку вы скопируете исправление неудачного теста, вы считаете small, а не большим. Сегрегация конкретной задачи, которую вы выполняете с кодом, не позволяет вам слишком далеко заходить. В данный момент вы либо кодируете, чтобы проходить тест, сдавать тест или рефакторинг кода - нигде между ними. И поскольку это небольшие итерации, я считаю, что лучше с разработчиком - это со мной!

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

Иди со мной. Я все еще участвую:)