Снижение трудоемкости интеграции системы и системных тестов
Я хотел бы проводить интеграционные и системные тесты для своих приложений, но для хорошей интеграции и системных тестов часто требовалось столько усилий, что я не беспокоился. Несколько раз, когда я пытался, я писал собственные тестовые привязки для конкретного приложения, каждый раз как будто заново изобретал колесо. Интересно, это неправильный подход? Существует ли "стандартный" подход к интеграции и полному тестированию системы?
РЕДАКТИРОВАТЬ: Чтобы уточнить, это автоматизированные тесты, для настольных и веб-приложений. В идеале это полный набор тестов, который реализует полную функциональность приложения.
1 ответ
Если под "делать интеграционные тесты и системные тесты" вы подразумеваете автоматизированные тесты, то ответ отрицательный, стандартного подхода не существует. Какой подход выбрать, будет зависеть от:
- характеристики приложения (например, есть ли у него графический интерфейс?, доступно ли оно только для чтения?, сколько у него внешних зависимостей и т. д.)
- что вы пытаетесь протестировать (может быть, вам нужны только тесты с графическим интерфейсом, или, может быть, все наоборот, и вам не очень важен графический интерфейс, но внутренняя логика имеет решающее значение)
- как быстро вы хотите увидеть результаты (например, чем больше вы заглушаете, тем быстрее становятся ваши тесты)
- набор навыков в вашей команде
Лично мне нравится любой подход, который интегрируется с JUnit. JUnit - это фантастическая структура, которая хорошо поддерживается и легко подключается к серверу непрерывной интеграции. Вот несколько возможных подходов:
- Selenium с JUnit - фантастический инструмент для вождения веб-приложений
- Concordion - для всех типов приложений. Интегрируется с JUnit и предоставляет простые английские спецификации тестов. Ваш "фиксатор" / тестовый код будет привязываться к ключевым словам в спецификации и утверждать или выполнять действия с ними.
- FEST - для свинг-приложений, опять-таки он интегрируется с JUnit (см. Тему еще;;) (больше вариантов здесь)
Приведенные выше примеры предоставляют огромное количество готовой справки для тестирования. Конечно, они все еще требуют усилий, чтобы подключиться к вашему приложению и поддерживать, но преимущества того стоят. В дополнение к вышесказанному вам может понадобиться подумать о том, как заглушить или макетировать области вашего приложения. Возможно, вы хотите провести все свои тесты "под GUI" или "над базой данных". В первом сценарии ваши тесты должны начинаться с тех точек кода, в которых GUI будет взаимодействовать с ним, а во втором вам понадобится отключить службы, взаимодействующие с вашей базой данных.
Суть в том, что есть много способов сделать это. Лучше всего начать с очень четкого понимания того, что вы хотите получить от тестирования. Затем узнайте, какие существуют фреймворки, чтобы помочь вам, основываясь на том, что вы хотите протестировать, и, наконец, не пытайтесь покорить мир за ночь. Начните с малого, запустив несколько тестов. Получите зеленую полосу (всегда рад видеть!) Получите стабильную проверенную платформу для тестирования и убедитесь, что вы довольны ею. Затем добавьте больше по мере продвижения.