Анализ покрытия кода для Встроенных [закрытых] проектов C++

import pandas as pd;
df_excel = pd.read_excel(".\Table1.xlsx"); #Import existing excel template
df_excel.index = df_excel.index + 2 #As we have 2 empty rows in pandas pivot \
#table, we need to start filling on excel row 2 (df_excel.index + 2)

received = pvt_all.received; #reading received column in pivot table
df_excel["received"] = received; #Copying received column from Pandas to received \
#column in excel

sent = pvt_all.sent; #reading sent column in pivot table
df_excel["sent"] = sent; #Copying sent column from Pandas to sent \
#column in excel

to_send = pvt_all.to_send; #reading to_send column in pivot table
df_excel["to_send"] = to_send; #Copying to_send column from Pandas to to_send \
#column in excel

df_excel.to_excel(".\MyNewExcel.xlsx",index=False); #Writing new excel file to \
#avoid mistakes on original excel template.
7
задан Paul Nathan 16 October 2008 в 03:18
поделиться

4 ответа

100%-е покрытие ответвления? Это - вполне требование, тем более, что некоторые ответвления (значения по умолчанию в случае, если операторы для конечных автоматов, например) не должно быть возможно выполнить. Я ожидаю, что существуют некоторые исключения, и если нет Вас, возможно, должен был бы понять, какое тестирование покрытия может и не может выполнить перед запуском - иначе Вы закончите тем, что вытащили волосы, или хуже - предоставление неправильных данных.

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

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

Портирование кода не является ужасно трудным, пока можно абстрагировать аппаратные средства определенный код (и так как Вы используете C++ правильно, который должен быть легким, правильно?;-D). Самой большой проблемой, с которой Вы столкнетесь, являются типы, которые, в то время как лучше указанный в C++, чем они были в C все еще, излагают некоторые проблемы. Удостоверьтесь, что Вы используете types.h или подобную установку для специфического сообщения компилятора точно, что каждый тип, который Вы используете, и как это должно быть интерпретировано.

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

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

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

- Adam

Отказ от ответственности: Я работаю на компанию, которая производит MxVDev.

5
ответ дан 7 December 2019 в 01:28
поделиться

Мы использовали Кантату и vectorcast в прошлом для Поблочного тестирования и кодируем покрытие. Мы также используем инструменты Greenhills и оба из этих инструментов работа с greenhills средствами разработки. Мы запускаем большую часть нашего теста на средстве моделирования PPC и просто запущенного теста, которые полагаются на аппаратные средства на Целевых аппаратных средствах через переходную приставку JTAG. Canatata и Vector бросают, очень похожи на catata, просто немного легче использовать и иметь немного больше функций, но маленькие отдельно оплачиваемые предметы имеют большое значение в пользовательском опыте.

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

Мы также попробовали тестирование ПК по сравнению со встроенным тестированием, дал нам проблемы из-за порядка байтов, но это - только проблема на аппаратном слое.

Кроме того, эти инструменты сертифицированы к RTCA/DO-178B стандарту.

3
ответ дан 7 December 2019 в 01:28
поделиться

Как с Adam, мы портируем наш встроенный код на основанный на ПК ремень безопасности и делаем большинство покрытие и представляющий там. Я использовал AutomatedQA AQTime и Compuwares DevPartner, оба из которых являются хорошими продуктами,

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

100%-е покрытие амбициозно, поскольку Вам будет нужно большое внесение неисправности для вхождения во все обработчики ошибок и обработчики исключений. IMO, это также было бы легче сделать в ремне безопасности, чем на борту.

На это также стоит указать на то, кто бы ни попросил 100%-е покрытие кода, чтобы 100%-е покрытие кода никоим образом не приравнивалось к 100%-му тестовому покрытию. Рассмотрите, например, следующую функцию;

int div(int a, int b)
{
return (a/b);
}

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

2
ответ дан 7 December 2019 в 01:28
поделиться

См. Тестовое покрытие SD C++. Это семейство (ветвей) инструментов покрытия тестов для различных диалектов C++ (ANSI, GNU, MS...), которые хорошо работать даже в реальном оборудовании встроенных систем благодаря очень малой занимаемой площади и простому способу экспорта собранных данных тестового покрытия. Существует дисплей покрытия графического интерфейса, который не зависит от вашего фактического встроенного оборудования, который также будет создавать полную сводку отчета о покрытии.

[Я являюсь руководителем компании, которая предоставляет эти инструменты.]

0
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: