Глава 11. Практики тестирования PHPUnit

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

Эрих Гамма (Erich Gamma)

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

Когда необходимо сделать изменение во внутреннем устройстве программы вы работаете над тем, чтобы код легче было понимать и проще было модифицировать без изменения наблюдаемого поведения. Тесты неоценимы при так называемом рефакторинге. Иначе, вы можете не заметить что код не работает пока проводите реструктуризацию.

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

  1. Все юнит-тесты проходят.

  2. Код отображает собственные принципы дизайна [прим. пер.: видимо имелось ввиду соответсвует идее заложенной автором].

  3. Код не избыточен.

  4. Код содержит минимальный набор классов и методов.

Когда необходимо добавить новый функционал в систему - напишите сперва тесты. Работа будет сделана когда все тесты будут проходить. Эта практика более подробно описана в следующей главе.

Во время отлова ошибок (debugging)

Когда к вам поступает отчёт о дефекте, вашей первой мыслью будет быстрее исправить ошибку. Опыт показывает что это не пойдёт на пользу; вполне возможно, что это исправление повлечёт за собой другие ошибки.

Лучшим способом будет следующая последовательность действий:

  1. Убедитесь, что вы можете повторить ошибку.

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

  3. Напишите автоматический тест, который проваливается сейчас, но будет работать после того как вы исправите дефект.

  4. Исправьте дефект.

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

Юнит тесты имеют много перимуществ:

  • Тестирование даёт авторам кода, и тем кто его просматривает, уверенность что изменения дают правильный результат.

  • Написание тесткейсов является хорошим стимулом для того, для выявления граничных условий.

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

  • Юнит тесты предоставляют рабочие примеры того как используется API и, следственно значительно уменьшают объем документации.

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

Бэнждамин Смедберг (Benjamin Smedberg)

Оцени публикацию:
  • 0,0
Оценили человек: 0

Похожие статьи:

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2017 YaPro.Ru

Главная » Веб-мастеру » PHP »