Тестирование сетевых прерываний в программном обеспечении - PullRequest
11 голосов
/ 14 сентября 2008

У меня есть сетевая программа на C ++ в Windows, которую я хотел бы тестировать на сетевое отключение в разное время. Какие у меня варианты?

В настоящее время я:

  1. Фактически отсоединение сетевого провода от задней панели моего компьютера
  2. с использованием ipconfig / release
  3. Использование программы cports для полного закрытия сокета

Ни один из этих методов не идеален для меня, и я бы хотел более легко эмулировать проблемы с сетью.

Хотелось бы, чтобы иногда при сбое соединения происходило сбой, при чтении сокетов иногда происходило сбой, а иногда при сбое записи в сокет. Было бы замечательно, если бы была какая-то утилита, которую я мог бы использовать для эмуляции подобных проблем.

Было бы также неплохо иметь возможность создавать некоторые автоматизированные модульные тесты, когда эта эмулированная плохая сеть работает.

Ответы [ 4 ]

11 голосов
/ 15 сентября 2008

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

2 голосов
/ 14 сентября 2008

Самое близкое, что я могу придумать, это сделать что-то похожее с VEDekstop от Shunra ..

Имитация высокой задержки и низкой пропускной способности при тестировании приложений баз данных

Shunra VE Desktop Standard - клиентское программное решение на базе Windows, имитирующее соединение глобальной сети, позволяющее тестировать приложения в различных текущих и потенциальных сетевых условиях - прямо с рабочего стола. 1011 *

0 голосов
/ 22 октября 2012

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

0 голосов
/ 15 сентября 2008

Вы можете создать подкласс любого библиотечного класса, который вы используете для управления сокетами (предположительно, CAsyncSocket или CSocket, если вы используете MFC), переопределить методы, чей сбой вы хотите протестировать, и вставить соответствующий код теста в свои переопределения.

...