Рефакторинг для Тестируемости в существующей системе

Попробуйте Функции размера объекта базы данных . Пример:

SELECT pg_size_pretty(pg_total_relation_size('"".""'));

Для всех таблиц что-то по строкам:

SELECT
    table_schema || '.' || table_name AS table_full_name,
    pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size
FROM information_schema.tables
ORDER BY
    pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC;

Редактирование: вот запрос, представленный @phord, для удобства:

SELECT
    table_name,
    pg_size_pretty(table_size) AS table_size,
    pg_size_pretty(indexes_size) AS indexes_size,
    pg_size_pretty(total_size) AS total_size
FROM (
    SELECT
        table_name,
        pg_table_size(table_name) AS table_size,
        pg_indexes_size(table_name) AS indexes_size,
        pg_total_relation_size(table_name) AS total_size
    FROM (
        SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
        FROM information_schema.tables
    ) AS all_tables
    ORDER BY total_size DESC
) AS pretty_sizes;

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

5
задан steve_c 21 August 2008 в 15:34
поделиться

5 ответов

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

Я настоятельно рекомендовал бы добраться, копия книги Michael Feather, Работающей Эффективно С Унаследованным кодом (Растушевками "Унаследованного кода", означает любую систему, которая не соответственно покрыта модульными тестами). Это переполнено хорошими идеями для того, как сломать те связи и зависимости, которые Вы говорите о безопасным способом, который не рискнет представлять ошибки регрессии.

Удача с программой рефакторинга; по моему опыту, это - приятный и очистительный процесс, из которого можно узнать о много.

5
ответ дан 14 December 2019 в 04:52
поделиться

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

2
ответ дан 14 December 2019 в 04:52
поделиться

Я также хотел бы добавить предложение для посещения веб-сайта Рефакторинга Martin Fowler. Он буквально записал книгу по этому материалу.

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

Поблочное тестирование ASP.NET может быть хитрым, но существует много платформ, которые помогают сделать. ASP.NET MVC и WCSF для именования некоторых.

1
ответ дан 14 December 2019 в 04:52
поделиться

Просто выбросив вторую рекомендацию для Работы Эффективно с Унаследованным кодом, превосходной книгой, которая действительно открыла мои глаза для того, что почти любой старый / дрянной / непригодный для тестирования код может пререкаться!

0
ответ дан 14 December 2019 в 04:52
поделиться

Полностью согласитесь с ответом от Ian Nelson. Дополнительно я начал бы заставлять некоторые тесты "высокого уровня" (функциональные или тесты компонента) на месте сохранять поведение от точки наблюдения пользователя. Эта точка могла бы быть самым важным беспокойством о Вашем PM.

0
ответ дан 14 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: