Статьи

Общение с сварливым PHP программистом

Недавно у меня была возможность встретиться с Крисом Хартьесом или, как некоторые из вас могут его знать, » » сварливым программистом. «Поскольку он недавно выпустил новую книгу о тестовой разработке на PHP, я хотел немного подумать!


Я не такой сварливый в реальной жизни. Ладно, может немного.

Хотя я довольно раздражительный, сидя перед компьютерным кодированием, «The Grumpy Programmer» — скорее бренд; маркетинговый инструмент больше всего на свете. Получив опыт работы программистом, я хотел поделиться своими идеями, чтобы помочь другим людям и себе одновременно. Я чувствовал, что один из способов сделать это состоял в том, чтобы создать свой личный бренд, отсюда и рождение Grumpy Programmer.

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

Я не такой сварливый в реальной жизни. Ладно, может немного.


Руководство программиста по созданию тестируемых приложений

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

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


«У меня нет времени на тестирование» — это рефрен, на котором говорит подавляющее большинство программистов в мире PHP.

Программисты Python заботятся о том, как выглядит их код, а Zen of Python записывается прямо в интерпретатор.

Rubyists были знакомы с концепцией разработки через тестирование с момента первого выпуска Ruby on Rails.

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

Я думаю, совершенно очевидно, почему TDD по-прежнему сложно продать в PHP.

«У меня нет времени на тестирование» — это рефрен, на котором говорит подавляющее большинство программистов в мире PHP. Я предполагаю, что у них есть время работать допоздна, отлаживая свои приложения, вместо того, чтобы уловить эти проблемы раньше Тем не менее, становится лучше. В каждой крупной PHP-среде есть комплексные наборы тестов, и каждый день от кого-то в Twitter я слышу, что они начали писать тесты для своего PHP-кода. Это заставляет меня чувствовать себя хорошо.


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


Я использую PHPUnit для написания юнит-тестов и Behat (вместе с Mink и различными драйверами веб-браузера) для пользовательских приемочных тестов.

Существуют и другие инструменты для модульного / интеграционного / функционального тестирования, но PHPUnit — мой предпочтительный инструмент, потому что многие другие инструменты действительно хорошо интегрируются с ним.


Я пробираюсь по краям тестирования кода с 2003 года. Когда я увидел SimpleTest и познакомился с TDD, что-то в моей голове щелкнуло, и я понял ценность этих методов.

Быть евангелистом-испытателем — одинокая, разочаровывающая работа. Люди не осознают ценность тестов, пока не получат их, и не увидят, как легко было добавить некоторые новые функции, и обнаружат, что они сломали что-то еще, прежде чем их клиенты узнали об этом.


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

Python и Ruby, еще не родившиеся в сети, значительно упрощают импорт модулей, которые выполняют тестирование и эксперименты в командной строке.


Каждый язык по-своему отстой. Не нравится PHP? Не используйте это. Не работайте в местах, которые его используют. Используйте языки и инструменты, которые резонируют с вами.

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


Конечно, я призываю людей купить копию моей книги, которая доступна на http://grumpy-testing.com . В настоящее время я обдумываю совершенно новое второе издание книги или книгу о том, как использовать PHPUnit и Behat для тестирования ваших PHP-приложений. Может быть, я объединю два!

Если вы хотите, чтобы вас развлекали, я предлагаю вам подписаться на меня в Twitter. Также я веду блог здесь.


Еще раз спасибо Крису за то, что он поболтал с нами. Итак, теперь дело за вами, Джон К. Читатель. Что вы думаете о тестировании? Требование для разработки веб-приложений, или чрезмерная трата времени?