Оценка количества ошибок в программе. Модель Миллса
Время на прочтение
3 мин
Количество просмотров 16K
Сколько ошибок в программе? Это вопрос, который волнует каждого программиста. Особую актуальность придает ему принцип кучкования ошибок, согласно которому нахождение в некотором модуле ошибки увеличивает вероятность того, что в этом модуле есть и другие ошибки. Точного ответа на вопрос о количестве ошибок в программе очень часто дать невозможно, а вот построить некоторую оценку — можно. Для этого существуют несколько статических моделей. Рассмотрим одну из них: Модель Миллса.
В 1972 г. суперпрограммист фирмы IBM Харлан Миллс предложил следущий способ оценки количества ошибок в программе. Пусть у нас есть программа. Предположим, что в ней N ошибок. Назовем их естественными. Внесем в нее дополнительно M искусственных ошибок. Проведём тестирование программы. Пусть в ходе тестирования было обнаружено n естественных ошибок и m искусственных. Предположим, что вероятность обнаружения для естественных и искусственных ошибок одинакова. Тогда выполняется соотношение:
Мы нашли один и тот же процент естественных и искусственных ошибок. Отсюда количество ошибок в программе:
Количество необнаруженных ошибок равно (N-n).
Например, пусть в программу внесено 20 искусственных ошибок, в ходе тестирования было обнаружено 12 искусственных и 7 естественных ошибок. Получим следущую оценку количества ошибок в программе:
Количество необнаруженных ошибок равно (N-n) = 12 — 7 = 5.
Легко заметить, что в описанном выше способе Миллса есть один существенный недостаток. Если мы найдем 100% искусственных ошибок, это будут означать, что и естественных ошибок мы нашли 100%. Но чем меньше мы внесем искусственных ошибок, тем больше вероятность того, что мы найдём их все. Внесем единственную исскуственную ошибку, найдем ее, и на этом основании объявим, что нашли все естесственные ошибки! Для решение такой проблемы Миллс добавил вторую часть модели, предназначенную для проверки гипотезы о величине N:
Предположим, что в программе N естественных ошибок. Внесём в неё M искусственных ошибок. Будем тестировать программу до тех пор, пока не найдем все искусственные ошибки. Пусть к этому моменту найдено n естественных ошибок. На основании этих чисел вычислим величину C:
Величина C выражает меру доверия к модели. Это вероятность того, что модель будет правильно отклонять ложное предположение. Например, пусть мы считаем, что естественных ошибок в программе нет (N=0). Внесем в программу 4 искусственные ошибки. Будем тестировать программу, пока не обнаружим все искусственные ошибки. Пусть при это мы не обнаружим ни одной естественной ошибки. В этом случае мера доверия нашему предположению (об отсутствии ошибок в программе) будет равна 80% (4 / (4+0+1)). Для того чтобы довести ее до 90% количество искусственных ошибок придется поднять до 9. Следущие 5% уверенности в отсутствии естественных ошибок обойдутся нам в 10 дополнительных искусственных ошибок. M придется довести до 19.
Если мы предположим, что в программе не более 3-х естественных ошибок (N=3), внесем в нее 6 искусственных (M=6), найдем все искусственные и одну, две или три (но не больше!) естественных, то мера доверия к модели будет 60% (6 / (6+3+1)).
Значения функции С для различных значений N и M, в процентах:
Таблица 1 — с шагом 1;
Таблица 2 — с шагом 5;
Из формул для вычисления меры доверия легко получить формулу для вычисления количества искусственных ошибок, которые необходимо внести в программу для получения нужной уверенности в полученной оценке:
Количество исскуственных ошибок, которые необходимо внести в программу, для достижения нужной меры доверия, для различных значений N:
Таблица 3 — с шагом 1;
Таблица 4 — с шагом 5;
Модель Миллса достаточно проста. Ее слабое место — предположение о равновероятности нахождения ошибок. Чтобы это предположение оправдалось, процедура внесения искусственных ошибок должна обладать определенной степенью «интеллекта». Ещё одно слабое место — это требование второй части миллсовой модели отыскать непременно
все
искусственные ошибки. А этого может не произойти долго, может быть, и никогда.
Статистическая модель Миллса позволяет
оценить не только количество ошибок до
начала тестирования, но и степень
отлаженности программ. Для применения
модели до начала тестирования в программу
преднамеренно вносят ошибки. Далее
считают, что обнаружение преднамеренно
внесенных и так называемых собственных
ошибок программы равновероятно.
Для оценки количества ошибок в программе
до начала тестирования используется
выражение
(2.2.1)
где W‘ — количество
преднамеренно внесенных в программу
ошибок до начала тестирования;V— количество обнаруженных в процессе
тестирования ошибок из числа преднамеренно
внесенных;S— количество
«собственных» ошибок программы,
обнаруженных в процессе тестирования.
Если продолжать тестирование до тех
пор, пока все ошибки из числа преднамеренно
внесенных не будут обнаружены, степень
отлаженности программы С можно
оценить с помощью выражения
(2.2.2)
где SиW=V(равенство значенийWиVв данном случае имеет место, поскольку
считается, что все преднамеренно
внесенные ошибки обнаружены) имеют тот
же смысл, что и в предыдущем выражении
(2.2.1), аr означает
верхний предел (максимум) предполагаемого
количества «собственных» ошибок в
программе.
Выражения (2.2.1) и (2.2.2) представляют собой
статистическую модель Миллса. Необходимо
заметить, что если тестирование будет
закончено преждевременно (т. е. раньше,
чем будут обнаружены все преднамеренно
внесенные ошибки), то вместо выражения
(2.2.2) следует использовать более сложное
комбинаторное выражение (2.2.3). Если
обнаружено только Vошибок изWпреднамеренно
внесенных, используется выражение
!!!(2.2.3)
где в круглых скобках записаны обозначения
для числа сочетаний из Sэлементов поV— 1
элементов в каждой комбинации и числа
сочетаний изS+r+ 1 элементов поr+Vэлементов в каждой комбинации.
2.2.2. Задачи по применению модели Миллса
Задача
1
В программу преднамеренно внесли
(посеяли) 10 ошибок. В результате
тестирования обнаружено 12 ошибок, из
которых 10 ошибок были внесены преднамеренно.
Все обнаруженные ошибки исправлены. До
начала тестирования предполагалось,
что программа содержит не более 4 ошибок.
Требуется оценить количество ошибок
до начала тестирования и степень
отлаженности программы.
Решение задачи
Для оценки количества ошибок до начала
тестирования используем формулу (2.2.1).
Нам известно:
• количество внесенных в программу
ошибок W= 10;
• количество обнаруженных ошибок из
числа внесенных V=
10;
• количество «собственных» ошибок в
программе S= 12 — 10 =
2.
Подставив указанные значения в формулу,
получим оценку количества ошибок:
N = (W·S) /V= (10 ·2) / 10 = 2.
Таким образом, из результатов тестирования
следует, что до начала тестирования в
программе имелось 2 ошибки.
Для оценки отлаженности программы
используем уравнение (2.2.2). Нам известно:
• количество обнаруженных «собственных»
ошибок в программе S=2;
• количество предполагаемых ошибок в
программе r= 4;
• количество преднамеренно внесенных
и обнаруженных ошибок W=
10.
Очевидно, что обнаружено меньшее число
«собственных» ошибок, чем количество
предполагаемых ошибок в программе (S<r). Для оценки
отлаженности программы используем
уравнение
С =W/ (W
+r + 1) = 10/ (10 + 4 +
1) = 0,67.
Степень отлаженности программы равна
0,67, что составляет 67%.
Задача
2
В программу было преднамеренно внесено
(посеяно) 14 ошибок. Предположим, что в
программе перед началом тестирования
было 14 ошибок. В процессе четырех тестовых
прогонов было выявлено следующее
количество ошибок.
Номер прогона |
1 |
2 |
3 |
4 |
V |
6 |
4 |
2 |
2 |
S |
4 |
2 |
1 |
1 |
Необходимо оценить количество ошибок
перед каждым тестовым прогоном. Оценить
степень отлаженности программы после
последнего прогона. Построить диаграмму
зависимости возможного числа ошибок в
данной программе от номера тестового
прогона.
Решение задачи
Количество ошибок перед каждым прогоном
будем оценивать в соответствии с
выражением (2.2.1). Перед каждой последующей
оценкой количества ошибок и степени
отлаженности программы необходимо
корректировать значения внесенных Wи предполагаемыхr
ошибок с учетом выявленных и устраненных
после каждого прогона тестов. Степень
отлаженности программы на всех прогонах,
кроме последнего (2.2.2), рассчитывается
по комбинаторной формуле (2.2.3).
Определяя показатели программы по
результатам первого прогона, необходимо
учитывать, что W1= 14;S1= 4;V1= 6, тогда
N1= (W1
· S1) /V1=
(14·4) / 6 = 9.
Перед вторым прогоном корректируем
исходные данные для оценки параметров:
r2= 14 — 4 = 10;W2= 14 — 6 = 8;S2= 2;V2= 4, тогда
N2= (W2
· S2) /V2= (8·2) / 4 = 4.
Корректировка исходных данных перед
третьим прогоном дает следующие данные.
r3 = 10 —
2 = 8,W3= 8 —
4 = 4;S3= 1;V3= 2, откуда количество ошибок определится
следующим образом:
N3= (W3
· S3) /V3= (4 · 1) / 2 = 2.
Перед четвертым прогоном программы
получим следующие исходные данные: r4
= 8 — 1 = 7,W4= 4
— 2 = 2;S4= 1;V4=
2, тогда
N4= (W4
· S4) /V4= (2 ·1) /2 = 1.
Поскольку после четвертого прогона все
«посеянные» ошибки выявлены и устранены,
то для оценки отлаженности программы
можно воспользоваться упрощенной
формулой
С=W/(W+r+
1) =2/(2+ 7+ 1) =0,2.
Таким образом, в предположении, что до
начала четвертого прогона в программе
оставалось 7 ошибок, степень отлаженности
программы составляет 20%.
Результат по количеству ошибок в
программе до начала каждого прогона
приведен ниже.
Номер прогона |
1 |
2 |
3 |
4 |
N |
9 |
4 |
2 |
1 |
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Mills’error seeding model proposed an error seeding method to estimate the number of errors in a program by introducing seeded errors into the program. From the debugging data, which consists of inherent errors and induced errors, the unknown number of inherent errors could be estimated. If both inherent errors and induced errors are equally likely to be detected, then the probability of k induced errors in r removed errors follows a hypergeometric distribution which is given by
where N = total number of inherent errors n1 = total number of induced errors r = total number of errors removed during debugging k = total number of induced errors in r removed errors r – k = total number of inherent errors in r removed errors Since n1, r, and k are known, the MLE of N can be shown to be
where N = total number of inherent errors n1 = total number of induced errors r = total number of errors removed during debugging k = total number of induced errors in r removed errors r – k = total number of inherent errors in r removed errors Since n1, r, and k are known, the MLE of N can be shown to be
where
If
If is an integer, then
and
and
are both the MLEs of N.
Drawbacks:
- It is expensive to conduct testing of the software and at the same time, it increases the testing effort.
- This method was also criticized for its inability to determine the type, location, and difficulty level of the induced errors such that they would be detected equally likely as the inherent errors.
Another realistic method for estimating the residual errors in a program is based on two independent groups of programmers testing the program for errors using independent sets of test cases. Suppose that out of a total number of N initial errors, the first programmer detects n1 errors (and does not remove them at all) and the second independently detects r errors from the same program. Assume that k common errors are found by both programmers. If all errors have an equal chance of being detected, then the fraction detected by the first programmer (k) of a randomly selected subset of errors (e.g., r) should equal the fraction that the first programmer detects (n1) of the total number of initial errors N. In other words,
so that an estimate of the total number of initial errors, N, is
so that an estimate of the total number of initial errors, N, is
The probability of exactly N initial errors with k common errors in r detected errors by the second programmer can be obtained using a hypergeometric distribution as follows:
and the MLE of N is
and the MLE of N is
which is the same as the above.
The Mills’ Error Seeding Model, also known as the Mills’ Model, is a software testing technique that was developed by E.K. Mills in the early 1980s. The model is based on the idea that faults, or errors, are intentionally introduced into the software code in order to test the effectiveness of the software’s testing process.
Mills’ Error Seeding Model consists of the following steps:
- Introduce Errors: Errors are intentionally introduced into the software code, in a controlled and systematic manner.
- Conduct Testing: The software is then tested to see if the introduced errors are detected.
- Measure Results: The results of the testing process are measured and analyzed to determine the effectiveness of the software testing process.
- Improve Testing Process: Based on the results of the testing process, the testing process can be improved to increase its effectiveness in detecting errors.
- The Mills’ Error Seeding Model is useful for improving the software testing process and for evaluating the effectiveness of the testing process. It can help to identify weaknesses in the testing process and to make improvements that will result in a more effective and efficient testing process.
Advantages:
- Improved Testing Process: The Mills’ Error Seeding Model helps to improve the software testing process by intentionally introducing errors into the code and evaluating the effectiveness of the testing process in detecting those errors.
- Increased Confidence in Software Quality: By detecting and correcting errors in the software, the Mills’ Error Seeding Model can increase confidence in the software’s quality and reliability.
- Improved Efficiency: By identifying weaknesses in the testing process and making improvements, the Mills’ Error Seeding Model can lead to a more efficient and effective testing process.
- Early Detection of Errors: The Mills’ Error Seeding Model allows for early detection of errors in the software development process, reducing the likelihood that these errors will be discovered by users or customers after release.
- Objective Evaluation: The model provides an objective evaluation of the testing process, allowing for the identification of specific areas that need improvement.
- Cost-effective: The Mills’ Error Seeding Model can be a cost-effective way to improve the testing process, as it allows for the identification of potential issues early in the development process, which can prevent more expensive fixes later on.
- Increased Customer Satisfaction: By improving software quality and reliability, the Mills’ Error Seeding Model can increase customer satisfaction and loyalty, leading to improved business outcomes.
- Iterative Improvement: The Mills’ Error Seeding Model allows for iterative improvement of the testing process, with each iteration leading to further improvements and refinements in the testing process.
- Better Resource Allocation: By identifying areas of the software that require more testing and debugging, the Mills’ Error Seeding Model can lead to better allocation of testing resources, reducing the likelihood of errors slipping through the testing process undetected.
Disadvantages:
- Increased Development Time: Introducing errors into the software code and conducting thorough testing can increase the time required to develop the software.
- Limited Scope: The Mills’ Error Seeding Model is limited in scope to the testing process and does not address other aspects of software development such as design or coding.
- Artificial Introduction of Errors: The Mills’ Error Seeding Model involves artificially introducing errors into the software code, which may not accurately reflect the types of errors that could occur in real-world usage scenarios.
- Risk of False Positives/Negatives: The model may not accurately identify all errors in the software, leading to the risk of false positives (identifying errors that do not actually exist) or false negatives (failing to identify existing errors).
- Inaccurate Results: The accuracy of the model’s results can be impacted by the selection of errors to be seeded, the testing methodology, and other factors, which can lead to inaccurate results and undermine the effectiveness of the model.
- Difficulty in Interpreting Results: The Mills’ Error Seeding Model can produce large amounts of data and metrics, which can be difficult to interpret and act on effectively.
- Resistance to Change: The model may be met with resistance from developers or other stakeholders who may be resistant to the idea of intentionally introducing errors into the software, even for testing purposes.
- Difficulty in Implementing: Implementing the Mills’ Error Seeding Model requires significant expertise in software testing and quality assurance, making it difficult to implement for organizations without a dedicated testing team or resources.
Last Updated :
24 Apr, 2023
Like Article
Save Article
Предложите, как улучшить StudyLib
(Для жалоб на нарушения авторских прав, используйте
другую форму
)
Ваш е-мэйл
Заполните, если хотите получить ответ
Оцените наш проект
1
2
3
4
5