Jaka jest różnica między testowaniem a weryfikacją?

15

Każdy podręcznik, który widziałem, ma duży wpływ na to, że testowanie i weryfikacja to dwie różne koncepcje. Jednak żadne z nich nie zapewnia wyraźnego (lub wystarczająco jasnego dla mnie) rozróżnienia.

Aby przedstawić kontekst, jestem zainteresowany weryfikacją cyfrowych projektów sprzętowych przy użyciu języków projektowania sprzętu (HDL).

Widziałem kilka wyjaśnień, które odwołują się do „fizycznej” lub „namacalnej” różnicy: jeśli chodzi o wyprodukowane urządzenie, to testuje. Czy to cała historia? Jeśli tak, dlaczego słowo „test” pojawia się tak często podczas weryfikacji (szczególnie w weryfikacji funkcjonalnej, mówimy o testach, testach, DUT (testowane urządzenie), testach ukierunkowanych, testach losowych itp.)

Uzależniony od VHDL
źródło

Odpowiedzi:

21

Był inżynierem ds. Weryfikacji projektu ASIC w Qualcomm. W najprostszy sposób mogę to wyjaśnić:

Testowanie: upewnienie się, że produkt działa, po jego utworzeniu (pomyśl o kontroli jakości).

Weryfikacja: upewnienie się, że produkt działa, ZANIM go utworzysz.

Oba testują, tylko ta weryfikacja jest bardziej skomplikowana, ponieważ musisz wymyślić sposób przetestowania produktu, zanim będzie on istniał, i musisz mieć pewność, że działa on zgodnie z planem, i określić, kiedy faktycznie się pojawi.

Na przykład Intel projektuje swój następny procesor, mają specyfikacje, schematy i symulacje. Wydają 1 miliard USD, aby przejść przez produkcję i produkcję. Potem chip wraca i testują go i dowiadują się, że nie działa. Po prostu wyrzucili dużo pieniędzy przez okno.

Wrzuć weryfikację. Inżynierowie ds. Weryfikacji tworzą modele symulujące zachowanie mikroukładu, tworzą środowisko testowe, które będzie testować te konkretne modele. Otrzymują wyniki tych modeli, a następnie porównują je z wynikami RTL (model zapisu obwodu w języku projektowania sprzętu). Jeśli się zgadzają, wszystko jest (zwykle) OK.

Istnieje wiele różnych metodologii procesu weryfikacji, popularną jest Universal Verification Methodology (UVM) .

W tej dziedzinie jest dużo głębi i ludzie mogą spędzić w niej całą karierę.

Kolejna losowa ciekawostka: zazwyczaj potrzebujesz 3 inżynierów weryfikujących na 1 inżyniera projektanta. Tak przynajmniej mówią wszyscy w terenie.

EDYCJA: Wiele osób uważa weryfikację za rolę testową, ale tak nie jest; sama w sobie jest to rola projektowa, ponieważ musisz zrozumieć wszystkie zawiłości swojego układu scalonego tak, jak robi to projektant, a następnie musisz wiedzieć, jak projektować modele, stoły testowe i wszystkie przypadki testowe, które obejmą wszystkie funkcje funkcji twojego układu scalonego , a także próba trafienia w każdą linię kodu RTL dla wszystkich możliwych kombinacji bitów. Pamiętaj, że procesor ma obecnie miliardy tranzystorów ze względu na proces wytwarzania pozwalający na coraz mniejsze (obecnie 14 nm).

Ponadto w dużych korporacjach, takich jak Intel, AMD, Qualcomm itp., Projektanci tak naprawdę nie projektują układu. Zwykle architekt definiuje wszystkie specyfikacje, układa typy elementów, które muszą ze sobą łączyć, aby uzyskać określoną funkcję z określonym wymaganiem (tj. Szybkość, rozdzielczość itp.), A następnie projektant zakoduje to w RTL. Nie jest to wcale łatwa praca, po prostu nie tyle projektowania, ile wielu inżynierów wychodzących ze szkoły tak uważa. Każdy chce być architektem, ale do tego momentu potrzeba dużo edukacji i doświadczenia. Wielu architektów ma doktoraty i jak 15-20 lat doświadczenia w tej dziedzinie jako projektant. To błyskotliwi ludzie (i czasem szaleni), którzy zasługują na to, co robią i są w tym dobrzy. Architekt na pierwszym chipie, nad którym pracowałem, był trochę niezręczny i tak naprawdę nie przestrzegał pewnych norm społecznych, ale mógł rozwiązać wszystko, co utkwiło ci w chipie, a czasami rozwiązał to w swojej głowie i powiedział ci spojrzeć na jeden sygnał i zapytać: „jak on do diabła to zrobił?”. Potem poprosisz go o wyjaśnienie, a on to zrobi, a ten przejdzie ci przez głowę. Właściwie zainspirował mnie do czytania podręczników, mimo że już ukończyłem szkołę.

