2013-06-18 2 views
0

Так каковы цели здесь:Как мы макет кода теста по отношению к исходному коду

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

  2. Мы можем расширять и обобщать тестовые рамки за пределами тестирования конкретного источника.

  3. Мы можем сделать рефакторинг и улучшение независимо от источника Изменения

  4. Из-за изолированности мы можем попробовать запустить ту же среду для тестирования против различных ветвей исходного кода

  5. проблемы с производительностью тестового кода, время выполнения , или переполнения напрямую не влияют на тестовые прогоны, так как мы можем легко вернуться к версии тестовой среды, которая хорошо работает.

Вопросы:

Если тестовый код и исходный код программы в той же отрасли? Как мы это установим? как это сработает, скажем, подрывная деятельность, какие плюсы и минусы?

+0

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

ответ

1

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

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

Во-вторых - надеюсь, очевидно - вам нужно управлять зависимостями. Ваш тестовый код зависит от тестируемого кода; тестируемый код не должен зависеть от тестового кода. Использование таких инструментов, как JDepend или NDepend, позволяет отслеживать эти зависимости. Обычно рекомендуется явно управлять зависимостями из тестового кода - если вы обнаружите, что все ваши тесты зависят от одного класса в тесте под кодом, эта зависимость может нарушить каждый тест, если что-то пойдет не так.

Теперь, чтобы ответить на ваши конкретные вопросы, я буду считать, что у вас есть отделение для (основной) функции в SVN, и что вы создали стандартную структуру проекта, вдоль линий

\src 
    \app 
    \test 

Код приложения находится в папке «приложение»; тестовый код в каталоге «test».

В этом случае, ваш SVN может быть:

\trunk 
    \app 
    \com.me.app.views 
    \com.me.app.models 
    \com.me.app.controllers 
    \test 
    \com.me.app.tests.views 
    \com.me.app.tests.models 
    \com.me.app.tests.controllers 
\branches 
    \feature1 
    \app 
     \com.me.app.views 
     \com.me.app.models 
     \com.me.app.controllers 
    \test 
     \com.me.app.tests.views 
     \com.me.app.tests.models 
     \com.me.app.tests.controllers 
    \feature2 
    \app 
     \com.me.app.views 
     \com.me.app.models 
     \com.me.app.controllers 
    \test 
     \com.me.app.tests.views 
     \com.me.app.tests.models 
     \com.me.app.tests.controllers