Главная » Java, Структуры данных и алгоритмы » Тестирование и отладка Java

0

Тестирование — это процесс проверки правильности написания программы, а отладка — это процесс отслеживания выполнения пррграммы и выявления ошибок. Зачастую при разработке программы на тестирование и отладку программы уходит большая часть времени.

Тестирование

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

Зачастую программы допускают ошибки при особых видах входных данных. Необходима тщательная идентификация и тестирование подобных особых случаев. Например, при тестировании метода сортировки (то есть упорядочивания) массива целых чисел могут возникнуть следующие ошибки:

•   длина массива равна 0 (элементы отсутствуют);

•   массив содержит всего один элемент;

•   все элементы массива одинаковы;

•   массив уже отсортирован;

•   массив отсортирован в обратном порядке.

Наряду с особыми видами входных данных, необходимо учитывать особые условия работы используемых в программе структур. Например, если массив применяется для хранения данных, необходимо следить за условиями проведения операций на границах массивов (например, вставка/удаление элементов в начале или конце массива).

Наряду с тестированием вручную, можно запустить программу для обработки большого числа случайно генерируемых данных. Класс Randqm находится в пакете Java.util и содержит несколько методов генерации слу-* чайных чисел.

Между классами и методами программы устанавливается иерархия, основанная на отношениях «вызывающий/вызываемый». Другими словами, метод А находится выше метода В, если А вызывает В. Существуют две основные стратегии тестирования — «сверху-вниз» и «снизу-вверх», которые различаются порядком тестирования методов.

Тестирование «снизу-вверх» начинается с методов нижнего уровня в направлении методов высшего уровня. Методы нижнего уровня, не вызывающие никаких других методов, тестируются в первую очередь, после чего тестируются методы, которые вызывают методы нижнего уровня, и так далее. При использовании такой стратегии можно быть уверенным, что, если в методе обнаружена ошибка, она, скорее всего, не вызвана вложенными методами.

Тестирование «сверху-вниз» начинается с обработки методов верхнего уровня. Эта стратегия используется в сочетании с процедурой фиктивных модулей (stubbing), которая создает вместо метода нижнего уровня фиктивный модуль, имитирующий результаты работы оригинального метода. Например, если метод А вызывает метод В для получения первой строки файла, то при тестировании А можно заменить В фиктивным модулем, возвращающим определенную строку.

Отладка

Простейшая процедура отладки программы состоит в использовании операторов печати (выполняется метод System.out.println(<string>)). В этом случае при выполнении программы отслеживаются значения переменных; сложность состоит в том, что после отладки, перед выполнением программы, операторы печати должны быть либо удалены, либо закомментированы.

Более удобным представляется запуск программы с помощью отладочной программы, которая представляет собой специальную среду для управления и наблюдения за выполнением программы. Основная характеристика отладочной программы состоит в расстановке внутри кода отлаживаемой программы точек прерывания. При выполнении отлаживаемой программы происходит ее останов на каждой из контрольных точек. Во время останова осуществляется проверка текущего значения переменных. Кроме того, в последних версиях отладочных программ предусмотрено использование не только фиксированных точек прерывания, но и условных контрольных переходов, выполняемых только в случае истинности определенных выражений.

Базовой программой отладки в языке Java является программа jdb, применяющая интерфейс командной строки. Интегрированные среды разработки для программирования на Java позволяют выполнять программы отладки и в графическом интерфейсе.

Источник: Гудрич М.Т. Г93 Структуры данных и алгоритмы в Java / М.Т. Гудрич, Р. Тамассия; Пер. с англ. A.M. Чернухо. — Мн.: Новое знание, 2003. — 671 е.: ил.

По теме:

  • Комментарии