Różnica między defektem a błędem w testowaniu?


35

Jaka jest różnica między usterką a błędem?



1
Istnieją błędy, które w rzeczywistości mówią, że czegoś brakuje, co oznacza, że ​​są żądaniami funkcji, a nie błędami.
m3th0dman

Odpowiedź zależy od celu, dlaczego pytasz.
max630

Sprawdź etymologię słowa defekt. De = nie, un. Facere = do. Dlatego nie robi (zgodnie z oczekiwaniami), nie wykonuje, jest zepsuty, kaput. Podczas gdy błąd oznacza „coś w pracy utrudnia wydajność”. Pod koniec dnia będziesz musiał coś naprawić, więc wszystko jest akademickie. Głosowałem za zamknięciem, nie masz błędów do naprawienia ?!
Martin Maat

Odpowiedzi:


59
  • 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.


15
Oba są „odchyleniami od wymagań”, tak jak ja to widzę.
Martin Wickman

2
Wada nie musi być błędem. Ponadto błąd nie musi oznaczać, że wymaganie nie zostało spełnione, a zatem nie jest „odchyleniem od wymagań”
Dan McGrath,

5
Wygląda na to, że brakuje Ci punktu @Martin. Tak, błąd może być wadą. Tak, wada może być błędem. Ale nie zawsze musi to być prawda. To, że się nakładają, nie oznacza, że ​​są identyczne! Schemat Venna błędów i wad -> (())
Dan McGrath

8
@Dan McGrath: w zasadzie to, co tutaj zrobiłeś, to twoja własna definicja błędu. Ale generalnie nie ma żadnego zdefiniowanego znaczenia, to tylko żargon techniczny!
MAR

3
@DanMcGrath: Twój diagram Venna jest bezużyteczny. Może to oznaczać ({}) lub ({)} . Zakładam, że miałeś na myśli drugi.
Brian

21

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

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.

Usterki (wady)

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.

Awarie

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 .


12

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”.

alternatywny tekst


Wreszcie ktoś, kto przeczytał: testingstandards.co.uk/bs_7925-1_online.htm
StuperUser

Nie z tego go mam, ale mogą mieć wspólne źródło (lub to może być źródło).
Tamás Szelei

Tak, wiele, wiele lat temu spędziłem trochę czasu próbując naprawić błąd. Miałem irytujące migotanie w jednej komórce na ekranie i to nie miało sensu. W końcu odleciał. (To było w erze białego tekstu na czarnym ekranie, przedmiotowe miejsce było wystarczająco daleko w prawo, aby zawsze być czarne podczas edytowania, więc zauważyłem to tylko wtedy, gdy program umieścił trochę białego koloru za nim.)
Loren Pechtel

7

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.


2
Dlaczego chcesz usunąć z używania dobrze zrozumiałego terminu technicznego? Przepraszam ... tak, BŁĄD ma charakter historyczny - ale jeśli uważasz, że programiści uważają błędy (ogólnie w przeciwieństwie do konkretnych) za trywialne tylko dlatego, że są nazywane błędami lub termin jest nieistotny z powodu jego pochodzenia, to jestem obawiam się, że moje przekształcenie się w złym humorze w średnim wieku jest całkowicie uzasadnione. No i jak wskazuje @Dan, błędy są wadami, ale wady niekoniecznie są błędami, co dodatkowo sugeruje, że termin ma wartość.
Murph

3
@Murph, „błąd” to eufemizm błędu programistycznego. Nieświadomie pociąga to za sobą rodzaj gremlina, nad którym twórca nie ma kontroli. To nie jest poprawne - jest to błąd i uznanie tego jest krokiem w kierunku bardziej profesjonalnych zachowań. (Imho oczywiście :-))
rsp

1
Erm, oczywiście nie zgadzam się (-: Wiem dokładnie, kto jest odpowiedzialny za błędy - błędy w kodzie i logice - które mam w kodzie. (Jestem również w stanie zidentyfikować błędy w kodzie innych osób). Wszystkich programistów, których znam jasno rozumieją, co oznacza ten termin - że (cóż, jakiś programista), a nie jakiś gremlin popełnił błąd
Murph

2
W kontaktach z klientami możesz nazywać te błędy lub wady. Błędy to żargon. Wady to potwierdzenie, poza żargonem, że nie jest tak, jak powinno być. „Defekty” to termin, który zachęca do jasnej komunikacji - zarówno poza wspólnotą programistyczną, jak i wewnątrz. (Nie zgadzam się również z tym, że istnieje różnica między błędem a defektem.)
szybko_now 16.01.11

Wady to właściwy termin. Ile programów jest wydawanych z błędami i wszyscy to akceptujemy? Ale ile programów jest wydawanych z wadami? Nie zaakceptowalibyśmy tego, ponieważ termin ten oznacza większą dotkliwość i wiemy, że to nasza wina za błąd, a nie błąd, w którym możemy winić pogodę lub porę dnia.
Rudolf Olah,

7

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.


3

Odpowiedź Dana McGratha trafiła w sedno.

  • Błąd jest wynikiem błędu kodowania
  • Wada jest odchyleniem od wymagań

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.


Co nazywamy błędnymi wymaganiami?
gnasher729

@ gnasher729 jeśli przez błędne wymagania, miałeś na myśli, że programiści źle zrozumieli wymagania, to pomyślałem, że to wada. Ale jeśli miałeś na myśli błędne wymagania, ponieważ użytkownik podający niewłaściwe wymagania, które skutkują końcową pracą, nie rozwiązuje początkowego problemu, oznacza to, że jest to więcej niż błąd i wada, ponieważ jest to problem związany z sesją zbierania wymagań, a nie z rozwojem.
tctham

0

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.


0

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.


0

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.

wprowadź opis zdjęcia tutaj

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.


0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.