Правила отладкиКаждый год в сентябре все вспоминают Грейс Хоппер и фотографию того насекомого, который стал причиной неисправности одного из первых цифровых компьютеров. Дескать то насекомое было первым багом в истории программирования и тот день надо считать Днём тестировщика. Но вообще-то в то время как такового отдельного тестирования не было и скорее всего в тот день программисты занимались отладкой программы. Как и тестирование, сама по себе отладка не служит для повышения качества ПО - это способ диагностики дефектов. И если с тестированием вы скорее всего разобрались, то отлаживать и докапываться до причин бага могут далеко не все тестировщики. Тестировщики, которые не просто репортят то, что видят, но и исследуют найденные баги, ценятся больше. Да и при навыках отладки сам процесс доставляет удовольствие и одно из самых интересных занятий в тестировании ПО.
Классический научный метод включает следующие этапы:
1. Сбор данных при помощи повторяющихся экспериментов
2. Формулирование гипотезы, объясняющей релевантные данные.
3. Разработка эксперимента, призванного подтвердить или опровергнуть гипотезу.
4. Подтверждение или опровержение гипотезы.
5. повторение процесса в случае надобности.
Классический метод имеет много аналогов, используемых при отладке. Ниже приведен
эффективный метод поиска дефекта.
1. Стабилизация ошибки.
2. Определение источника ошибки.
a. Сбор данных, приводящих к дефекту.
b. Аналих собранных данных и формулирование гипотезы. обясняющей дефект.
c. Определение способа подтверждения или опровержения гипотезы, основанного или на тестировании программы, или на изучении кода.
d. Подтверждение или опровержение гипотезы при помощи прроцедуры, определенной в п.2(c)
3. Исправление дефекта.
4. Тестирование исправления.
5. Поиск похожих ошибок.
Для тех, кто хочет более основательно подойти к теме небольшой обзор книжек:
Code Complete — Steve McConnell
Одна из глав книги полностью посвящена процессу отладки и читать её не менее интересно, чем другие главы. Системное изложение материала, советы, примеры кода и ссылки на дополнительные источники - это то, с чем вам прийдется столкнуться взяв в руки эту книгу.
Debugging — David Agans
Автор описывает процесс отладки, который коротко можно описать списком из девяти правил (
http://debuggingrules.com/debuggingrules.jpg). Каждое правило автор объясняет на реальных примерах. Не факт, что эти правила сильно облегчат вам процесс отладки, но игнорирование этих правил точно вам его усложнит.
Debug It! — Paul Butcher
Книга отлично дополняет предыдущую и содержит материал отсутствующий в первой книге.
Why Programs Fail — by Andreas Zeller
Если в первых двух книгах авторы описывают практический подход к отладке, то эта книга более академична. Она больше пригодится для понимания принципов отладки и инструментов вместо одного только приобретения навыка отладки.
Есть ещё "Debugging by Thinking — by Robert Metzger". Её не читал, напишите если понравилась.