Мок-библиотека для интеграционных тестовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Мок-библиотека для интеграционных тестов

Сообщение Anonymous »

У меня есть приложение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»