Зачем нужно тестирование?

Лет 7 назад я думал, что тестирование - это когда берётся программа и по очереди нажимаются все кнопочки и записывается результат. Для многих, к сожалению, это до сих пор так. Сейчас я понимаю, что основа тестирования - это классные модульные тесты.

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

Преимущества модульных тестов

  • Создавая модульные тесты, вы больше не будете бояться изменять старый код, боясь что-то там поломать и узнать об этом потом от пользователей. Если вы что-то поломаете, то сразу узнаете об этом и с хорошими тестами даже сразу увидите как исправить ошибку.
  • Можно будет позволить себе писать чуть меньше документации, отправляя программистов, использующих/поддерживающих ваш код, читать тесты. Из хороших тестов понятно, что делает код и как его можно использовать.
  • Написание тестов заставляет писать более правильные интерфейсы классов и их взаимодействия. К классам, где всё висит на соплях, просто не получится нормально написать тесты.

Естественно, это не панацея, но всё же уровень уверенности в коде и себе значительно увеличивает.

Люди, пишущие модульные тесты, обычно являются приверженцами “Разработки через тестирование” (Test-Driven Development). Основная идея - для добавления функциональности надо сначала написать тест, а потом уже код.

Цикл разработки

  1. Добавить тест
    Для того, чтобы написать тест, разработчик должен чётко понимать требования к функциональности. Это заставляет хорошо разобраться с тем, как оно должно работать, до того как писать код.

  2. Запустить все тесты и увидеть, что один не работает
    Если вы добавили тест на функцональность, которой ещё нет, то тест должен провалиться. Если все тесты работают нормально, то либо кто-то уже реализовал нужную функциональность за вас, либо вы плохо написали тест. К сожалению, первое случается редко.

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

  4. Рефакторинг
    Оптимизируйте код, пока не будете им довольны. Можно смело вносить любые изменения, ведь вы можете проверить всё с помощью тестов.

Наиболее распространённые средства для создания модульных тестов для PHP: PHPUnit и SimpleTest. Так как я люблю CakePHP, а в нём встроена поддержка SimpleTest, то я использую его.


Понравилось?

  1. Подпишись через RSS
  2. Расскажи о http://php.southpark.com.ua друзьям.
    Все способы хороши: ICQ, E-mail, свой блог, комментарий в чужом блоге или сообщение на форуме
  3. Добавь статью на news2.ru, Хабрахабр или в закладки

Огромное спасибо!

И не стесняйтесь комментировать - у меня стоит плагин, который убирает rel="nofollow" у людей, которые написали больше 5 комментариев.

RSS feed | Trackback URI

4 комментария »

2007-10-20 14:56:13

[...] Test-Driven development, . “google” “yahoo”. [...]

 
2007-10-20 15:08:37

[...] , , , - , . [...]

 
Comment by andrei Subscribed to comments via email
2007-12-22 21:25:57

Для меня тема не раскрыта.
Дайте примеров.

 
 
Имя (required)
E-mail (required - never shown publicly)
URL
Текст комментария
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.