Перейти к содержанию

    

Как писать или генерировать тест - кейсы(векторы) для автоматического тестирования встроенной электроники и ПО?

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

 

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

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

То есть должно быть возможным написание тестовых векторов, которые бы в итоге покрыли 100% ПО и электроники тестами. Вопрос - как это сделать, чтобы количество таких тестов было более-менее оптимальным? Возможно ли автоматизировать написание таких тестов, если их надо будет достаточно много?

 

Спецификаций на ПО или функциональность изделия, как таковых, нет, а точнее функциональность ушла от них далеко вперед.

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Собственно вопрос такой

 

Честно не понял в чем вопрос, вам нужно проверять сами блоки (аппаратную часть) или тестить программу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Честно не понял в чем вопрос, вам нужно проверять сами блоки (аппаратную часть) или тестить программу?

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

 

А для отладки и тестирования программы использовать unit-тесты, созданные на основе анализа исходников? Или что-то другое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
И то и другое. Я так понимаю, что вы предлагаете прошивать тестовые программки в сам контроллер устройства и по ним проверять только железо, рассчитывая, что однажды отлаженная программа не может сбоить?

 

А для отладки и тестирования программы использовать unit-тесты, созданные на основе анализа исходников? Или что-то другое?

 

Отладка железа - это самое простое, закидываем тестовую прогу, подключаем железку к стенду, лампочкам с кнопками или все это ввиде автомата, эмулирующего работу входных\выходных каналов, и запускаем тест.

 

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

Затем стресс-тестирование, проверяем исключительные ситуации (внезапное включение\выключение питания, изятие носителей информации, если есть усб и пр. хотплаг порты - проверяем на подкл\отключение) имитация "дурака" - защита от всяких непонятных поведений клиента, нажатие кучи кнопок в разных режимах и т.п.

По результатам пишется отчет(а 100% работоспособности после таких тестов никогда с первого раза не бывает) и устраняем... Потом снова, и так до полного работоспособного устройства :biggrin:

Поделиться сообщением


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

То есть должно быть возможным написание тестовых векторов, которые бы в итоге покрыли 100% ПО ...

Что касается тестирования ПО при производстве - то ни как! вернее можно наверно..... но зачем ПО тестировать на этапе производства? ПО тестируется на этапе разработки этого ПО. Допустим у вас устройство считывает данные с датчика по SPI, обрабатывает ОЧЕНЬ ОЧЕНЬ сложным алгоритмом и отправляет в уарт. При производстве возможен брак деталей, а возможен непропай, залипуха, обрыв дорожки. Нужно проверять чтобы аппаратно было всё исправно. а зачем тестировать при производстве ПО? Или вы хотите тестировать алгоритм при производстве? Думаете он будет разный? ПО - это набор машинных кодов. ПО тестируется путем верификации при прошивании. Или вы думаете, что в одна и таже программа будет работать по разному в одинаковых устройствах и её нужно тестировать?

 

У нас автоматизированное тестирование аппаратной части. Заливаем тестовую прошивку, она генерирует тестовые сигналы которые проверяет стенд, получает тестовые сигналы и выдает ответ стенду. На этом этапе проверяется вся аппаратная часть. Чтобы SPI долетал до процессора, чтобы GPIO были пропаяны, чтобы шина DDR была пропаяна. Чтобы внешняя периферия работала исправно. А алгоритмы рабочей программы - они постоянны и не зависят ни от чего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А алгоритмы рабочей программы - они постоянны и не зависят ни от чего.

 

Если ПО не меняется, то тестируем один раз, как написал выше, но есть изменения, нововведения вот их приходится тестировать снова...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я правильно понял, вам хочется тестировать все многообразие логики и реакция системы на многообразие раздражителей (входных сигналов). Лучше всего для этого логику отделить слоем асбтракции от железа. В этом случае логика у вас выйдет например на чистом С/С++. И вот для этого уже можно пеисать автоматические тесты на "большом брате", а в качестве слоя железа в это время подсунуть реализацию с выводом в текстовый файл, содержимое тесктовых файлов в этом случае будут проверяться в тестах.

 

А то встречал код GSM сигализации, где "бизнес логика" зашита прямо в обработчике приема SMS и все в таком стиле. Жуть какая, как они в этом разбираются, это надо иметь супермозг, чтобы производить такое ПО без тонны глюков.

 

 

Возможно ли автоматизировать написание таких тестов, если их надо будет достаточно много?

Возможна автоматизация запуска тестов. Можно даже на МК - cutest

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
У нас автоматизированное тестирование аппаратной части. Заливаем тестовую прошивку, она генерирует тестовые сигналы которые проверяет стенд, получает тестовые сигналы и выдает ответ стенду. На этом этапе проверяется вся аппаратная часть. Чтобы SPI долетал до процессора, чтобы GPIO были пропаяны, чтобы шина DDR была пропаяна. Чтобы внешняя периферия работала исправно. А алгоритмы рабочей программы - они постоянны и не зависят ни от чего.

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Я и хотел что-то такое услышать. Я тоже думаю, что ПО в тестировании на производстве не нуждается, хотя вроде как слышал утверждения, что нифига - ПО на производстве тоже надо проверять.

Если абсолютно всё ПО, включая бутлодыри - ваше, то достаточно проверить как хорошо собрано устройство (ну и версию кремния). Это можно делать с помощью тестового ПО, если не осилили или если нет нужды превозмогать Boundary Scan, или, если превозмогли, то с помощью Boundary Scan через тот же JTAG.

 

Если вы используете чей-то Application Processor, в котором уже крутится ПО от производителя - всякие мудрые модемы и т.п., где ваше ПО выполняется на чужой платформе, то нужно проверять и ПО, поскольку производитель может изменить разметку флеш памяти, бутлодырь, версию ОС, и тогда вылезут несовместимости. Соответственно, нужны инструменты по возвращению всего и вся на протестированную версию.

 

ПО в данном случае нужно проверять на самые критические функции - собственно, обеспечение канала связи и возможность изменения прошивки устройства.

Изменено пользователем one_eight_seven

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти