Статистическая модель Миллса

08.09.2021

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

Методология

Допустим, имеется программный код, в котором присутствует заранее неизвестное количество ошибок (багов) N {displaystyle N} , требующее максимально точной оценки. Для получения этой величины можно внести в программный код M {displaystyle M} дополнительных ошибок, о наличии которых ничего не известно специалистам по тестированию.

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

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

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

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

Уровень значимости C {displaystyle C} оценивает вероятность, с которой модель будет правильно отклонять ложное предположение. Выражение для C {displaystyle C} было сконструировано Миллсом, но в силу своей эмпирической природы при необходимости оно допускает некоторую вариативность в разумных пределах.

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

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



Имя:*
E-Mail:
Комментарий:
Информационный некоммерческий ресурс fccland.ru © 2020
При цитировании и использовании любых материалов ссылка на сайт обязательна