Скажем, у вас есть ошибка, которая была обнаружена при функциональном тестировании довольно сложной части программного обеспечения. Это может быть связано с плохими/неожиданными данными в базе данных, коде среднего уровня или что-то в интерфейсе.
Fine. Мы все были там.
У вас есть модульные тесты для написания и запуска, отладки/протоколирования операторов для вставки, операторов sql для записи и запуска, вещей, которые вы хотите проверить с помощью FireBug и т.д.
Скажем, на первом этапе появляется список потенциальных причин, которые вы хотите исследовать.
Теперь вам нужно решить, какой порядок делать.
Вы:
- Исследуйте причины в порядке, основанном на чувстве кишечника?
- Исследуйте причины, чтобы они были самыми быстрыми, чтобы проверить, насколько медленнее проверять?
- Предположим, что ошибка специфична для этой функции и исследует от большинства функционально-специфических кодов до наименее специфичного для функции кода?
- Предположим, что это кто-то другой, и исследуйте с самого общего кода до вашего конкретного кода?
- Что-то еще я не упомянул?
У меня такое чувство, что первая стратегия чаще всего используется. Возможно, только потому, что я не работаю со многими младшими разработчиками, а более старшие разработчики склонны иметь приличную интуицию. Или, может быть, мы просто думаем, что у нас есть достойная интуиция, но на самом деле нужно использовать более систематический подход.
Любые мысли?