Русская Википедия:Статистическая модель Миллса

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Модель Миллса — способ оценки количества ошибок в программном коде, созданный в 1972 году программистом Харланом МиллсомШаблон:Sfn. Он получил широкое распространение благодаря своей простоте и интуитивной привлекательностиШаблон:Sfn.

Методология

Допустим, имеется программный код, в котором присутствует заранее неизвестное количество ошибок (багов) <math>N</math>, требующее максимально точной оценки. Для получения этой величины можно внести в программный код <math>M</math> дополнительных ошибок, о наличии которых ничего не известно специалистам по тестированиюШаблон:SfnШаблон:Sfn.

Предположим, что после проведения тестирования было обнаружено <math>n</math> естественных ошибок (где <math>n < N</math>) и <math>m</math> искусственных (где <math>m < M</math>). Тогда, полное количество оставшихся ошибок можно оценить предположив, что вероятности обнаружить естественную и искусственную ошибку одинаковы и зависят только от их полного количества. Тогда процент естественных и внесённых ошибок должен быть одинаков и выполняется следующее соотношение <math>\frac{n}{N} = \frac{m}{M}</math>Шаблон:SfnШаблон:Sfn.

Из которого следует, что оценка полного количества естественных ошибок в коде равна <math>N = n\frac{M}{m}</math>, а количество всё ещё не выловленных багов кода равно разности <math>N - n</math>Шаблон:SfnШаблон:Sfn. Сам Миллс полагал, что процесс тестирования необходимо сопровождать постоянным обновлением графиков для оценки количества ошибокШаблон:Sfn.

Очевидно, что такой подход не лишён недостатков. Например, если найдено 100% искусственных ошибок, то значит и естественных ошибок было найдено около 100%. Причём, чем меньше было внесено искусственных ошибок, тем больше вероятность того, что все они будут обнаружены. Из чего следует заведомо абсурдное следствие: если была внесена всего одна ошибка, которая была обнаружена при тестировании, значит ошибок в коде больше нетШаблон:Sfn.

В целях количественной оценки доверия модели был введён следующий эмпирический критерий: <math>C = \begin{cases} 1, & \mbox{при }n > N, \\ \frac{M}{M+N+1}, & \mbox{при }n \leq N. \end{cases}</math>

Уровень значимости <math>C</math> оценивает вероятность, с которой модель будет правильно отклонять ложное предположениеШаблон:SfnШаблон:Sfn. Выражение для <math>C</math> было сконструировано МиллсомШаблон:Sfn, но в силу своей эмпирической природы при необходимости оно допускает некоторую вариативность в разумных пределахШаблон:Sfn.

Исходя из формулы для <math>C</math> можно получить оценку количества искусственно вносимых багов <math>M</math> для достижения нужной меры доверия <math>C</math>. Это количество даётся выражением вида <math>M = \frac{C(N+1)}{1-C}</math>Шаблон:Sfn.

Слабостью подхода Миллса является необходимость вести тестирование продукта до обнаружения абсолютно всех искусственно введённых багов, однако существуют обобщения этой модели, где это ограничение снятоШаблон:Sfn. Например, если порог на допустимое количество из обнаруженных внесённых ошибок равен величине <math>j</math> (<math>j < M</math>), то критерий перезаписывается следующим образом: <math>C = \begin{cases} 1, & \mbox{при }n > N, \\ \frac{ \binom{M}{j-1} }{ \binom{N+M+1}{N+j} }, & \mbox{при }n \leq N, \end{cases}</math>

Примечания

Шаблон:Примечания

Источники