Создание набора тестов в большой существующей базе кода Java - PullRequest
10 голосов
/ 16 июля 2011

Я работаю над веб-приложением с существующей кодовой базой, которая, вероятно, существует уже 10 лет, есть ~ 1000 файлов классов и ~ 100 000 строк кода. Хорошей новостью является то, что код организован хорошо, бизнес-логика отделена от домена контроллера, и существует высокий уровень повторного использования. Плохая новость заключается в том, что существует только самое начало набора тестов (JUnit); максимум 12 дюжин тестов.

Код организован довольно типично для корпоративного Java-проекта. Имеется пакет контроллера типа stuts-esque, модель состоит почти из чисто объектов данных, существует слой базы данных, похожий на спящий режим, который в значительной степени инкапсулирован в объектах доступа к данным, и несколько пакетов услуг, которые просты, самодостаточны и логичны. Конечной целью создания этого набора тестов является продвижение к процессу непрерывной интеграции.

  • Как бы вы решили создать набор тестов для такого приложения?
  • Какие инструменты вы бы использовали для упрощения процесса?

Любые предложения приветствуются. спасибо!

Ответы [ 4 ]

7 голосов
/ 16 июля 2011

Начните с чтения Эффективная работа с устаревшим кодом (сокращенная версия здесь ).Далее я бы написал пару сквозных тестов на дым, чтобы охватить наиболее распространенные случаи использования.Вот несколько идей о том, как подойти к нему: http://simpleprogrammer.com/getting-up-to-bat-series/

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

3 голосов
/ 16 июля 2011

Я бы создал несколько интеграционных тестов. Поскольку они занимают много кода, вы, вероятно, получите ошибку, когда испортите bigtime.

Я бы не стал «создавать набор тестов» как таковой, скорее, перед тем, как менять какую-то часть, определите набор тестов для него, а затем приступайте к его изменению.

Я бы посоветовал изучить инструмент покрытия тестов (я не пишу код на Java, поэтому не знаю, какой инструмент лучше всего подходит для Java). Хотя он не говорит вам, когда вы тестировали достаточно, он сообщает вам, когда вы тестировали слишком мало;)

Удачи!

2 голосов
/ 16 июля 2011

Если бы проект еще не был разработан, я бы это сделал.Также обязательно используйте насмешливый фреймворк, такой как mockito.Hudson - это хороший инструмент CI, который прекрасно интегрируется с Maven.

1 голос
/ 17 июля 2011

Похоже, вы будете писать как модульные, так и функциональные тесты, поэтому JUnit может не подойти для этого. Вы рассматривали TestNG ? Поскольку у вас сейчас очень мало тестов, у вас есть возможность выбрать то, что лучше для вашей работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...