Обеспечение качества действующего Кодекса в процессе рефакторинга - PullRequest
3 голосов
/ 23 ноября 2010

Наша команда планирует переориентировать некоторые модули в устаревшей кодовой базе. Это веб-приложение, написанное на Java.У него вообще нет юнит-тестов.

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

Какие другиемеры (черный ящик / белый ящик / процессы), которые я могу предпринять, чтобы убедиться, что рефакторинг не нарушает какие-либо существующие функции.

текущая система довольно стабильна и работает более 8 лет.

Спасибо, Грей

Ответы [ 3 ]

2 голосов
/ 23 ноября 2010

Перед началом работы прочитайте от Michael Feathers, эффективно работающую с устаревшим кодом .

Весьма вероятно, что код в его текущем состоянии не может быть эффективно проверен модулем (потому что он, вероятно, не в единицах).Что я видел, хорошо работают тесты уровня интеграции, которые просто запускаются с некоторыми разумными входами и записывают результаты;веб-приложения делают это особенно уместным.Напишите их, а затем прорастите небольшие методы и классы - модульное тестирование всего нового - сохраняя при этом эти высокоуровневые тесты.Это больше работы, чем делать собственно TDD с самого начала, но это определенно выполнимо.

1 голос
/ 23 ноября 2010

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

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

0 голосов
/ 23 ноября 2010

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

...