Brukvalub писал(а):
Я бы выбрал некую априорную вероятность обнаружения ошибки при однократном тестировании программы. Тогда понятно, что речь идет об испытаниях по схеме Бернулли, и можно задаться вопросом: каково минимальное число испытаний, сделав которые и не получив ошибки, можно с вероятностью, не меньшей, чем р, утверждать, что ошибок нет.
Только вероятность, ИМХО, можно брать не априорную, а вполне точную.
Допустим, я написал программу вычисления суммы двух чисел:
Код:
var
a,b: integer;
c : longint;
begin
{получаем как-нибудь a,b, из файла, readln, и т.п.}
c:=a+b;
{выводим как-нибудь результат}
end.
Специально не пишу readln(a), ..., чтобы избежать вопросов "а что, если пользователь ввел -00,23-55". В спецификации программы прописано, что складывать она умеет числа из
.
Заказчик кода не видит и мне не верит. Я говорю - хорошо, генерируем случайные входные данные, испытываем на них программу. Понятно, что если программа валится на
возможных входных данных, то вероятность попасть хотя бы на один такой набор в
тестах считается легко (всех возможных входных параметров, очевидно,
,
, etc). В такой ситуации, может, и можно говорить о чем-то более-менее математически строго. Но практически это очень сложно реализовать даже для вещественных типов (надо точно знать их мощность), плюс вопросы точности, и т. п. Но если известно количество всех возможных входных данных (а для компьютера оно всегда конечно), то теоретически такую задачу решать можно, нес па?