Что, почему и как отлаживать
В информатике отладка - это процесс, когда разработчик или программист пытается найти источник ошибки, изолировать его, а затем исправить или создать способ обхода. Слово «отладка» впервые появилось в 1940-х годах, когда Грейс Хоппер работала над компьютером Mark II и заметила, что он работает некорректно. Причина заключалась в том, что моль застряла в реле компьютера, что привело к его неисправности. Итак, тогда термин «ошибка» был буквальным!
Обнаружение и исправление ошибок - важный этап в цикле разработки программного обеспечения. Обычно процесс обнаружения ошибки или сценария, при котором программа не работает должным образом, является частью этапа тестирования разработки программного обеспечения.
Хотя этап тестирования следует за этапом проектирования (который включает в себя проектирование, обрисовку и реализацию кода) в цикле, на практике тестирование проходит параллельно с написанием кода. Обычно большие программные проекты делятся на несколько разделов. У каждого есть своя команда разработчиков и свой автономный функционал. Затем эти разделы объединяются в общий программный продукт. Вот почему каждая часть должна пройти свой собственный процесс тестирования, чтобы убедиться, что она работает должным образом, прежде чем она будет добавлена в основной проект.
Хорошие программисты знают, что они тратят столько же времени на отладку, сколько на написание, поэтому они пытаются учиться на своих ошибках. - Брайан В. Керниган, Роб Пайк
Зачем нужна отладка?
Отладка - определенно самая ужасная задача для разработчиков. В конце концов, нам нравится строить, а не исправлять ошибки! Тем не менее никто не может отрицать важность отладки. Программы или приложения, которые отлично работают с первого раза, являются исключением, а не правилом.
Отладка может помочь разработчикам выявлять различные типы ошибок, включая синтаксические ошибки, семантические ошибки и логические ошибки. Хотя компиляторы могут значительно помочь в обнаружении некоторых синтаксических ошибок, некоторые из них, например ошибки времени выполнения, могут зависеть от среды и зависимостей, что означает, что они не будут возникать при каждом запуске приложения.
Часто тестирование и отладка программного обеспечения занимает больше времени, чем написание самого программного обеспечения. Умение находить и исправлять ошибки - ценный навык для любого разработчика, потому что это означает, что вы творчески мыслите и умеете решать проблемы. Однако этот процесс можно сделать более эффективным, если у компании или группы есть установленная стратегия отладки. Не говоря уже о финансовых потерях, которых можно избежать, если в продукте будет обнаружена серьезная ошибка до его развертывания.
Как отлаживать
Существуют разные подходы к отладке, которые выполняют разные функции. Некоторые подходы воспроизводят условия ошибки, которые вызвали сбой, в то время как другие проверяют состояние программы на каждом этапе приложения и обнаруживают ошибки, которые вызвали ошибки. Эти методы могут помочь программистам отслеживать выполнение кода шаг за шагом и останавливать его при возникновении ошибки.
Мы можем разделить методы отладки на две основные категории:
- Методы, которые анализируют производительность программы путем проверки основной памяти после сбоя программы (посмертная отладка).
- Методы, которые анализируют программу шаг за шагом, выполняя ее в отладчике («динамическая отладка» или «отслеживание отладки»).
Большинство приложений сегодня содержат тысячи строк кода, что может усложнить процесс отладки. Для облегчения отладки можно использовать некоторые стратегии, например модульные тесты, обзоры кода и парное программирование.
Модульное тестирование
Иногда можно четко определить место в коде, где произошла ошибка. Однако это не всегда так. В большинстве случаев местонахождение ошибки неясно. Здесь может оказаться полезным модульное тестирование. Это позволяет программисту запускать определенную часть кода с определенным вводом. Это может упростить процесс обнаружения ошибки.
Парное программирование
Метод гибкой разработки программного обеспечения, при котором два программиста работают вместе над одной и той же кодовой базой, обычно в одном и том же физическом месте. У двух программистов будут разные роли. Драйвер пишет код, а наблюдатель или навигатор просматривает каждую строку кода, написанную драйвером. Два программиста часто меняются ролями, чтобы повысить эффективность этого подхода.
Проверка кода
Подход к обеспечению качества программного обеспечения, при котором два или более программиста систематически проверяют код друг друга на наличие ошибок и неопределенностей.
Инструменты отладки
Инструменты отладки или отладчики - это специальные инструменты, созданные исключительно для анализа программ и поиска ошибок. Некоторые отладчики анализируют тестовый пример и запускают его, чтобы определить, какие строки кода не выполнялись правильно или не выполнялись вообще. Напротив, другие моделируют поведение кода, позволяя программисту моделировать поведение программы в данном программном обеспечении (операционной системе) на основе конкретных зависимостей.
Тестирование против отладки
Тестирование и отладка - это два термина, которые обычно используются вместе, что может привести к неправильному пониманию того, что они означают одно и то же.
На самом деле они сильно отличаются друг от друга. У них действительно есть некоторые общие функции, но они различаются по дизайну, исполнению и преимуществам. И тестирование, и отладка являются важными этапами разработки программного обеспечения и дают разные результаты. Вот почему необходимо правильно понимать различия между ними, чтобы оптимизировать наш процесс разработки программного обеспечения.
Тестирование
Тестирование обычно проводится разработчиком (или тестировщиком) для выявления любых проблем и странного поведения в программном обеспечении. Тестировщик выполняет ручные и / или автоматические тестовые примеры для программного обеспечения и собирает информацию о результатах. Эти результаты отправляются разработчикам, чтобы они могли устранить причину проблемы. По завершении они отправляют программное обеспечение обратно тестеру.
Отладка
После получения отчета об ошибках от тестера разработчики отлаживают программу. Затем разработчики отлаживают свою работу, ища ее, чтобы найти причину ошибки, используя соответствующий метод отладки. Как только они обнаруживают ошибку, они изменяют код и проверяют, исправлена ли ошибка.
Таким образом, тестирование предназначено для обнаружения ошибок, а отладка - для поиска причины конкретной ошибки (или ошибки вызывая ошибку).
Заключение
Отладка - сложная задача, которая может занять значительное и непредсказуемое время. Поэтому цель - попытаться максимально упростить его. К методам, которые могут помочь в достижении этого, относятся хороший дизайн, хороший стиль, тесты условий, утверждения, добавление проверок в код, наличие хорошо разработанных интерфейсов и ограничение использования глобальных данных.
Эта статья - первая из серии из четырех частей, в которой подробно рассматривается все, что связано с отладкой. Следующие статьи будут:
- Все об отладке: методы. Я подробно расскажу о различных методах отладки, используемых в инструментах отладки.
- Все об отладке: специальные системы. Я буду обсуждать отладку специальных систем, таких как крупномасштабная отладка, параллельная отладка системы и многое другое.
- Все об отладке: расширенные подходы. Я буду обсуждать оставшиеся без ответа вопросы об отладчиках, визуальных отладчиках и последних исследованиях по отладке.
использованная литература
- Брайан В. Керниган / Роб Пайк: Практика программирования. Аддисон-Уэсли, 1999.
- Ко, А. и Майерс, Б. (2008, май). Новый взгляд на отладку. В 2008 году 30-я Международная конференция ACM / IEEE по программной инженерии.
- Hailpern, B., & Santhanam, P. (2002). Отладка, тестирование и проверка программного обеспечения. IBM Systems Journal.