Отладка и тестирование приложений

Отладка — это процесс пошаговой проверки программ и приложений с целью выявления ошибок.

Процесс отладки характеризуется тем, что программа останавливается каждый раз в точках прерывания. Если вы забыли установить точки прерывания, то отладка не будет отличаться от обычного запуска.

Рассмотрим отладку на примере. Создайте новый класс с именем Debuging и введите предложенный код:

Для запуска отладчика нажмите кнопку с изображением жука на панели инструментов.

При нажатии данной кнопки включается режим отладки текущей программы, если окно кода программы активно. Если активна панель Package Explorer, то отладке подвергнется выбранный (выделенный) класс, при этом класс можно дополнительно выбрать, если их несколько.

На рис. 1.21 выделено поле, в котором пользователь может установить точки прерывания.

Рис. 1.21. Линейка точек прерывания

 

Для того чтобы поставить точку, нужно дважды щелкнуть мышью в данном поле напротив нужной строки, где планируется остановка программы. Маркеры точек прерывания представляют собой небольшие красные квадраты.

Установите точку прерывания напротив строки

System.out.print ("Шаг "+i+"\n");.

После того, как вы установите точку прерывания и нажмете кнопку , на экране появится диалоговое окно (рис. 22), предлагающее переключить режим рабочего стола из Java в Debug.

Рис. 1.22. Предложение переключения рабочего стола

 

Для того чтобы переключиться обратно в режим Java, используйте кнопку , находящуюся в верхнем правом углу рабочего стола. Далее, примите данное предложение, нажав кнопку Yes, и в итоге рабочий стол примет вид, представленный на рис. 1.23.

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

Рис. 1.23. Рабочий стол Debug

 

В компоновке Debug можно выделить следующие основные компоненты:

· Окно Debug. В данном окне отображаются задействованные в отладке элементы, а так же панель управления процессом отладки (рис. 1.24).

Рис. 1.24. Окно Debug

 

· Окно состояния переменных и точек прерывания. Вкладка Variables содержит список переменных, задействованных в текущей точке прерывания. Данное окно является наиболее важным в процессе отладки, оно производит мониторинг переменных на каждой точке прерывания. Именно с помощью данного окна программист может увидеть поведение объекта, изменение его свойств более тщательно в процессе выполнения программы.

Вкладка Breakpoints содержит список точек прерывания, которые установил программист. Точки прерывания можно отключать и включать в процессе отладки, устанавливая или удаляя маркер напротив нужной точки (рис. 1.25). В левом столбце указаны идентификаторы (имена) переменных, в правом — их текущее значение.

Рис. 1.25. Окно переменных

 

· Панель Outline, редактор кода и консоль.

Теперь программа запущена в режиме отладки. Последовательно выполняя операторы программы, отладчик доходит до первой точки и останавливает ход выполнения. Программист имеет возможность посмотреть значение переменных программы на момент останова. После того как вы проанализируете состояние программы, ее можно продолжать. Нажмите кнопку («Resume») или клавишу F8 для продолжения.

В нашем случае программа была остановлена на операторе вывода данных на консоль. После продолжения выполнения тело цикла продолжит выполняться, так как в теле нашего цикла только один оператор, он выполнится, и на консоль выведется первая строка, на первом шаге переменная i=0, в этом можно убедиться просмотрев вкладку Variables окна состояния (рис. 1.26).

Рис. 1.26. Состояние переменных на первом шаге

 

После вывода строки цикл начнет выполняться еще раз, переменная i изменится и станет равной 1. При этом в панели Variables она выделится желтым цветом, что сигнализирует о изменении ее значения (рис. 1.27).

Рис. 1.27. Состояние переменных на втором шаге

 

И так далее, нажимая клавишу F8 или кнопку , программа будет переходить от одной точки прерывания к другой. Если точка прерывания установлена на оператор, находящийся в цикле, программа в этом случае будет останавливаться на этой точке столько раз, сколько раз будет проходить цикл.

В отладчике Eclipse есть еще одна полезная функция, с помощью которой можно увидеть значения сложных выражений. Например, нас интересует значение логического выражения (условие), при котором выполняется цикл. Для этого выделите нужный текст, в нашем случае это i<10 в блоке условия цикла, и нажмите сочетание клавиш <Ctrl>+<Shift>+D, появится всплывающее окно, в котором будет отображен тип выражения (в нашем случае это boolean) и его состояние.

Когда программа дойдет до конца, отладка закончится. Для повтора отладки нужно еще раз нажать кнопку .

Для прерывания работы отладчика нажмите кнопку в панели Debug.

Помимо отладки c использованием безусловных точек прерывания, возможно дополнительно установить условия останова на точке прерывания. Это очень полезная особенность отладчика Eclipse, которая позволяет в некоторых случаях значительно упростить процесс отладки. Для того, чтобы задать условие, при котором будет происходить останов, нужно открыть окно свойств точки прерывания. Для этого наведите курсор мыши на нужную точку прерывания в строке, нажмите правую кнопку мыши, и выберите в раскрывающемся меню пункт Breakpoint Properties (рис. 1.28), откроется окно свойств выбранной точки прерывания (рис. 1.29).

Рис. 1.28 Выбор пункта Breakpoint Properties

 

Установите галочку на кнопке выбора Enable Condition (Включить Условие) и в поле ввода введите необходимое условие, при котором будет происходить останов на данной точке. Для примера, введите логическое выражение (i%2)==0. Данное выражение будет принимать значение «истина» каждый раз, когда остаток от деления i на 2 будет равен 0, то есть каждый раз, когда i будет принимать четные значения.

Запустите процесс отладки и убедитесь в том, что теперь останов будет происходить каждые два прохода цикла, а не один, как было раньше.

Так же можно выбрать тип условия прерывания — ниже, под полем ввода находится две кнопки выбора — condition is 'true' и value of condition changes. При выборе первого, останов будет происходить каждый раз, когда введенное логическое выражение примет значение «истина», при выборе второго, останов будет происходить каждый раз, когда введенное значение или константа изменит свое значение.

Раскрывающийся список Suspend Policy устанавливает политику останова. При выборе значения Suspend Thread останов будет происходить на уровне текущего потока thread, при выборе Suspend VM — на уровне самой виртуальной машины Java.

Рис. 1.29 Свойства точки прерывания