Модульное тестирование C ++ для нескольких архитектур ЦП - PullRequest
0 голосов
/ 07 мая 2020

мы разрабатываем приложение на C ++ для архитектур ARM и x86. Конечно, мы интегрируем наше приложение для обеих архитектур, но пока мы модульное тестирование нашего приложения только на x86. Является ли это возможным источником ошибки и можно ли запускать модульные тесты для всех поддерживаемых архитектур?

1 Ответ

1 голос
/ 07 мая 2020

Теоретически, пока ваш код использует только C ++ и у вас нет неопределенного поведения, код должен вести себя одинаково на всех совместимых платформах. Это то, что должен делать стандарт.

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

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

...