Jaka jest różnica między usterką a błędem?
Jaka jest różnica między usterką a błędem?
Odpowiedzi:
Błąd jest wynikiem błędu kodowania
Wada jest odchyleniem od wymagań
Oznacza to, że wada niekoniecznie oznacza błąd w kodzie , może to być funkcja, która nie została zaimplementowana, ale zdefiniowana w wymaganiach oprogramowania.
Ze strony Wikipedii na temat testowania oprogramowania :
Nie wszystkie wady oprogramowania są spowodowane błędami w kodzie. Jednym z powszechnych źródeł kosztownych wad są luki w wymaganiach, np. Nierozpoznane wymagania, które powodują błędy pominięcia przez projektanta programu [14]. Częstym źródłem luk w wymaganiach są wymagania niefunkcjonalne, takie jak testowalność, skalowalność, łatwość konserwacji, użyteczność, wydajność i bezpieczeństwo.
Cytując Ilene Burnstein z książki Praktyczne testowanie oprogramowania (zalecane), która rozstaje się z definicją w „IEEE Standards Collection for Software Engineering” (1994) i „IEEE Standard Glossary of Software Engineering Terminology” (standard 610.12, 1990):
Błąd jest pomyłką, nieporozumieniem lub nieporozumieniem ze strony programisty
Do kategorii programistów zaliczamy inżynierów oprogramowania, programistów, analityków i testerów. Na przykład programista może źle zrozumieć notację projektową lub programista może niepoprawnie wpisać nazwę zmiennej.
Błąd (defekt) jest wprowadzany do oprogramowania w wyniku błędu. Jest to anomalia w oprogramowaniu, która może powodować nieprawidłowe działanie i niezgodność ze specyfikacją.
Usterki lub wady są czasem nazywane „błędami”. Użycie tego drugiego terminu banalizuje wpływ błędów na jakość oprogramowania. Użycie terminu „wada” wiąże się również z artefaktami oprogramowania, takimi jak wymagania i dokumenty projektowe. Wady występujące w tych artefaktach są również spowodowane błędami i zwykle są wykrywane w procesie sprawdzania.
Awaria to niezdolność systemu oprogramowania lub komponentu do wykonania wymaganych funkcji w ramach określonych wymagań wydajnościowych.
Podczas wykonywania komponentu lub systemu oprogramowania tester, programista lub użytkownik zauważa, że nie przynosi on oczekiwanych rezultatów. W niektórych przypadkach określony rodzaj niewłaściwego zachowania wskazuje na obecność określonego rodzaju usterki. Można powiedzieć, że rodzaj niewłaściwego zachowania jest objawem usterki. Doświadczony programista / tester będzie posiadał bazę wiedzy na temat błędów / symptomów / awarii (modele błędów opisane w Rozdziale 3) przechowywanych w pamięci. Niepoprawne zachowanie może obejmować tworzenie niepoprawnych wartości zmiennych wyjściowych, niepoprawną odpowiedź urządzenia lub niepoprawny obraz na ekranie. Podczas programowania awarie są zwykle obserwowane przez testerów, a awarie są lokalizowane i usuwane przez programistów.
Możesz przeczytać cały rozdział w Książkach Google, tutaj .
Istnieje kilka różnych terminów związanych z błędami oprogramowania. Fragment kursu, który wziąłem:
Błąd : ludzkie działanie lub zaniechanie, które powoduje błąd.
Usterka : Usterka to wada oprogramowania (niepoprawna definicja kroku, procesu lub danych), która powoduje awarię.
Błąd : taki sam jak błąd.
Błąd : niezdolność oprogramowania do wykonania wymaganych funkcji w ramach określonych wymagań wydajnościowych.
Zgodnie z tym nie ma różnicy między wadą a błędem. Jednak niektórzy twierdzą, że błąd jest błędem, który zostanie wykryty przed wydaniem oprogramowania, podczas gdy wada zostanie wykryta przez klienta.
Nie mogłem się powstrzymać od opublikowania słynnego „pierwszego faktycznego przypadku znalezienia błędu”.
O jej.
W dawnych czasach - wadliwe działanie komputera było spowodowane przez różnego rodzaju rzeczy - w tym szczury żujące przewody i prawdziwe błędy (stworzenia) wchodzące do prac.
Termin BUG utknął jako termin, który oznacza, że coś nie działa zgodnie z oczekiwaniami.
BŁĄD należy traktować jako termin żargonowy oznaczający wadę.
Wada jest technicznie poprawnym terminem, co oznacza, że rzecz nie działa tak, jak powinna.
Tam, gdzie to możliwe, użycie DEFECT zamiast BUGA niesie ze sobą konotację, że uznajemy nasze awarie (nasze wady, nasze niezrozumienie wymagań użytkownika lub rzeczy, które przeoczyliśmy przy wdrażaniu) zamiast ubierać go jako bardziej trywialny „błąd” „.
Użyj WADY.
Staraj się nie używać terminu BŁĄD. Jest głupi, nieistotny, historyczny i trywializujący.
Ze standardowego słownika terminologii inżynierii oprogramowania IEEE, która jest cytowana w Korpusie wiedzy inżynierii oprogramowania KA ds. Testowania oprogramowania i jakości oprogramowania:
pluskwa. Zobacz: błąd; wina.
błąd. (1) Różnica między obliczoną, zaobserwowaną lub zmierzoną wartością lub warunkiem a prawdziwą, określoną lub teoretycznie poprawną wartością lub warunkiem. Na przykład różnica 30 metrów między obliczonym wynikiem a poprawnym wynikiem. (2) Niepoprawna definicja kroku, procesu lub danych. Na przykład niepoprawna instrukcja w programie komputerowym. (3) Niepoprawny wynik. Na przykład obliczony wynik 12, gdy poprawny wynik to 10. (4) Działanie człowieka, które powoduje niepoprawny wynik. Na przykład niepoprawne działanie programisty lub operatora. Uwaga: Chociaż wszystkie cztery definicje są powszechnie używane, jedno rozróżnienie przypisuje definicję 1 do słowa „błąd”, definicję 2 do słowa „błąd”, definicję 3 do słowa „błąd”, a definicję 4 do słowa „błąd”. Zobacz a2so: błąd dynamiczny; błąd krytyczny; lokalny błąd; błąd semantyczny; błąd składniowy; błąd statyczny; błąd przejściowy.
niepowodzenie. Niemożność systemu lub komponentu do wykonania wymaganych funkcji w ramach określonych wymagań wydajnościowych. Uwaga: W dyscyplinie tolerancji błędów rozróżnia się działanie człowieka (błąd), jego przejaw (błąd sprzętu lub oprogramowania), wynik błędu (awaria) oraz ilość, o jaką wynik jest nieprawidłowy (błąd). Zobacz także: crash; zależna awaria; wyjątek; Tryb awaryjny; współczynnik awaryjności; ciężka awaria; początkowa awaria; niezależna awaria; losowa awaria; miękka awaria; utknął niepowodzenie.
wina. (1) Wada w urządzeniu lub elemencie sprzętowym; na przykład zwarcie lub przerwany przewód. (2) Niepoprawna definicja kroku, procesu lub danych w programie komputerowym. Uwaga: Ta definicja jest stosowana przede wszystkim przez dyscyplinę odporności na uszkodzenia. W powszechnym użyciu terminy „błąd” i „błąd” są używane do wyrażenia tego znaczenia. Zobacz także: błąd wrażliwy na dane; błąd wrażliwy na program; równoważne błędy; maskowanie błędów; sporadyczna usterka.
Myślę, że definicja awarii jest najbardziej odpowiednia. Wszystko zaczyna się od pomyłki, niezależnie od tego, czy chodzi o wymagania, projekt, implementację, czy przypadek testowy / procedurę. Jeśli ten błąd przejawia się w oprogramowaniu, staje się usterką. Awaria jest spowodowana istnieniem jednego lub więcej błędów w oprogramowaniu.
Nie jestem jednak zwolennikiem formalnej definicji błędu. Bardzo wolę definicję podaną przez dukeofgaming w jego odpowiedzi , jednak ta w tej odpowiedzi jest standardową definicją błędu IEEE.
Odpowiedź Dana McGratha trafiła w sedno.
Może przykład by to wyjaśnił.
Przykład: Klient chciał, aby formularz internetowy mógł zapisać i zamknąć okno.
Scenariusz nr 1: Formularz internetowy ma przycisk Zapisz i inny przycisk Zamknij. Wynik: wada, ponieważ klient chciał, aby przycisk 1 zapisał i zamknął okno. Deweloper źle zrozumiał i stworzył osobno. Ponieważ oba przyciski spełniły swoje wymagania, nie jest to błąd, ale wada, ponieważ nie spełniał wymagań klienta.
Scenariusz # 2: Formularz internetowy ma przycisk Zapisz i zamknij, ale tylko zapisuje, ale nie zamyka. Wynik: błąd. Ponieważ przycisk nie działa zgodnie z wymaganiami / oczekiwaniami. Deweloper wie, że powinien dać taki wynik, ale ostatecznie tego nie zrobił. (być może błąd kodowania)
Nie jestem pewien, czy to czyni to jaśniejszym.
p / s: z punktu widzenia dewelopera (byłem kiedyś), zarówno wady, jak i błędy są równie ważne. Nadal to naprawimy.
Napotkaliśmy nawet dziwne anomalie, które podzieliliśmy na kategorie pod kątem błędów i nieustannie staramy się ustalić, co jest przyczyną i jak to naprawić. Określenie go błędami nie czyni go trywialnym w porównaniu do wad.
Różnica polega na tym, że termin „pluskwa” brzmi magicznie. Jakby program mógł losowo zawierać błędy po zakończeniu programowania. Jeśli ma losowe błędy, oznacza to, że nie spełniłeś specyfikacji i twój program jest w błędzie.
Wada oznacza błąd, w którym program nie jest zgodny ze specyfikacjami. Jest to poważniejsze i, mówiąc w zasadzie, każdy błąd stanowi ogromny problem z programem, a to oznacza, że program nie nadaje się do wydania.
Różnica polega na nastawieniu programistów, którzy używają terminów. Istnieją miliony programów, które są wydawane z błędami, a ludzie są w porządku, ponieważ akceptują z jakiegoś powodu, że błąd jest magiczny i losowy i że każdy program zawiera co najmniej jeden błąd. Jednak programista, który używa terminu „defekt”, może stać się niekomfortowy w wydaniu programu z defektem, ponieważ termin ten oznacza większą dotkliwość.
Implikacje preferowania jednego terminu nad drugim wpływają na nas codziennie.
Według niezawodności: podstawowe pojęcia i terminologia :
Awaria systemu występuje, gdy dostarczana usługa odbiega od wypełniania funkcji systemu, przy czym ta ostatnia jest przeznaczona dla systemu. Błędu jest to, że część stanu systemu, który jest może prowadzić do późniejszej awarii: błąd wpływając na usługę jest wskazanie, że awaria występuje lub wystąpiło. Uznana lub hipotetyczna przyczyna błędu jest błędem .
Wadę rozumiem jako kolejną nazwę winy.
Błąd jest mylący i może reprezentować usterkę lub awarię w zależności od kontekstu.
Pamiętaj, że nie ma wzmianki o specyfikacji: nawet specyfikacja może być wadliwa.
Oto, co zrobiłem wcześniej dla mojego pracodawcy Q-LEAP w oparciu o słownictwo ISTQB, a także sprawdziłem słownictwo IEEE. Cieszyć się.
Błąd i wada? To samo, chociaż można o tym nieskończenie dyskutować. Mamy naprawdę inne rzeczy do zmartwienia, życie jest już wystarczająco skomplikowane itp.
Przykład użycia tego terminu na wolności, z „How Google Tests Software” str. 113. Otwórz artykuł „Oprogramowanie IEEE”, z którego korzysta się w ten sam sposób. Rzeczywiście w prawdziwym życiu rzadko spotyka się słowo „wada”.
Life of a Bug
Błędy i raporty o błędach to jeden artefakt, który rozumie każdy tester. Znajdowanie błędów, sortowanie błędów, naprawianie błędów i usuwanie błędów to bicie serca i przepływ pracy dla jakości oprogramowania. Ta część testów jest najbardziej konwencjonalna w Google, ale wciąż istnieje kilka interesujących odchyleń od normy. W tej sekcji ignorujemy błędy zgłoszone w celu śledzenia elementów roboczych i używamy tego terminu do zidentyfikowania rzeczywistego uszkodzonego kodu. W związku z tym błędy często przedstawiają codzienny przepływ pracy zespołów inżynierów.
Narodził się błąd. Błędy są wykrywane i zgłaszane przez wszystkich w Google. Menedżerowie produktu zgłaszają błędy, gdy wychwycą problemy we wczesnych wersjach, które różnią się od ich specyfikacji / przemyśleń. Programiści zgłaszają błędy, gdy zdają sobie sprawę, że przypadkowo zgłosili problem lub znaleźli problem gdzieś indziej w bazie kodu lub podczas karmienia psów produktami Google. Błędy pojawiają się również w terenie, od testerów pochodzących z tłumu, od zewnętrznych dostawców, i są zgłaszane przez menedżerów społeczności monitorujących grupy dyskusyjne Google dla konkretnych produktów. Wiele wewnętrznych wersji aplikacji umożliwia szybkie zgłaszanie błędów za pomocą jednego kliknięcia, np. Mapy Google. Czasami programy tworzą błędy za pośrednictwem interfejsu API.
Poza konkretnym wystąpieniem błędu / zadania / biletu / usterki / problemu / jakiejkolwiek instancji systemu śledzenia, słowa te nie mają dokładnego znaczenia, dlatego omawianie różnic między nimi jest bezcelowe. Podczas rozliczania przepływu pracy należy ustalić terminologię i podać opisy.
W moim obecnym środowisku „defektem” jest dowolny element Jira. Wygląda na to, że sama Jira używa terminu „problem”. Być może odziedziczyliśmy to po wcześniejszym systemie. „Błąd” jest rodzajem problemu, gdy coś nie działa zgodnie z oczekiwaniami i zostało opisane w dokumentacji. „Żądanie funkcji”, gdy coś działa zgodnie z oczekiwaniami, ale pożądane jest ulepszenie (może być oczywiste i ważne, ale jeśli zostanie opisane obecne zachowanie, nadal jest to prośba o funkcję). Istnieje więcej typów, ale te 2 są używane przez osoby spoza zespołu programistów, aby o coś zapytać.
Jeśli wybierasz nazwy typów problemów, „błąd” i „wada” brzmią podobnie do mnie. Różnica między nimi jest stylistyczna. Ponieważ angielski nie jest moim językiem ojczystym, tak naprawdę nie widzę go wiele i nie jestem pewien, czy to, co widzę, jest prawidłowe.