Понимание того, что означают ошибки, ошибки и сбои - PullRequest
4 голосов
/ 12 июня 2011

Рассмотрим следующий класс:

class Xyz {
    public int count;

    public void numZero (int[] x) {
        // Effects: if x == null throw NullPointerException
        // else return the number of occurrences of 0 in x
        int count = 0;
        for (int i = 1; i < x.length; i++) //we have a bug here
            {
            if (x[i] == 0)
            {
                count++;
            }
        }

        this.count = count;
    }
}

Я пытаюсь понять, что на самом деле означают Fault, Error и Failure.

Ошибка

Из того, что я понял, Fault в этом контексте было бы ошибкой в ​​написанной логике кода.Таким образом, в этом случае Fault будет означать, что код инструктирует компьютер начать итерацию по всем элементам v с начальным индексом 1 вместо ожидаемого 0.

Ошибка

При запуске вышеупомянутого метода мы всегда получаем Error, но только один раз (когда v.length == 0), так как мы действительно хотим перебрать все элементы x, но так как мы начинаем сi = 1, это на самом деле не происходит.

С пустым вектором в качестве ввода, поскольку мы не вводим for loop, поэтому наш неверный код не запускается, а это означает, что Ошибка не возникает, и все происходит, как и должно быть в теории.

Сбой

Поскольку наш код имеет Fault, который во время выполнения почти всегда проявляется в Error, у нас будет Failure только тогда, когда мы эффективно увидим неправильный вывод.

Если предположить, что Error действительно произошло в моей программе, у нас будет Отказ, только если он каким-то образом виден внешнему миру.То есть, если бы я private int count;вместо public int count; у меня никогда не было бы ошибки в моем классе (конечно, это был бы самый бесполезный класс!).Это правильно?

Все ли я сказал правильно или я в чем-то ошибаюсь?

Спасибо

Ответы [ 6 ]

7 голосов
/ 24 декабря 2017
  • Сбой: отличие от ожидаемого результата.Это проблема, которую вы наблюдаете.
  • Ошибка: причина ошибки.
  • Ошибка: ошибка, которая привела к возникновению ошибки.например, опечатки.

Пример сбоя, ошибки и ошибки.

pre: param is an integer.
post: returns the product of the param multiplied by 2.

1. int double (int param) {
2.   int result;
3.   result = param * param;
4.   return result;
5. }

• Вызов double (3) возвращает 9, но условие post говорит, что должно вернуть 6.
• Результат 9 представляет собой ошибку .
• Ошибка вызвана ошибкой в строке 3 (вместо «* 2» используется «* param»)
• Ошибка - это опечатка (кто-то набрал «* param» вместо «* 2» по ошибке).

Зачем давать три разных надписи для «ошибки»«?

Они помогают понять, насколько точно вы знаете, в чем проблема.

Сказать« неудача »означает, что вы знаете, что-то не так, но не знаетепричина.
Сказать «ошибка» означает, что вы знаете причину, но не знаете, почему произошла ошибка.
Сказать «Ошибка» означает, что вы знаете, почему произошла ошибка.

Вы можете спросить, "Но почему человек сделал опечатку?"Но это входит в человеческий фактор и выходит за рамки вопроса.

Источник: Чжэнь Мин (Джек) Цзян - EECS 4413, Тестирование программного обеспечения, Йоркский университет.

5 голосов
/ 08 октября 2013

Во-первых, сбой происходит всякий раз, когда фактическая услуга, предоставляемая системой, отличается от ожидаемой услуги. Обратите внимание, что, поскольку даже спецификации могут идти не так, определение не опирается на них.

Во-вторых, ошибка - это часть состояния системы, которая может привести к сбою. Состояние системы может ухудшиться, но никогда не достигнуть выхода, что не приведет к сбою.

В-третьих, ошибка является причиной ошибки. Это может быть ошибка проекта, космический луч или что-то еще. Если, как вы указали, ошибка не активирована, ошибка не выдается.

Для получения дополнительной информации ознакомьтесь с основными понятиями и терминологией из надежности .

4 голосов
/ 16 марта 2016

enter image description here

Ошибка - это отклонение от фактического и ожидаемого результата.Это представляет ошибки, сделанные людьми.

Неисправности являются результатом ошибки.Это неправильный шаг или процесс, из-за которого программа или программное обеспечение ведут себя непреднамеренно

Ошибка свидетельствует о сбое в программе, из-за которого программа не ведет себя впо назначению

Отказ - это неспособность системы или компонентов выполнить требуемую функцию.Отказ происходит, когда происходит сбой

Дефект считается обнаруженным при возникновении сбоя.

1 голос
/ 03 ноября 2015

Программное обеспечение Ошибка относится к ошибке в коде.И это В ТЕЧЕНИЕ активности программного обеспечения.

В то время как программное обеспечение Сбой - это когда система плохо работает .Это наблюдается ПОЗЖЕ , чем неисправность.

Ошибка может быть причиной отказа.Ошибка " ЧТО ", а ошибка - " КОГДА ".

Это только основы, но все же я надеюсь, что это проливает некоторый свет на этот вопрос.

1 голос
/ 08 октября 2013

Ошибка в Ошибка / Ошибка / Ошибка относится к человеческой ошибке, которая привела к возникновению проблемы.Человеческая ошибка заключалась в неправильном мышлении, которое заставило пользователя создать неверный оператор for в вашем примере.

Ошибки трудно измерить или понять.Во многих случаях трудно понять, о чем думал разработчик, когда допустил ошибку, которая привела к ошибке.Вот почему они любят различать ошибки и ошибки.Мы видим, что в коде есть ошибка, но трудно понять, почему эта ошибка была создана.Возможно, код был правильным, а затем во время последующего изменения цикл for был изменен.

Я всегда помню, что Ошибка программиста приводит к ошибке в коде, которая приводит к ошибке для пользователя.Не все ошибки приводят к ошибке.Не все неисправности приводят к сбоям.

0 голосов
/ 01 апреля 2019

Существует множество различных определений, одно из которых я лично предпочитаю:

Fault -> Error -> Failure

Ошибка: подтвержденная или предполагаемая причина ошибки (неисправности, внешние помехи, ошибки проектирования).

Ошибка: Проявление ошибки в программе или структуре данных (разница между фактическим и ожидаемым выходом)).

Сбой: Событие, которое происходит, когда ошибка достигает интерфейса сервиса, изменяя сам сервис (приводит к неспособности системы или компонента выполнить требуемую функцию в соответствии со своей спецификацией).

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