ОБЗОРЫ

Средства тестирования Java расширяют возможности и помогают контролировать код

Проверяя инструментарий тестирования Java-приложений Jtest 8 фирмы Parasoft, мы часто вспоминали о перипетиях печально известной лунной экспедиции "Аполлона 13". Тем не менее Тестовый центр eWeek Labs вовсе не считает методы Jtest 8 образчиком непрочного латания дефектов программирования. Как раз наоборот, мы их рассматриваем как важный шаг вперед по сравнению с прежними средствами диагностики и коррекции ошибок Java-кода, хотя не отрицаем, что в работе с таким ПО есть свои проблемы.

Parasoft Jtest 8 унаследовал от своих прошлых версий обширный комплект легко настраиваемых

 и управляемых средств тестирования Java-кода и пополнился (в Server Edition) мощным

 модулем Bug Detective (вверху), однако сохранил ряд застарелых мелких недоработок - например,

в нем по-прежнему отсутствуeт координация между операцией Undo при редактировании

кода и содержимым панели результатов теста (внизу)

Расценки на выпущенный в сентябре продукт могут показаться поистине космическими: $50 000 за лицензию Server Edition на пять рабочих мест и $3495 за однопользовательскую версию, которая, однако, содержит не все лучшие пополнения Version 8. ПО предлагается в платформенных вариантах Microsoft Windows, Linux и Sun Solaris. Лаборатория eWeek Labs проверила однопользовательскую версию для Windows, а также смогла познакомиться с продвинутыми функциями Server Edition, воспользовавшись серверной инсталляцией Parasoft на Windows-платформе.

Если сопоставить стоимость Jtest 8 с затратами труда программистов, то этот продукт сможет принести многим корпоративным отделам ИТ-разработок большую пользу.

Безусловно, сегодня, когда все больше первоклассных средств разработки можно получить бесплатно, очень сложно убедить начальство потратить четырех-пятизначную сумму на такую, в представлении некоторых менеджеров, роскошь, как автоматизированное тестирование. В ответ лишь можно сказать, что если сопоставить стоимость Jtest 8 с затратами труда программистов, то этот продукт сможет принести многим корпоративным отделам ИТ-разработок большую пользу.

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

В октябре 2003 г. мы основательно проверяли пятую версию Jtest и сегодня по-прежнему довольны тем, что нам понравилось еще три года назад. Среда Jtest 8 позволяет легко формировать и выполнять тесты, а ее функция Quick Fix полностью оправдывает свое название и дает возможность оперативно исправлять дефекты.

Но, к сожалению, приходится констатировать, что в новой версии сохранилась старая недоработка, о которой мы уже писали в обзоре Jtest 5. Опция отмены правки Quick Fix возвращает код к прежнему состоянию, однако не восстанавливает соответствующее извещение об ошибке, пока проверяющий не перезапустит тест. Мы все еще надеемся, что Parasoft обратит внимание на это очевидное и досадное упущение.

Подоплека "проблемы"

Когда у программиста возникает подозрение в серьезной ошибке, он обычно выражает его словами, смахивающими на ходячее выражение "Хьюстон, у нас проблема", появившееся на свет после того самого полета "Аполлона 13". Как правило, не намного больше конкретной информации содержится и в сообщениях о проблемах кода, выдаваемых разработчику приложением для тестирования ПО. Мы отлично осознаем трудности создания подлинно информативных продуктов этого сорта, но того, что есть сегодня, явно недостаточно.

Зачастую дефект, о котором сообщает тестовый инструмент, является лишь симптомом совсем другой неприятности. Вспомним радиограмму астронавта Джеймса Ловелла: "Хьюстон, у нас проблема. В шине Main B упало напряжение". Конечно, суть проблемы была не в самом отказе электропитания, а в серьезных повреждениях от взрыва на борту "Аполлона", случайным следствием которого и оказалась авария электрической системы.

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

Jtest 8 ускоряет идентификацию и решение проблем Java-кода

Во главе списка диагностических усовершенствований Jtest 8 мы бы поставили инструмент Bug Detective, использующий новаторский подход, суть которого точнее всего обозначается как сочетание традиционного статического анализа кода с имитацией его исполнения.

Резюме для руководителей

Jtest 8

