Снижение трудоемкости интеграции и системных тестов - PullRequest
4 голосов
/ 28 апреля 2010

Я бы хотел провести интеграционные и системные тесты для своих приложений, но для хорошей интеграции и системных тестов часто требовалось столько усилий, что я не беспокоился. Несколько раз, когда я пытался, я писал пользовательские, специфичные для приложения тестовые наборы, которые каждый раз создавали ощущение необходимости заново изобретать колесо. Интересно, это неправильный подход? Существует ли «стандартный» подход к интеграции и полному тестированию системы?

РЕДАКТИРОВАТЬ: Чтобы уточнить, это автоматизированные тесты, для настольных и веб-приложений. В идеале это полный набор тестов, который реализует полную функциональность приложения.

1 Ответ

5 голосов
/ 28 апреля 2010

Если под «делать интеграционные тесты и системные тесты» вы подразумеваете автоматизированные тесты, то ответ отрицательный, стандартного подхода не существует. Какой подход выбрать, будет зависеть от:

  • характеристики приложения (например, есть ли у него графический интерфейс ?, доступно ли оно только для чтения?, Сколько у него внешних зависимостей и т. Д.)
  • что вы пытаетесь проверить (может быть, вам нужны только тесты с графическим интерфейсом, или, возможно, верно обратное, и вам не очень важен графический интерфейс, но внутренняя логика критична)
  • как быстро вы хотите увидеть результаты (например, чем больше вы заглушаете, тем быстрее становятся ваши тесты)
  • набор навыков в вашей команде

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

  • Selenium с JUnit - Фантастический инструмент для управления веб-приложениями
  • Concordion - для всех типов применения. Интегрируется с JUnit и предоставляет простые английские спецификации тестов. Ваш «прибор» / тестовый код будет привязан к ключевым словам в спецификации и утверждать или выполнять действия с ними.
  • FEST - для приложений Swing снова интегрируется с JUnit (тема еще есть;;) (больше вариантов здесь )

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

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

...