2012-01-12 2 views
2

Мне было интересно, как вы собираетесь проводить тестирование типа CI, когда имеете дело с физическими устройствами.Непрерывное тестирование интеграции с физическими устройствами

Я предполагаю, что у вас есть набор тестов и пул устройств, с которыми они могут работать. Дополнительно:

  • Для некоторых испытаний могут потребоваться определенные модели устройств.
  • Некоторые тесты могут потребовать использования нескольких устройств.

Для чего нужны серверы CI?

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

+1

Можете ли вы уточнить термин «физические устройства»? Вы говорите о физических серверах или мобильных устройствах? – andreadi

+0

Я думал больше о линиях подключенных к сети приборов. Сервер может рассчитывать, было ли установлено специальное программное обеспечение/оборудование стороннего производителя, с которым должен быть протестирован ваш код. – Lethargy

ответ

1

Непрерывная интеграция позволяет команде интегрировать & часто проверять свою работу. Автоматизированные сборки предназначены для компиляции, компоновки и запуска модульных тестов. Вы хотите, чтобы ваш CI работал быстро, особенно если вы запускаете его при каждой регистрации. Вот почему вы хотели бы ограничить деятельность CI простым подтверждением только сборки и модульных тестов. То, что вы просите, кажется более - в соответствии с проверкой качества (QA) ... и с ошибками QA, смешанными с вашими усилиями CI, будет отвлекать усилия развития от прогресса.

Таким образом, я больше под впечатлением, связанным с CI, не зависит от физической машины , о которой в конечном итоге может быть перенесена работа.

Теперь ... это не означает, что вы НЕ МОЖЕТЕ взять CI-скомпилированный пакет и запустить его против какой-либо конечной цели-машины .... но опять же ... это действительно рассматривается как отдельная деятельность.

Это, как представляется, будет приведено в действие в следующих article by Martin Fowler.

Обратите внимание, что он не говорит о конечных целевых устройствах ... только для сборки.

+1

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

+0

Наша строительная машина выполняет CI, а развертывание и тестирование в различных средах как часть непрерывного трубопровода поставки см. Http://continuousdelivery.com/ – blank

1

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

Я использую его для ночных сборок для проведения испытаний на дым (включите его, посмотрите, есть ли какой-нибудь дым), но вы должны быть осторожны, чтобы держать тесты маленькими, чтобы они закончили в считанные часы, а не дни , если вы хотите, чтобы это было частью вашего CI.

Затем, когда у вас есть достаточно хорошее качество, вы можете приступить к регрессионным испытаниям и интеграционным испытаниям, если это необходимо.

0

Я бы не стал слишком зависеть от того, что система CI должна делать или не делать. Вместо этого я бы сосредоточился на проблеме, которую вы пытаетесь решить. Похоже, эта проблема заключается в том, чтобы облегчить разработку на нескольких платформах. Вы можете использовать концепцию Continuous Integration и добавить к ней решение этой проблемы. Я знаю, потому что я сделал это в прошлом.

Я реализовал систему сборки кода, которая необходима для компиляции и тестирования на четырех разных платформах. (nt, wince, linux-arm, linux-x86).Сервер CI будет:

  • Пользовалась сборки сервера компиляции Линукс и WinNT (и кросс-компиляции)
  • скомпилированного испытания и вспомогательные ЛИЭС затем будут скопированы в соответствующие устройства и автоматизированный тестовый прогон выполняется.
  • После тестовый набор был завершен журнал будет скопирован обратно, (или это было написано в сеть смонтированных фс)
  • Если тестовый пакет был успешным, мы бы пометить источник и упаковать эти библиотеки и исполняемые файлы ,

Эта же платформа была повторно использована для проверки разработчика перед фиксацией. Разработчики будут выполнять частичную сборку и тестирование (только обновленный источник будет перекомпилирован и эти тесты будут повторно запущены). CI выполнит полную сборку (с нуля).

Наша сборка была довольно быстрой, потому что у нас была подходящая DAG для зависимостей построения. Это допускало параллельную компиляцию в сборке платформы. Каждая сборка платформы также была параллельной. В результате частичные сборки заняли несколько секунд, полная сборка заняла ~ 30 минут. Наши серверы сборки были довольно мясистые (оптимизированы для быстрого компиляции), а кодовая база была умеренного размера (я не помню статистику).

+0

Меня больше интересует вторая из ваших маркеров: как вы выполняете набор тесты против набора устройств, некоторые из разных типов. Кроме того, для одного теста может потребоваться более одного устройства. – Lethargy

+0

@ Lethargy: тесты были «отмечены» платформами, над которыми он должен был работать. Тестер на конкретной платформе будет запускать только те тесты, помеченные для этой платформы. Однако у нас не было ни одного тестового прогона нескольких платформ. – dietbuddha

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