Распространение ошибок - PullRequest
       7

Распространение ошибок

1 голос
/ 04 ноября 2008

У меня есть программа, которую я портирую с одного языка на другой. Я делаю это с помощью программы перевода, которую разрабатываю сам. Соответствующим результатом этого является то, что я ожидаю, что в моей системе есть ряд ошибок, которые мне нужно будет найти и исправить. Каждая ошибка может проявляться во многих местах, и ее исправление исправит ошибку во всех местах, где она обнаружена. (Я чувствую, что у меня действительно большой рычаг, и я нажимаю на короткий конец, я нажимаю очень сильно, но когда что-то движется, они много двигаются.)

У меня есть возможность запуска различий в журнале выполнения, поэтому я измеряю свой прогресс по тому, как далеко через набор тестов я могу выполнить его до того, как он отклонится от выполнения исходной программы. (Спасибо за то, что вы хотите за BeyondCompare, он работает достаточно хорошо с ~ 1M строчными файлами: D)

Вопрос в следующем: Какую фигуру мне следует ожидать, если я построю эту длину графика как функцию времени? (больше времени == больше ошибок устранено)

Моя первая мысль - это что-то вроде распределения Пуассона . Однако, поскольку исправление каждой ошибки также приводит к удалению всех остальных случаев, это не должно быть правильным.

(Кстати, это может иметь реальные последствия в отношении оценки того, когда программы завершат отладку.)

Edit: Более абстрактное изложение проблемы:

Дан упорядоченный список из N целых чисел, выбранных из диапазона [0, M] (где N >> M) с равномерным распределением по позициям в списке, но не обязательно с равномерным распределением чисел. Каково ожидаемое местоположение этого последнего «нового» номера? Как насчет второго до последнего? Etc

Ответы [ 2 ]

1 голос
/ 04 ноября 2008

Инженеры всегда обучены искать экспоненциальную кривую:

ошибок ( t ) = ceil [c 1 e - c 2 t ] + R ( т )

Где c 1 и c 2 - это константы, которые зависят от количества тестовых случаев и ваших навыков кодирования. R () - это случайная функция, амплитуда и распределение которой зависят от эффекта бабочки , количества сна, которое вы спали прошлой ночью, а также близости вашего срока и менеджера.

  • Перед началом кодирования при t = 0 все ваши тесты будут терпеть неудачу, приводя как минимум к 1 ошибкам.

  • Когда вы кодируете и t увеличивается, показатель асимптотически уменьшается до нуля, в результате чего вычисленное количество ошибок в конечном итоге достигает 1. Это потому, что мы все знаем, что всегда есть еще одна ошибка. «

0 голосов
/ 04 ноября 2008

Как правило, число новых ошибок, найденных как функция времени, должно соответствовать пуассоновскому распределению. Если предположить, что ошибки в основном исправлены по мере их обнаружения, то количество открытых ошибок должно соответствовать одному и тому же распределению.

Я фактически использовал это в начале своей карьеры, чтобы «доказать» своему бизнес-подразделению, что определенный набор функций не был готов к выпуску. Я отобразил новые и открытые ошибки как функцию времени для текущего проекта, а также для двух предыдущих версий. Два более старых набора данных показали начальный резкий рост, пик и постепенное снижение до даты выпуска. Текущие данные показали линейное увеличение , которое продолжалось до того дня, когда я создал график.

Нам дали еще несколько дней тестирования, а тестировщикам дали обучение тому, как тестировать продукт более эффективно. Благодаря обоим решениям выпуск был относительно бездефектным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...