Co stanowi błąd?

10

Czym właściwie jest błąd? jakieś predefiniowane reguły?

Muthu
źródło
Czy możemy mieć jakiś kontekst? Czy mówisz z czysto technicznego punktu widzenia, czy też o błędach, które zostaną zgłoszone na stronach śledzących?
Jeremy
5
Wszystkie błędy to tylko ukryte funkcje :)
Marco Ceppi
2
Mówię raczej „nieudokumentowane funkcje” niż ukryte :-)
Mała Jawa

Odpowiedzi:

14

Błąd to:

Błąd oprogramowania jest powszechnym terminem używanym do opisania błędu, wady, pomyłki, awarii lub usterki w programie komputerowym lub systemie, który daje niepoprawny lub nieoczekiwany wynik lub powoduje, że zachowuje się w niezamierzony sposób. (Z Wikipedii )

Oto kolejna dobra definicja tego, co stanowi błąd. Zarówno:

  1. Program nie zachowywał się zgodnie z intencjami programisty. lub
  2. Intencje programisty nie spełniły wspólnych i rozsądnych oczekiwań użytkowników.

Społeczność Ubuntu ma doskonałą definicję błędu na tej wiki , szczególnie podkreślając różnicę między błędem a brakującymi funkcjami :

Błąd oprogramowania to błąd lub usterka w programie komputerowym, która powoduje, że nie działa on tak, jak powinien. Może to być tak proste, jak w ogóle nie działać, lub tak skomplikowane, jak subtelnie niepoprawny wynik [...] Niektóre rzeczy nie są błędami, ale brakuje funkcji, które powinny być rozsądnie uwzględnione. Brakujących funkcji nie należy zgłaszać jako błędów, zamiast tego należy dla nich napisać Specyfikacje funkcji.

Chociaż trudno jest narysować linię oddzielającą dwie definicje i odpowiedzieć na pytanie, czy są to błędy, czy brakujące funkcje? , można podać kilka wskazówek:

  • jeśli jest to problem, który wymagałby wielu szczegółów do rozwiązania, prawdopodobnie jest to funkcja. Na przykład brak możliwości bezpiecznego zapisywania plików na nowoczesnej partycji Windows jest brakujący.
  • Brak możliwości bezpiecznego zapisywania plików na partycji ReiserFS byłby błędem.

Różnica między tymi dwoma twierdzeniami jest taka: pierwsza jest bardziej rozpowszechniona (obsługuje nowoczesne systemy Windows FS) i dlatego może być postrzegana jako brakująca funkcja, podczas gdy druga podkreśla wyjątkowy problem (nie można zapisać w ReiserFS) - konkretny błąd.

Jeśli jesteś zainteresowany, polecam zajrzeć na wiki zespołu BugSquad . Zwalczanie błędów jest jednym z najciekawszych działań związanych z cyklem tworzenia oprogramowania, poza tym, że jest świetną okazją do nauki :-)

Dzięki!

crncosta
źródło
fajny, chociaż nie jest to bezpośrednio związane, warto wspomnieć, że każdy błąd, który chcesz popełnić, musi być odtwarzalny.
danizmax
Nie, występują błędy związane z warunkami wyścigu. Dlaczego nie chcesz ich również popełnić? Będzie to trudne, jeśli programista nie będzie w stanie odtworzyć błędu, ale to nie wpływa na życzenie, prawda?
użytkownik nieznany
Zobacz także przewodnik po błędach Ubuntu BugSquad: wiki.ubuntu.com/Bugs
Thomas Ward
2

Zrobię zamach. Przede wszystkim zachowanie nie zamierzone przez projektanta / programistę (pomijanie złego projektu). Pod względem błędów, które powinieneś zgłaszać ludziom, wszystko, co sprawia, że ​​program jest trudny w użyciu i pasuje do powyższego opisu. Obejmuje to, od najgorszych do najmniej poważnych, awarie systemu, awarie X, awarie programu i wszelkie wewnętrzne błędy programu.

Błędy, które powodują awarie lub zamykanie okien, zwykle powodują, że jakiś wynik generowany jest przez alarm, jeśli uruchomisz aplikację z terminala, może to być przydatne. Zobacz także dzienniki systemowe raportów błędów.

Jeremy
źródło
1

Błąd jest błędem w programie komputerowym lub systemie, więc program nie działa poprawnie lub w ogóle nie działa. Błędy mogą wynikać z niewłaściwego kodu programowania lub kodu programowania, który nie jest wystarczająco solidny i nie może obsłużyć pewnych wyjątków (na przykład: dzielenie przez 0)

3sdmx
źródło
1

Dla wszystkich praktycznych celów należy unikać terminu „błąd” jako terminu zbyt rozmytego.

Najlepsza odpowiedź na twoje pytanie wypełnia całą książkę: „Dlaczego programy zawodzą” Andreasa Zellera. Książka, która powinna znaleźć się na półce każdego programisty. Autor stara się również nie nazywać ich „błędami” (czytaj dalej). Ponieważ odpowiedź crncosta już sugeruje, że „błąd” to nie tylko błąd programowy. To dlatego niektórzy wolą zamiast tego określenie „problem” (co prowadzi do „śledzenia problemów” zamiast „śledzenia błędów”).

Ponieważ to, co użytkownik końcowy postrzega jako błąd, wcale nie musi być błędem. Może być - choć jest to często używane jako kiepska wymówka - po prostu z założenia. Jednak niektóre zaobserwowane błędy są klasyfikowane jako „błędy”, mimo że są spowodowane brakiem funkcji.

Autor wspomnianej książki poświęca kilka stron na definicję terminów takich jak awaria i wada oraz opisywanie, dlaczego „błąd” nie jest odpowiednim terminem (zbyt rozmytym).

Podsumowanie jego terminologii:

  1. programista tworzy wadę
  2. wada powoduje infekcję („wadliwy stan programu”)
  3. infekcja się rozprzestrzenia
  4. infekcja powoduje awarię („obserwowane złe / niezamierzone zachowanie”)
  5. obserwator (zwykle użytkownik końcowy) widzi awarię

Jak widać autor rozróżnia przyczynę i skutek, który w przypadku „błędu” prawie zawsze jest mieszany. Większość czasu termin „błąd” jest stosowany do wady , na zakażenia i na niepowodzenie .

0xC0000022L
źródło