Я думаю, что возможность создавать виды оповещений, о которых вы будете говорить, будет включена в Мониторинг обслуживания (см. Раздел Цели уровня обслуживания):
Во-первых, я рекомендовал бы поблочному тестированию все продвижение изменений, я думаю больше всего, что все согласились бы, что это - хорошая идея для регрессии.
Однако для существующего кода, это - одна из тех ситуаций, где необходимо посмотреть на то, сколько риска Вы желаете или позволяетесь ввести в продукт. Проблема состоит в том, что при запуске к модульному тесту существующей кодовой базы Вы собираетесь скоро понять много возможностей для улучшения рефакторинга и дизайна.
Возьмите его от меня, если Вы - сторонник хорошего дизайна, но Вы не были уполномочены для создания решительного рефакторинга descisions, Вы только собираетесь закончить с разбитым сердцем, когда Вы пробуете к тестам записи на части прежней версии - и да, если это не имеет существующего набора тестов его испытывающим необходимость рефакторингом. Если Нельзя внести высокие изменения влияния в производственное приложение, Вы собираетесь закончить тем, что реализовали что-то, что нам нравится называть "шаблоном "адаптер" мусора".Удачи!
Я предложил бы получить копию Работы Эффективно с Унаследованным кодом.
Мы прошли эту книгу в исследовательской группе. это было болезненно, но полезно.
Темы включают:
Вы видите короткое в к этому по http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf
приложение прежней версии разделено на уровни?
если так, добавьте тесты единиц к слою бэкэнда/бизнеса сначала
в противном случае добавьте модульные тесты к новому продвижению кода, и когда ошибки будут обнаружены (для регрессионного тестирования)
если у Вас есть время/стремление к модульному тесту все это (в конечном счете), запустите список функций (критические сначала) и добавьте модульные тесты на тех, некоторые за один раз
Если это - код, Вы наследовались, по-видимому, необходимо начать читать его и понимать то, что это делает и не делает. Я предлагаю, чтобы Вы записали модульные тесты, которые отражают Ваше понимание роста кодовой базы. В конечном счете Вы создадите совокупность знаний о своем унаследованном приложении, в котором говорится, что 'эти функции являются функциями, которые проходят те тесты' в противоположность 'этим функциям, функции, которые имеют те реализации'. Затем у Вас будет больше свободы и уверенности для внесения изменений, не повреждая вещи.
Я не записал бы тестов только ради наличия тестов. Я был бы только тесты записи, когда ошибка обнаружена, или Вы добавляете новую функциональность. Затем тесты записи для упаковки кода, который необходимо измениться/реализовать для определения то, что он в настоящее время делает. В случае ошибки запишите тест, чтобы доказать, что ошибка была исправлена. В случае нового кода, что это, как предполагается, делает. Теперь пойдите и реализуйте фиксацию/новую возможность. Если Вы находите, что испытываете желание затронуть, код вне Вашего теста "поле" - пишут еще некоторые тесты для упаковки той области (или пересмотреть изменения, которые Вы хотите внести). Представьте новые тесты постепенно по мере необходимости для максимизации инвестиций, которые Вы делаете в тестах. Запись тестов, чтобы доказать, что рабочие работы кода кажутся бессмысленными, пока она, как не показывают, повреждается.
Если веб-приложение не протестировано на единицу, это, вероятно, также не легко тестируемое единицей. Подвергание его под модульными тестами может быть опасным, поскольку у Вас нет [Единица] тестов, да, курицы и яиц. Кроме того, это занимает время и не приносит много значения к приложению.
Я стремился бы писать от начала до конца автоматический тест с Селеном, Watir, HtmlUnit, или HttpUnit, YMMV для части прежней версии Вашего приложения. Эти тесты (тесты характеристики) придавят Ваше текущее поведение приложения, как модульные тесты делают, но с внешней стороны, позволяя Вам внести изменения со способностью обнаружить нежелательные побочные эффекты.
Запишите модульные тесты на новый код, и при изменении унаследованного кода, является ли это для решения проблемы или добавления новых возможностей.
Тесты записи в известных "болевых точках" приложения. Код, который часто повреждается или обычно является более высокого риска, является хорошим местом для запуска, поскольку это помогает создать линию фронта из защиты в этой области и подвергает команду объему модульных тестов в том приложении.
Каждый раз дефект открыт против приложения, продвижения, попытайтесь записать модульный тест для представления этого поведения. Это сообщит, когда это будет зафиксировано, и, надо надеяться, препятствуйте тому, чтобы он был представлен снова в будущем.
Кроме того, ищите код, который должен быть пересмотрен. Любое усилие по рефакторингу должно быть снабжено предисловием созданием модульных тестов. Это помогает гарантировать, что это работало и прежде и после внесения изменений. Рефакторинг может быть жестким в начале из-за риска "волнового эффекта", где одна поломка может нанести ущерб через целое приложение неожиданными способами.