Я тоже спрашивал об этом раньше, но не удовлетворен ответом.
Что я использую:
- Работа на сайте Django/python.
- Разработка выполняется на виртуальных средах Python локально.
- используя GIT в качестве моего SCM
- иметь отдельные виртуальные серверы, развернутые для веток Developer и Production для GIT
- Использование Jenkins CI для непрерывной интеграции. Отдельный виртуальный сервер, развернутый для Jenkins
Работающий:
- У меня есть модульные тесты, дымовые тесты и интеграционные тесты для веб-сайта. Jenkins настроен так, что всякий раз, когда код переносится из моей локальной ветки git в ветку Developer и Production в репозитории git, в Jenkins запускается сборка.
Проблема:
- Мои тесты проходят локально, когда я выполняю тест python manage.py.
- Случайные тесты (в основном модульные тесты) FAIL в Jenkins, когда код передается в другие ветки (Developer и Production).
- Если после сбоя теста я выполняю сборку вручную, нажимая кнопку «Построить сейчас» в Jenkins, тесты обычно проходят успешно, и сборка завершается успешно.
- Иногда, когда в код не вносятся изменения, а код по-прежнему отправляется в эти ветки, тесты в Jenkins случайно не проходят.
Некоторые распространенные ошибки:
- Ошибка утверждения: 302! = 200
- TypeError: объект «NoneType» не подлежит подписке
- IndexError: индекс списка вне допустимого диапазона
- AssertionError: datetime.datetime(2012, 12, 5, 0, 0, 27, 218397)! = datetime.datetime(2012, 12, 5, 0, 0, 27, 239884)
- AssertionError: ответ перенаправлен на «x», ожидаемый «y»
Устранение неполадок на сегодняшний день:
- Запустил все тесты локально на моей машине, а также на виртуальном сервере. Они идут нормально.
- Запуск отдельных неудачных тестов локально, а также на виртуальном сервере. Они идут нормально.
- Пытался воссоздать условия сбоя, но на данный момент тесты проходят.
Единственная проблема, которую я вижу, заключается в том, что всякий раз, когда код передается разработчикам и производственным подразделениям, происходит случайный сбой теста. Некоторые тесты неоднократно терпят неудачу.
Может ли кто-нибудь сказать мне, что еще я могу сделать, чтобы устранить эту проблему. Я пытался гуглить вопрос, но тщетно. Я знаю, что на веб-сайте xunitpatterns есть хорошие сведения о неустойчивом поведении тестов, но это не помогает, так как я пробовал большинство вещей там.