PGT
źródło
+1 Dzięki za ostatnią uwagę, pomaga nam zobaczyć, że pole jest naprawdę ważne (myślę, że RTL i inżynieria projektowania wydają się bardziej atrakcyjne dla większości inżynierów)
VHDL Addict
Dla kompletności, czy mógłbyś dodać coś, co jest testcase?
VHDL Addict
Dodałem ciekawostkę o tym, czym jest weryfikacja, ponieważ pierwszy komentarz na temat roli projektowej był bardziej atrakcyjny; obie są dobre role, zależy tylko od tego, co lubisz. Jeśli chodzi o przypadek testowy, SoC taki jak Snapdragon może mieć dziesiątki do setek tysięcy przypadków testowych, a przy losowych testach - w milionach. Mówiąc najprościej: stosujesz zestaw bitów wejściowych, który zmienia się podczas przechodzenia przez wiele modułów, a następnie otrzymujesz bity wyjściowe w wyniku porównania z wynikami twojego modelu. Coś tak prostego, jak testowanie zdjęcia wyświetlanego na telefonie, miałoby ...
PGT
duża liczba przypadków testowych. Powiedz, że chcesz wyświetlić pojedynczy piksel na ekranie telefonu komórkowego. To, co pomyśli ktoś spoza pola, to zastosować 1 bit dla bieli i 0 dla czerni. W rzeczywistym świecie mobilnym piksel ten może różnić się rozmiarem, intensywnością, obrotem, formatem kolorów (YUV ###, RGB ### itp.). Prawdopodobnie testujesz 1 bit w zestawie bitów, który jest stosowany razem z danymi wejściowymi. Pozostałe bity mogą mieć wartość 0, ponieważ są czarne, lub mogą mieć wartość 1, ponieważ obsługują inne informacje, takie jak sposób obsługi trybu transmisji, CLK, włącza / wyłącza, wyzwalacze, takie wymyślne rzeczy.
PGT,
6

W mojej książce Weryfikacja zapewnia, że ​​to, co zaprojektowałeś, „spełnia swoje zadanie” - tj. Masz zestaw rzeczy, które „urządzenie” musi wykonać, a weryfikacja usuwa te z listy.

Testowanie upewnia się jednak, że czynności wykonywane przez „urządzenie” są wykonywane poprawnie. Masz zestaw funkcji i testujesz każdą funkcję, upewniając się, że działa ona poprawnie.

Krótko mówiąc, weryfikacja sprawdza projekt, a testowanie sprawdza produkt.

Majenko
źródło
Myślę, że zaczynam rozumieć ... Czy możesz podać jakieś przykłady każdego z nich?
VHDL Addict
Jak to pasuje do planu weryfikacji , który określa, co należy wdrożyć, a także jak wiedzieć, że funkcjonalność jest poprawna? Przydałoby się wdrożenie lub odznaczenie funkcji, jeśli nie działa.
VHDL Addict
@ Majenko - Więc napisałeś książkę na temat weryfikacji? Czy podzieliłbyś się więcej na ten temat?
Michael Karas,
4

Pochodzące ze środowiska projektowania ASIC (sprzęt) istnieją trzy ważne pojęcia: sprawdzanie poprawności , weryfikacja i testowanie . Wcześniejsze odpowiedzi ogólnie mówią o jednym lub dwóch z tych terminów, ale nie kontrastują wyraźnie wszystkich trzech w sposób, w jaki bym to zrobił. Oto jak je rozumiem:

  • Walidacja: czy specyfikacja (często model C) spełnia wymagania rynku lub klienta
  • Weryfikacja: czy implementacja (RTL, netlist lub GDS2) jest zgodna ze specyfikacją
  • Test: czy wyprodukowane urządzenie jest zgodne z implementacją
Winston Smith
źródło
Czy symulacje netlist i GDS2 mogą dawać różne wyniki?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件 15.07.16
1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功, przypuszczam, że pytasz o zachowanie bramek vs. tranzystorów. W przypadku normalnych napięć cyfrowych i przebiegów powiedziałbym, że dadzą takie same wyniki. Mogą jednak wystąpić efekty „analogowe” nieuwzględnione w idealizowanych bramkach, takie jak zmiany mocy / uziemienia lub podział ładunku sygnału. Jeśli te efekty są obecne, idealne zachowanie cyfrowe może nie być prawdziwe.
Winston Smith
1
@CiroSantilli 事件 改造 中心 法轮功 六四 事件 Tak, mogą dawać znacznie inne wyniki. Byłem tam, popełniłem ten błąd.
Elliot Alderson
1

Test ma na celu sprawdzenie, czy specyfikacja jest spełniona. Weryfikacja polega na sprawdzeniu, czy urządzenie spełnia wymagania projektowe - tj. Wszystkie specyfikacje. Przypuszczam, że jest o wiele więcej interpretacji, ale to właśnie widziałem w poradnikach FIA.

Scott Seidman
źródło
Rozumiem, trochę zmieniłem sformułowanie (z testu na testowanie ), aby wyjaśnić, że oba są procesami. Zgadzam się z tobą, że w przypadku poszczególnych testów test słowny jest odpowiedni (czasem mam wrażenie, że powtarzam oczywiste pytania z terminologii ...) :)
VHDL Addict
1