Parasoft Jtest 8 демонстрирует желанное смещение акцентов в тестировании Java-кода от чисто языкового анализа к оценке общей продуктивности разработок. Его многогранные и тонко настраиваемые аналитические правила выявляют отклонения от хорошей практики Java-программирования для обширного спектра сред разработчика. Не менее важна и интеграция в Jtest 8 автоматизированных средств общего контроля создаваемого кода. Компании, однако, следует исправить ряд мелких недоработок, сохраняющихся еще с версии 5. Дополнительная информация - на сайте www.parasoft.com/jtest.

Ценовой анализ. Диапазон вариантов лицензирования Jtest 8 простирается от одной рабочей станции до корпоративного отдела разработчиков с расценками от более $3000 до пятизначных цифр. Высокие цены оправдываются потенциальной экономией времени разработчиков, но в то же время противоречат растущей тенденции (и соответствующим ожиданиям пользователей) выпуска первоклассных, но бесплатных инструментов с открытым исходным кодом.

Краткий список аналогов

- Agitator фирмы Agitar Software. Продукт, получивший eWeek Excellence Award, интеллектуально обследующий и проверяющий Java-код и информирующий разработчиков о поведении приложений (www.agitar.com/products).

- Jlint фирмы Artho Software. Пакет инструментов с открытым исходным кодом и интерфейсом командной строки. Обнаруживает реальные и вероятные ошибки, от элементарного порядка в использовании операторов до более сложных условий "гонки фронтов" и тупиковых ситуаций (jlint.sourceforge.net или artho.com/jlint).

- DevPartner Java Edition фирмы Compuware. Этот визуально ориентированный аналитический инструментарий акцентирует внимание главным образом на производительности и ресурсоемкости Java-приложений (www.compuware.com/products/devpartner/java.htm).

Оценка основных характеристик

Возможности

Отлично

Удобство

Хорошо

Расширяемость

Хорошо

Переносимость

Хорошо

Bug Detective ориентирован на анализ устойчивых проблем кодирования, который образно можно назвать исследованием возгорания. Стандартную отладку нередко сравнивают с просеиванием золы в поисках остатка спички, от которой начался пожар. А Bug Detective из Jtest 8 старается вместо этого предугадать проблемы, используя настраиваемые правила идентификации - по терминологии Parasoft - подозрительных точек кода. Это могут быть, например, точки, где Java-код предположительно генерирует исключительную ситуацию из-за присутствия нулевого указателя.

Затем Bug Detective прослеживает код в обратном направлении для нахождения выполняемых ветвей программы, которые могут вести к этой точке, и выясняет, есть ли возможность реально попасть на этот путь.

Мы положительно оцениваем Bug Detective, поскольку он вместе с другими методами тестирования эффективно решает две задачи. Во-первых, этот инструмент выявляет проблемы, связанные со многими классами, без трудоемкого конструирования сложных контрольных примеров. Во-вторых, он не выдает ложноположительных диагнозов, так как сообщает только о дефектах с реально обнаруженным пусковым сценарием. Однако собирающимся покупать Jtest 8 надо иметь в виду, что Bug Detective является высокоуровневой функцией и Parasoft ее зарезервировала за Server Edition.

Обзор ситуации

Другой особенностью Jtest 8 является модуль Code Review, распространяющий сферу действия средств тестирования ПО на территорию, прежде ассоциировавшуюся с понятием контроля исходного кода. При инсталляции функции Code Review в одиночную Windows- или Linux-систему в распоряжении пользователя появляется сканирующая утилита, имеющая доступ к репозиториям исходного кода систем конфигурационного управления CVS, StarTeam, ClearCase или Subversion.

Связи Code Review (например, на какой адрес электронной почты сканер кода должен выслать сообщение об изменениях кода, сделанных конкретным разработчиком) назначаются простым текстовым файлом с именами и значениями свойств. Из-за этого конфигурированию и планированию действий сканера не хватает того продуманного комфорта, которым обладает интегрированная среда Jtest 8 на базе Eclipse. Администратору приходится использовать хоть и знакомые, но примитивные процедуры редактирования текстового файла и настройки планировщика заданий. Однако уже сформированные планы заданий и инструкции по рабочим операциям далее органично интегрируются в графическую среду Jtest.

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

С редактором eWeek по технологиям Питером Коффи можно связаться по адресу: peter_coffee@ziffdavis.com.