Тест на пропуски
Тест на пропуски
Второй тест, который мы проведем, - тест на пропуски - несколько сложнее первого. Тест на пропуски гарантирует, что последовательность случайных чисел не будет попадать сначала в один поддиапазон, а затем в другой, третий и т.д., несмотря на то, что в целом значения будут распределены равномерно по всему диапазону. Определим в диапазоне поддиапазон, скажем, первую половину - от 0.0 до 0.5. Сформируем набор случайных чисел. Для каждого генерируемого числа будем проверять, попадает ли оно в выбранный поддиапазон (попадание) или нет (промах). В результате проверок будет получена последовательность попаданий и промахов. Найдите последовательности из одного и большего количества промахов (такие последовательности называются пропусками, отсюда и название теста - тест на пропуски). Вы получите последовательности из одного, двух и даже большего количества промахов. Разбейте длины пропусков на категории. Если известно, что вероятность попадания равна p (в нашем случае она будет равна длине выбранного поддиапазона), то вероятность промаха будет (1 -p). На основе этих данных можно определить вероятность возникновения пропуска из одного промаха — (1 -p)p, двух промахов — (1 -p)(^2^)p, n промахов - (1 -p)(^n^)p, а, следовательно, вычислить ожидаемое количество пропусков любой длины. После этого применим тест по критерию хи-квадрат. Будем использовать 10 категорий пропусков (поскольку вероятность возникновения пропусков длиной 11 и более промахов очень мала, все пропуски длиной 10 и более будут учитываться в последней категории;
при этом, конечно, следует учитывать реальную вероятность попадания длины пропуска в эту последнюю категорию), следовательно, мы получим девять степеней свободы. Как правило, тест на пропуски проводится пять раз: для первой и второй половины диапазона, а также для первой, второй и третьей третей диапазона.
Листинг 6.6. Тест на пропуски
procedure GapTest(RandGen : TtdBasePRNG;
Lower, Upper : double;
var ChiSquare : double;
var DegsFreedom : integer);
var
NumGaps : integer;
GapLen : integer;
i : integer;
p : double;
Expected : double;
ChiSqVal : double;
R : double;
Bucket : array [0..pred(GapBucketCount) ] of integer;
begin
{вычислить длины пропусков и определить количество пропусков в каждой категории}
FillChar(Bucket, sizeof(Bucket), 0);
GapLen := 0;
NumGaps := 0;
while (NumGaps < GapsCount) do
begin
R := RandGen.AsDouble;
if (Lower <= R) and (R < Upper) then begin
if (GapLen >= GapBucketCount) then
GapLen := pred(GapBucketCount);
inc(Bucket[GapLen]);
inc(NumGaps);
GapLen := 0;
end else
if (GapLen < GapBucketCount) then
inc(GapLen);
end;
p := Upper - Lower;
ChiSqVal := 0.0;
{обработать все категории, кроме последней}
for i := 0 to GapBucketCount-2 do
begin
Expected := p * IntPower(1-p, i) * NumGaps;
ChiSqVal := ChiSqVal + (Sqr (Expected - Bucket [i]) / Expected);
end;
{обработать последнюю категорию}
i := pred(GapBucketCount);
Expected IntPower (1-p, i) * NumGaps;
ChiSqVal := ChiSqVal + (Sqr (Expected - Bucket [i]) / Expected);
{вернуть значения}
ChiSquare := ChiSqVal;
DegsFreedom := pred(GapBucketCount);
end;
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Тест 1
Тест 1 Вопрос 1Платформа Андроид основывается на операционной системе:LinuxMACUnixWindows CEWindows XPВопрос 2Архитектура платформы Андроид состоит из:Приложений, фреймворка приложений, библиотек, среды выполнения Андроид, ядра Linux.Приложений, библиотек, фреймворка библиотек, среды
Тест 2
Тест 2 Вопрос 1Для чего предназначено файловое расширение. apk?Application PackageApplication Program KitAndroid Proprietary KitAndroid PackageВопрос 2Когда вы распространяете коммерческое приложение, вы хотите подписать его своим собственным ключом.TrueFalseВопрос 3Как Google проверяет на вирусы в Android
Тест 3
Тест 3 Вопрос 1Что выполняет следующий код:Intent intent = new Intent (FirstActivity. this, SecondActivity. class);Создает скрытое намерение.Создает неявное намерение.Создает явное намерение.Запускает активность.Вопрос 2Что из следующего не верно для Intents?Активирует Activity.Активирует Service.Активирует
Тест 4
Тест 4 Вопрос 1Какие из следующих диалоговых окон поддерживаются Android?AlertDialogProgressDialogDatePickerDialogTimePickerDialogTextInputDialogВопрос 2В этом намерении отправитель указывает тип получателя:Неявное намерениеЯвное намерениеОбаВопрос 3Какие из следующих типов данных поддерживаются
Тест 5
Тест 5 Вопрос 1Стили, строки и массивы размещаются в:/res/layout/res/strings/res/arrays/res/styles/res/valuesВопрос 2Dalvik VM является частью:Core LibrariesLibrariesApplicationKernelAndroid RuntimeВопрос 3Content Provider являются частью:ApplicationCore librariesApplication FrameworkKernelLibrariesВопрос 4Чем является R. java?Авто-сгенерированный файл
Тест 6
Тест 6 Вопрос 1Какой максимальный поддерживаемый размер файла для одного файла APK (исключая пакеты расширения) в Google Play Store?50 MB2GB30MBНеограниченноВопрос 2Какой максимальный поддерживаемый размер одного файла расширения в Google Play Store?50 MB2GB30MBНеограниченноВопрос 3Какое
Что станет с тест-директором и тест-менеджером
Что станет с тест-директором и тест-менеджером Как все эти ролевые изменения отразятся на менеджерах, директорах и вице-президентах по тестированию? Их станет меньше. Те из них, у кого есть технические знания, перейдут на другие роли, более подходящие их инженерной
Тест на IQ
Тест на IQ В данном разделе мы познакомимся с небольшой программой, предназначенной для проведения теста на уровень интеллекта, которая так и называется – «IQ Тест». Эта программа проста в обращении и не требует установки.После запуска исполняемого файла на экране
Тест № 1
Тест № 1 Для проведения первого теста были использованы случайным образом отобранные из коллекции (579 штук) четыре экземпляра вредоносного кода:? TrojanDownloader.13547;? Backdoor. Win32Optix.b;? Trojan-Win32PSW.QQRob.16;? Trojan-Win32PSW.QQShou.EH.Каждый экземпляр был пропущен через PeStubOEP (программа предназначена
Тест № 2
Тест № 2 Тест включает в себя упаковку одного вируса несколькими упаковщиками. В качестве «зло-кода» был использован известный Virus.Win32.Neshta.b. Итак, результаты.Пропускаем нашего "нечто" через WinUpack:? Nod32 2.7 "-";? "Антивирус Касперского 6.0" "+";? Vba32 "+" (рис. 5.13). Рис. 5.13. Neshta – не уйдет!
Тест № 3
Тест № 3 В данном тесте был использован генератор вирусов APOKALIPSES. Из десяти сгенерированных экземпляров Vba32 обнаружил 8, Nod32 2.7 – 9, «Антивирус Касперского 6.0» обнаружил все.Для проведения четвертого теста был использован свеженаписанный вирус, форматирующий диски. Данный
Тест № 4
Тест № 4 Рис. 5.16. «В порядке!»"Антивирус Касперского 6.0" также ничего не обнаружил (рис. 5.17). Рис. 5.17. «Опасных объектов не обнаружено!»Лишь Nod32 обнаружил самописный вирус, классифицировав его как модификацию (рис. 5.18). Рис. 5.18. Здесь NOD32 показал себя с самой лучшей
Тест № 5
Тест № 5 Тест на противодействие обфускации. Подправим наш экземпляр (Trojan. Downloader.Win32.Zlob) вручную. Для этого внедрим пару неизвестных инструкций в оригинальный код. Зачем? Чтобы усложнить задачу по эмулированию новых инструкций эвристическим анализатором тестируемого
Тест № 6
Тест № 6 Eicar Test. Именно этот тест используется для проверки работоспособности антивирусных программ. Обоснованность проведения подобного теста при анализе эвристики особенно очевидна: стандартизованность EICAR позволяет получать результаты с минимальными погрешностями
Тест № 7
Тест № 7 Тест на обнаружение полиморфных вариантов. Напомню нашим читателям, что в основе полиморфизма стоит способность вируса к изменению своего кода, так называемой «мутации» – образованию неузнаваемых антивирусом форм, что, к слову будет сказано, является идеальным