Регрессионное тестирование встроенного программного обеспечения — автоматизация с помощью Jenkins

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

Может быть, первым вопросом будет: есть ли какой-нибудь плагин Jenkins, который может предложить высокоуровневый интерфейс для тестирования встроенного программного обеспечения через узел, подключенный к некоторому аппаратному оборудованию?

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

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

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

Ответы (1)

По сути, если вы можете настроить свое регрессионное тестирование так, чтобы его можно было запускать из командной строки, а результаты захватывались и, возможно, подвергались последующей обработке, тогда узел Jenkins может запускать его и, учитывая возвращаемое значение из процесса 0 для прохода и ненулевое значение для неудачи, вы получите успех или неудачу (так же, как и с make). Весь вывод командной строки фиксируется и доступен для отладки и т. д.

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

На данный момент это уже сделано. Я реализовал инструмент, чтобы сделать именно это, и он используется для одноразовых исполнений. Этот инструмент будет использоваться в течение дня, когда все находятся в офисе. Он очень хорошо использует механизм очередей, который предоставляет Jenkins, и если есть более одного узла, обслуживающего конкретную работу, это блаженство. Плагин Jenkins (или что-то еще), который я ищу, должен быть немного умнее этого. Потребуется начать тестирование, дождаться завершения тестирования в разрешенный временной интервал, дождаться следующего доступного временного интервала и т. д.
Скорее всего, мне нужно будет реализовать это самому на основе этого конвейерного механизма, как я подозреваю. Любая тестовая статистика должна быть обработана на узле и передана Дженкинсу в виде артефактов junit. Я только размышляю на данный момент. Есть мысли по этому поводу? Или предложения? Большое спасибо!
Из командной строки это единственный способ, которым я видел это в нескольких организациях.
@Mawg В наши дни слишком много разработчиков, включая, к сожалению, разработчиков инструментов, либо забыли о командной строке, либо слишком хорошо похоронили документацию по интерфейсу командной строки, что делает автоматическое тестирование болезненным. С Jenkins, если вы можете сделать это в командной строке, Jenkins может сделать это за вас и записать результаты.
Я, конечно, согласен, но в то время как навыки, такие как сценарии bash/dos/powershell, снизились, популярность Python выросла, поэтому большая часть ваших вещей «командной строки» Jenkins обычно просто вызывает некоторые сценарии Python.