Тестирование путем переключения битов не имеет смысла? - PullRequest
0 голосов
/ 28 февраля 2012

При чтении это говорит

Помните, что все оборудование, все встроенное ПО и все программное обеспечение имеют ошибки и вносят ошибки.Не доверяй никому и ничему.Имейте тестовые системы, которые немного переворачивают и портят и гарантируют, что производственная система может работать через эти ошибки - в масштабе, редкие события удивительно распространены.

Я не понимаю.Можно ли запустить любой тип программного обеспечения, если вы переворачиваете биты?указатели будут неправильными, и если вы прочитаете адрес для случая переключения (или даже вызова функции), вы можете начать выполнение в ничейной стране.Черт, стек может быть перезаписан.Если ваш стек исчез, как вы могли бы восстановить.Вы не можете, вы должны прекратить и перезапустить снова.Завершение + перезапуск вряд ли восстановит.

Как вы «тестируете» производственную систему, но заставляете часть завершаться?Действительно ли это говорит о том, что если система состоит из нескольких процессоров / систем, отключите систему от сети и посмотрите, не повреждена ли она, не отключена ли система?Иначе я не понимаю, что это значит.

1 Ответ

0 голосов
/ 28 февраля 2012

Я думаю, что главное в этом - повышение надежности системы - см. Статью Джеффа Этвуда «Об ужасе кодирования» о Netflix Chaos Monkey , который случайным образом отключает серверы. Если вы знаете, что сервер в какой-то момент выходит из строя (и большинство его отключат), вы начинаете планировать эту ситуацию. Вы добавляете избыточность, где это необходимо, вы укрепляете код, чтобы справиться с подобными ситуациями, и вы делаете это сейчас, вместо того, чтобы отталкивать его, что легко сделать, когда вы непосредственно не чувствуете боль.

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

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

...