Wprowadzamy rozróżnienie między testami weryfikacyjnymi a testami walidacyjnymi. Załóżmy, że projektujesz wentylator, który chłodzi niektóre urządzenia. Testy weryfikacyjne są wykonywane, aby upewnić się, że wentylator spełnia wszystkie wymagania projektowe. Możesz przetestować przepływ powietrza, cykl termiczny, wibracje itp.

Testy walidacyjne upewniają się, że wymagania projektowe były odpowiednie. Czy wkład projektowy, jaki mieliśmy dla wentylatora, rzeczywiście dał nam wentylator, którego chcieliśmy? Na przykład upewnisz się, że wentylator rzeczywiście chłodzi sprzęt zgodnie z przeznaczeniem.

Eric
źródło
Tak rozumiane są terminy w książkach o inżynierii oprogramowania, które przeczytałem. Walidacja = upewnij się, że wymagania są prawidłowe (sprawdź je u klienta, przepisów itp.); Weryfikacja = upewnij się, że produkt jest poprawny (przetestuj go ze specyfikacją)
Wouter van Ooijen,
1

ISO9000 mówi o weryfikacji i walidacji. W kontekście weryfikacji ISO9000 oznacza testowanie prototypowego projektu w celu wykazania, że ​​spełnia on oczekiwania dotyczące funkcjonalności i wydajności. Walidacja oznacza, że ​​testowanie pierwszego cyklu produkcyjnego spełnia również oczekiwania projektowe. Sprawdź najpierw, sprawdź później, to mój mały sposób na zapamiętanie kolejności rzeczy.

Kilka standardów oprogramowania odwraca kolejność sprawdzania i sprawdzania poprawności, co może naprawdę powodować zamieszanie, więc należy o tym pamiętać.

Najważniejsze jest ... Dlaczego coś testujesz - czy jest to projekt prototypowy - jeśli tak, to standardy jakości zwykle nazywają tę weryfikację. Jeśli testujesz przebieg produkcji po raz pierwszy, to faceci sprzętu nazywają to sprawdzanie poprawności.

Tylko moje osobiste doświadczenia.

Andy aka
źródło
0

Po przeczytaniu tych odpowiedzi zdaję sobie sprawę, że nie ma określonej definicji tego, czym „testowanie” różni się od „weryfikacji” w branży.

Pracując z projektem HW („prawdziwy” projekt HW, jak rzeczy na płytkach drukowanych, a nie programowanie VHDL) przechodzimy przez fazę weryfikacji i walidacji oraz fazę testowania produkcji (w rzeczywistości projektujemy same testy produkcyjne i dostarczamy je na miejsce produkcji). - Weryfikacja - (1) sprawdzenie, czy prototyp / element produkowany seryjnie spełnia wymagania sprzętowe (2), weryfikuje wymagania sprzętowe względem wymagań SYS. - Testy produkcyjne - testy dymu oraz uproszczone i szybkie testy weryfikacyjne przystosowane do eliminacji wad produkcji masowej bez konieczności przechodzenia przez cały proces weryfikacji dla każdej z 500 000 wyprodukowanych jednostek rocznie.

Tak więc w tym konkretnym międzynarodowym przedsiębiorstwie „testowanie” odnosi się do testów produkcyjnych i nic więcej.

użytkownik3038015
źródło