У меня есть приложение C/C++, которое взаимодействует с другими приложениями/системами через несколько интерфейсов (TCP, БД, общая память). Я хотел бы один раз запустить приложение в реальной среде и «записать» все вызовы функций и их возвращаемые значения (или изменения в буферах, передаваемых в качестве параметров). Я бы записывал "шпионом" только вызовы, связанные с внешними интерфейсами (TCP, БД). Тогда я мог бы снова запустить приложение, но с использованием «поддельных» функций, которые должны возвращать предыдущие записанные значения. Таким образом, я мог бы «воспроизвести» выполнение и проверить, соответствуют ли результаты исходному выполнению.
Одной важной особенностью является также имитирование функций времени (sleep, time , GetLocalTime), потому что (например) вызовы к БД могут иметь текущую дату или время в списке выбора. Было бы даже лучше иметь возможность «воспроизвести» все вызовы быстрее, чем исходное выполнение (один день выполнения можно воспроизвести за несколько минут). Например, вызов Sleep(1000) должен возвращать результат без ожидания, но последующие вызовы GetLocalTime должны возвращать еще 1 секунду. При этом следует учитывать, что другие потоки должны иметь согласованные значения времени (например, библиотека должна разрешать 1 вызов режима сна (1000) для одного потока и 10 вызовов режима сна (100) в другом потоке).
В идеале это не должно требовать большого количества изменений или рефакторинга приложения, просто переопределение вызовов функций времени, а также вызовов библиотек внешних интерфейсов (DB, TCP) .
Мне хотелось бы знать, существует ли какая-нибудь библиотека или платформа, реализующая эти функции, или что может быть хорошей отправной точкой.
Я несколько раз реализовывал решения для подобных проблем, но для очень простых модулей, например, имитируя TCP-соединение для проверки реализации протокола, но каждый раз мне хочется изобретать велосипед, и эти простые решения не будут хорошо масштабироваться с большим количеством потоков или взаимодействие с большим количеством интерфейсов.
Подробнее здесь: https://stackoverflow.com/questions/213 ... tion-tests
Мок-библиотека для интеграционных тестов ⇐ C++
Программы на C++. Форум разработчиков
1737459366
Anonymous
У меня есть приложение C/C++, которое взаимодействует с другими приложениями/системами через несколько интерфейсов (TCP, БД, общая память). Я хотел бы один раз запустить приложение в реальной среде и «записать» все вызовы функций и их возвращаемые значения (или изменения в буферах, передаваемых в качестве параметров). Я бы записывал "шпионом" только вызовы, связанные с внешними интерфейсами (TCP, БД). Тогда я мог бы снова запустить приложение, но с использованием «поддельных» функций, которые должны возвращать предыдущие записанные значения. Таким образом, я мог бы «воспроизвести» выполнение и проверить, соответствуют ли результаты исходному выполнению.
Одной важной особенностью является также имитирование функций времени (sleep, time , GetLocalTime), потому что (например) вызовы к БД могут иметь текущую дату или время в списке выбора. Было бы даже лучше иметь возможность «воспроизвести» все вызовы быстрее, чем исходное выполнение (один день выполнения можно воспроизвести за несколько минут). Например, вызов Sleep(1000) должен возвращать результат без ожидания, но последующие вызовы GetLocalTime должны возвращать еще 1 секунду. При этом следует учитывать, что другие потоки должны иметь согласованные значения времени (например, библиотека должна разрешать 1 вызов режима сна (1000) для одного потока и 10 вызовов режима сна (100) в другом потоке).
В идеале это не должно требовать большого количества изменений или рефакторинга приложения, просто переопределение вызовов функций времени, а также вызовов библиотек внешних интерфейсов (DB, TCP) .
Мне хотелось бы знать, существует ли какая-нибудь библиотека или платформа, реализующая эти функции, или что может быть хорошей отправной точкой.
Я несколько раз реализовывал решения для подобных проблем, но для очень простых модулей, например, имитируя TCP-соединение для проверки реализации протокола, но каждый раз мне хочется изобретать велосипед, и эти простые решения не будут хорошо масштабироваться с большим количеством потоков или взаимодействие с большим количеством интерфейсов.
Подробнее здесь: [url]https://stackoverflow.com/questions/21376939/mock-library-for-integration-tests[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия