Почти каждое приложение выполняет операции ввода-вывода, как с диском, так и по сети.
Поскольку мои приложения работают нормально в среде разработки, я хочу быть уверенным, что они по-прежнему будут работать, когда интернет-соединение медленное или нестабильное, или когда пользователь пытается прочитать данные с плохо записанного CD.
Какие инструменты вы бы порекомендовали имитировать:
- медленный ввод / вывод (открытие файлов, закрытие файлов, чтение и запись, перечисление элементов каталога)
- случайные ошибки ввода-вывода
- случайные ответы «отказано в доступе»
- потеря пакетов в tcp / ip
- и т.д ...
EDIT:
Windows
Наиболее близким решением для выполнения описанной работы является коммерческое программное обеспечение holodeck (> 900 долл. США).
Linux:
Открытое решение пока не найдено, но тот же эффект
может быть достигнуто как указано smcameron и krosenvold.
Шаблон для декоратора - хорошая идея.
Это потребовало бы обернуть мои классы ввода / вывода, но в результате в среду тестирования.
Единственный оставшийся непроверенный код будет в сторонних библиотеках.
И все же я решил не идти по этому пути, а оставить свой код таким, какой он есть, и смоделировать ошибки ввода-вывода извне.
Теперь я знаю, что то, что мне нужно, называется «инъекция неисправности».
Я думал, что это обычная производственная линия с множеством решений, о которых я просто не знал.
(Кстати, еще одна хорошая идея - «нечеткое тестирование», спасибо Леннарту)
На мой взгляд, проблема все еще не стоит 900 долларов.
Я собираюсь реализовать свой собственный инструмент с открытым исходным кодом, основанный на хуках (нацеленный на win32).
Я обновлю этот пост, когда закончу. Вернись через 3 или 4 недели или около того ...