2010-08-10 7 views
6

Каков наиболее часто используемый подход, используемый для тестирования в Java-проектах (итеративная разработка)?Методы тестирования

+0

Должно быть сообщество wiki. – Borealid

ответ

9

Мое предложение состоит в том, что у вас должно быть здоровое сочетание автоматизированного и ручного тестирования.

АВТОМАТИЗИРОВАННЫХ ИСПЫТАНИЙ

  • Unit Testing
    Использование NUnit, чтобы проверить свои классы, функции и взаимодействие между ними.
    http://www.nunit.org/index.php

  • Automated Функциональное тестирование
    Если это возможно, вы должны автоматизировать много функционального тестирования. Некоторые рамочные работы имеют функциональное тестирование, встроенное в них. В противном случае вы должны использовать для этого инструмент. Если вы разрабатываете веб-сайты/приложения, вы можете посмотреть на Selenium.
    http://www.peterkrantz.com/2005/selenium-for-aspnet/

  • Непрерывная интеграция
    Используйте CI, чтобы убедиться, что все автоматизированные тесты запускать каждый раз, когда кто-то в вашей команде делает коммит проекту.
    http://martinfowler.com/articles/continuousIntegration.html

РУКОВОДСТВО ТЕСТИРОВАНИЕ
Насколько я люблю автоматизированное тестирование это, имхо, не является заменой для ручного тестирования. Основная причина заключается в том, что автоматизированный способ может выполнять только то, что ему говорят, и проверять только то, что было проинформировано, для просмотра в качестве pass/fail. Человек может использовать свой интеллект, чтобы находить ошибки и задавать вопросы, возникающие при тестировании чего-то другого.

  • Исследовательское тестирование
    ET является очень низкая стоимость и эффективный способ найти дефекты в проекте. Он использует преимущества интеллекта человека и учит тестировщиков/разработчиков больше о проекте, чем любой другой метод тестирования, о котором я знаю. Выполнение ET-сессии, предназначенной для каждой функции, развернутой в тестовой среде, - это не только эффективный способ быстро найти проблемы, но и хороший способ учиться и веселиться!
    http://www.satisfice.com/articles/et-article.pdf
+1

Благодарим вас за подробный ответ Jonas. Это будет хорошей ссылкой. –

+0

No Worries, только рад помочь. Тестирование может быть очень забавным, если вы позволите. –

4

Раньше я работал с TDD (Test Driven Development), и мои чувства к нему неоднозначны. По сути, вы пишете свои тесты, прежде чем писать свой код, и напишите свой код, чтобы удовлетворить требованиям теста. TDD заставляет вас иметь четкое представление о ваших требованиях перед запуском. Дополнительным преимуществом является то, что, как только вы закончите разработку, предполагая, что внимательно следите за процедурами TDD, у вас будет полный набор тестовых наборов для работы с кодом. Нижняя сторона заключается в том, что она занимает очень много времени, и порой вам просто нужно пропустить пару шагов (например, возможно, писать код до того, как тесты, как правило, предпочли бы здравомыслящий человек).

Подробнее можно прочитать here (wiki link)

2

Модульное тестирование?

Контрактное программирование, a la Eiffel?

Модель водопада?

Различные магазины делают разные вещи. Если бы был один метод, чтобы управлять ими всеми, вы бы не задавали этот вопрос.

7

Личный опыт предполагает, что наиболее популярным подходом является отсутствие вообще.

+2

Это, к сожалению, и, возможно, удивительно, очень верно ... – Cambium

+0

... или, по крайней мере, как только вы можете уйти ;-) –

+0

Каковы основные проблемы тестирования? –

2

В предположении проведения тестирования я бы сказал, что тестирование с JUnit - это общий подход к тестированию на Java.

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

Кроме того, тест в основном не записывается в первый подход к тестированию, а параллельно или после реализации определенной функции.

Если вы перейдете к команде, которая использует более продвинутое тестирование, вы, возможно, обнаружите, что CI Server (Cruise Control, Hudson) запускает тесты не реже одного раза в день во время ночной сборки.

2

В порядке наиболее часто используемый подход:

  1. никаких тестов на всех
  2. ручных тестов: запуск приложения, щелчок или обеспечение ввода, проверьте результаты
  3. попробовать написать несколько JUnits , забудьте о них, сдвиньте до 2 и 1
  4. Начните с TDD, посмотрите, что это трудно затем сдвиньте до 3, 2 и 1

с теоретической стороны есть множество способов правильно протестировать код. Если вы ищете что-то практическое, посмотрите на Clean Code Talk. Взгляните на всю серию, около 5 разговоров (не можете разместить более одной ссылки).

0

Мое предложение для тестирования проекта Java, чтобы сохранить его простым.

Шаги: - Ручное тестирование: -Установить стабильный продукт. Тестирование на автоматизацию: - Поддерживайте качество продукта. Отчеты Создание и отчетность: - Сообщите людям о качестве продукта. Непрерывная интеграция: сделайте это полностью автоматизированным, непрерывным инструментом.

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

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

Наконец, когда продукт становится стабильным, тогда начните автоматизацию модулей. Вы также можете выполнить автоматизацию шаг за шагом, например: - 1.Автоматизация модулей. 2. Создайте отчет и отправьте письмо для продукта HealthCheck. 3. Непрерывное тестирование интеграции и автоматизации на частном сервере на локальной машине.

Смежные вопросы