Стоит ли пытаться писать тесты для самого тесно связанного сайта в мире? - PullRequest
30 голосов
/ 23 августа 2010

Представьте себе, что 90% вашей работы - это просто сортировка проблем на очень крупном, очень испорченном веб-сайте.Представьте, что этот веб-сайт написан с использованием самого тесно связанного, наименее сплоченного кода PHP, который вы когда-либо видели, - типа кода, который добавит оригинальных разработчиков в ваш список «пощечину».Представьте себе, что это веб-приложение состоит из 4 очень разных частей (1 коммерческая, 2 «перепрофилированных» и 1 пользовательская) и тонны виртуальной клейкой ленты и прокладок.Представьте, что в нем содержатся методы программирования, в которых основные компоненты веб-сайта фактически полагаются на то, что НЕ работает должным образом, а исправление этих поломок обычно приводит к поломке других вещей.Представьте себе, что из слишком большого количества неудачных попыток вы знаете, что изменение одной, казалось бы, безобидной части сайта, такой как разделение поля «имя» на два отдельных поля «первое» и «последнее», поставит сайт на колени и потребует нескольких часовоткаты, слияния и исправления.Представьте, что вы годами просите клиента просто бросить код и начинать все сначала, но его встречают отчаяние корпоративного уровня и выкручивание рук.Затем представьте себе, что вы можете получить билеты как можно скорее для реализации новых функций, которые на любом другом веб-сайте заняли бы 4 часа, но вы лучше разбираетесь в этом сайте, так что вы указываете 40 часов, затем набираете обороты и выставляете счет 80 часов, но это нормально, потому что клиентпривык к этому со своим сайтом.

Вот еще кое-что, что вы также должны себе представить:

  • сейчас вообще нет тестов
  • естьgoogleteen разных слоев логинов.У некоторых клиентов на самом деле есть 3 разных аккаунта для разных разделов веб-сайта
  • , когда я говорю «тесно связанные», я имею в виду, что циклы операторов include / require могут отображаться как кельтский узел
  • когда я говорю «наименее сплоченный», я имею в виду, что некоторые вещи организованы вроде MVC, но это не совсем MVC.В некоторых случаях вам может потребоваться несколько часов, чтобы выяснить, как URI A отображается в файл B
  • , пользовательский интерфейс был написан как "навязчивый" и "недоступный", были модными словами дня

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

ADDENDUM

Так как многие из вас поднимали этот вопрос: я прибегал к возможности переписывать при каждой возможности, которую мне приходилось встречаться.Специалисты по маркетингу, с которыми я работаю, знают, что их код - дерьмо, и они знают, что это вина фирмы с «самой низкой ставкой», с которой они изначально работали.Я, вероятно, переступил границу подрядчика, указав, что они тратят на меня кучу денег, чтобы обеспечить хосписную помощь для этого участка, и что, перепроектируя его с нуля, они очень быстро увидят ROI.Я также сказал, что я отказываюсь переписать сайт как есть, потому что он на самом деле не делает то, что они хотят, в любом случае.План состоит в том, чтобы переписать его в стиле BDD, но собрать всех ключевых игроков в одном месте непросто, и я все еще не уверен, что они знают, что им нужно.В любом случае, я полностью ожидаю, что это будет очень большой проект.

Спасибо за все отзывы!

Ответы [ 13 ]

0 голосов
/ 24 августа 2010

Возможно, вы захотите подумать об оплате еще 40 часов / итерация, чтобы создать хорошую модель BDD (предметная область) того, как приложение работает или лучше: должно работать. Это создает хорошую структуру, где вы можете документировать необходимые функции. Когда модель будет достаточно полной, вы сможете оценить, сколько времени вам потребуется для ее преобразования в работающее приложение.

0 голосов
/ 24 августа 2010

Если вещи ведут себя надежно, вы можете проверить их, верно? Ваша система работает большую часть времени, так что вы можете протестировать на эти условия успеха.

.. безобидная часть сайта, такая как разделив поле «имя» на два отдельные поля «первое» и «последнее», поставит сайт на колени и требуются часы отката

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

Звучит довольно ужасно, хотя. Время пыль оле резюме?

0 голосов
/ 23 августа 2010

В теории определенно.Чем более тесно связана ошибка в процессе обслуживания, тем важнее тесты.На практике уходи и живи другим днем!

...